Forum Oric
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
» Bla Bla général du Jury
[PROBLEME] Commande input et générateur aléatoire EmptyJeu 21 Mar 2024 - 8:51 par Dom50

» carte mère Oric (re)tracée
[PROBLEME] Commande input et générateur aléatoire EmptyMar 5 Mar 2024 - 18:54 par kenneth

» Meurtre à Grande Vitesse
[PROBLEME] Commande input et générateur aléatoire EmptyDim 25 Fév 2024 - 5:09 par Iurius

» ORIC-1 sur LE BON COIN
[PROBLEME] Commande input et générateur aléatoire EmptyVen 23 Fév 2024 - 23:01 par Mcar

» ORIC ATMOS sur LE BON COIN
[PROBLEME] Commande input et générateur aléatoire EmptyDim 4 Fév 2024 - 12:06 par kiwilevrai

» Problème d'affichage des couleurs avec un Oric Atmos
[PROBLEME] Commande input et générateur aléatoire EmptySam 27 Jan 2024 - 1:26 par pierbail

» Bienvenue dans le Forum des Oriciens
[PROBLEME] Commande input et générateur aléatoire EmptyMar 9 Jan 2024 - 12:33 par Dom50

» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
[PROBLEME] Commande input et générateur aléatoire EmptyVen 29 Déc 2023 - 14:13 par Arcade-des-Monts

» Bonnes fêtes
[PROBLEME] Commande input et générateur aléatoire EmptyMar 26 Déc 2023 - 10:21 par Dom50

» Murders in Venice / Meutres à Venise
[PROBLEME] Commande input et générateur aléatoire EmptySam 18 Nov 2023 - 22:44 par retroric

» Un clavier PS/2 pour tester un ORIC
[PROBLEME] Commande input et générateur aléatoire EmptyDim 27 Aoû 2023 - 9:49 par Voyageur

» Disquette 3" Sedoric
[PROBLEME] Commande input et générateur aléatoire EmptyMar 1 Aoû 2023 - 14:22 par AtomeX

» faire un 6502 avec des phototransistor
[PROBLEME] Commande input et générateur aléatoire EmptyDim 16 Juil 2023 - 17:26 par Voyageur

» Oricutron linux et DSK
[PROBLEME] Commande input et générateur aléatoire EmptyJeu 29 Juin 2023 - 18:34 par Voyageur

» No Problem !
[PROBLEME] Commande input et générateur aléatoire EmptyDim 25 Juin 2023 - 17:53 par Voyageur

Qui est en ligne ?
Il y a en tout 3 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 3 Invités :: 1 Moteur de recherche

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 241 membres enregistrés
L'utilisateur enregistré le plus récent est ben_frog

Nos membres ont posté un total de 8921 messages dans 811 sujets
Sites Sympas

> Culture Club



[PROBLEME] Commande input et générateur aléatoire

+2
didierv
TotoShampoin
6 participants

Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty [PROBLEME] Commande input et générateur aléatoire

Message par TotoShampoin Sam 18 Aoû 2018 - 20:48

Bonjour les oriciens Smile

Voilà... J'ai deux problèmes.

Le premier est que je n'arrive pas à utiliser de commande similaire au INPUT du basic.

J'ai essayé scanf, mais j'ai eu cette erreur :
Code:
E:\osdk_1_11\0- Projets\Caractères
Assembling
scanbuf reserve 256
E:\osdk_1_11\0- Projets\CaractÞres\scanf.s(8):  1de2:Syntax error
fieldcount db 0
E:\osdk_1_11\0- Projets\CaractÞres\sscanf.s(53):  1e48:Syntax error
numberscan dw 0
E:\osdk_1_11\0- Projets\CaractÞres\sscanf.s(166):  1f17:Syntax error
signscan   db 0
E:\osdk_1_11\0- Projets\CaractÞres\sscanf.s(167):  1f17:Label defined error
Break after 4 errors
ERROR : Build failed.
Appuyez sur une touche pour continuer...


Mon deuxième problème est que je n'arrive pas à avoir un générateur aléatoire qui marche.
La fonction rand fonctionne, mais la fonction srand ne marche pas. De fait, j'obtiens toujours le même résultat.


J'aimerais avoir de l'aide dans les deux problèmes.
Merci d'avance ^^


Un message pour Jede, mais tout le monde devrait le savoir:

_________________
Bonjour c:
TotoShampoin
TotoShampoin

Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par didierv Dim 19 Aoû 2018 - 8:05

toto a écrit:Mon deuxième problème est que je n'arrive pas à avoir un générateur aléatoire qui marche.
La fonction rand fonctionne, mais la fonction srand ne marche pas. De fait, j'obtiens toujours le même résultat.

voir le ceo-mag 241 page 16, je pense que tu devrais trouver des pistes

_________________
DidierV - CEO Mag
alias coco.oric sur Defence-Force
didierv
didierv

Messages : 810
Date d'inscription : 19/01/2014
Age : 61
Localisation : Nord de la France

http://www.dmacoco.fr

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par iss Dim 19 Aoû 2018 - 8:10

Bonjour TotoShampoin Smile
first problem is already fixed by Dbug - take a look HERE.

About the 'srand': in OSDK use 'srandom' instead to set the seed for the generator.
Code:

  getchar();
  srandom(deek(0x304));
  printf("random : %d\n", random());
Here the 'getchar' is used to make the process true random depending on how fast the user press a key,
than the value of VIA's T1 is used as seed.

I hope this helps Wink.
iss
iss

Messages : 112
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par TotoShampoin Dim 19 Aoû 2018 - 16:05

iss a écrit:Bonjour TotoShampoin Smile
first problem is already fixed by Dbug - take a look HERE.

About the 'srand': in OSDK use 'srandom' instead to set the seed for the generator.
Code:

  getchar();
  srandom(deek(0x304));
  printf("random : %d\n", random());
Here the 'getchar' is used to make the process true random depending on how fast the user press a key,
than the value of VIA's T1 is used as seed.

I hope this helps Wink.

Thank you so much!!!!!!!!!!!!!!!


Mais maintenant, j'ai un autre problème.

En fait, je cherche à faire un programme qui mélange les cartes... Donc j'ai un tableau qui correspond au jeu de cartes (de 0 à 51), et le programme est une boucle qui échange deux cartes choisies aléatoirement. Voilà le programme :
Code:
void shuffle()
{
 for(i=0;i<128;i++)
 {
 nb1 = random() % 52;
 nb2 = random() % 52;
 card1 = cards[nb1];
 card2 = cards[nb2];
 cards[nb1] = card2;
 cards[nb2] = card1;
 }
}

Mais quand le programme s'exécute, il crash après le mélange :/

J'ai commis une erreur quelque part?
[PROBLEME] Commande input et générateur aléatoire Jeu_de10

_________________
Bonjour c:
TotoShampoin
TotoShampoin

Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par Symoon Dim 19 Aoû 2018 - 19:12

Une chose est sûre, le code op 32 n'existe pas en 6502 Wink
Je n'ai jamais utilisé le C pour Oric, mais est-ce qu'il ne manque pas une instruction de sortie tout simplement, ou un symbole de fin d'instruction qqpart ?
Symoon
Symoon

Messages : 779
Date d'inscription : 26/04/2014

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par TotoShampoin Lun 20 Aoû 2018 - 10:27

Symoon a écrit:Une chose est sûre, le code op 32 n'existe pas en 6502 Wink
Je n'ai jamais utilisé le C pour Oric, mais est-ce qu'il ne manque pas une instruction de sortie tout simplement, ou un symbole de fin d'instruction qqpart ?

Bin je crois pas ._.
Je vais envoyer tout le code

Code:
#include <lib.h>

void printCard(int x, int y, int number, int color);
void eraseCard(int x, int y);
void CG_DEFCHAR();
void AdvancedPrint();

#define TREFLE 1
#define CARREAU 2
#define COEUR 3
#define PIQUE 4
#define VALET 11
#define DAME 12
#define ROI 13
#define AS 1
#define VIDE 0
#define FLIP 5
#define NOCARD 0

int i,j,k;

int nb1, nb2, card1, card2;
int cards[52];

void prepare()
{
 for(i=0;i<52;i++)
 cards[i] = i;
}


void shuffle()
{
 for(i=0;i<128;i++)
 {
 nb1 = random() % 52;
 nb2 = random() % 52;
 card1 = cards[nb1];
 card2 = cards[nb2];
 cards[nb1] = card2;
 cards[nb2] = card1;
 }
}


void main()
{
 CG_DEFCHAR();
 cls();
 AdvancedPrint(9,9,"Appuyez sur une touche");
 getchar();
 srandom(deek(0x304));
 AdvancedPrint(9,9,"  MELANGE DES CARTES  ");
 prepare(); shuffle();
 
 cls();
 
 //Affichage de la carte
 poke(0xBB80+1*40+1,9);
 for(i=2;i<8;i++){
 poke(0xBB80+i*40+1,8);
 poke(0xBB80+i*40+2,4);
 }
 for(i=8;i<23;i++){
 poke(0xBB80+i*40+1,9);
 }
 for(i=23;i<28;i++){
 poke(0xBB80+i*40+1,8);
 }
 
 
 printCard( 2, 9,NOCARD,VIDE);
 for(j=0;j<64;j++)
 for(i=0;i<=255;i++);
 
 for(k=0;k<52;k++)
 {
 printCard( 2, 9,NOCARD,FLIP);
 for(j=0;j<5;j++)
 {
 for(i=0;i<=255;i++);
 }
 printCard( 2, 9, cards[k]%13 +1,cards[k]/13 +1);
 for(j=0;j<64;j++)
 {
 for(i=0;i<=255;i++);
 }
 }
 
}

_________________
Bonjour c:
TotoShampoin
TotoShampoin

Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par iss Lun 20 Aoû 2018 - 11:46

I'm not sure where is the problem. I have 2 suspects - something like overflow somewhere or something related to SEDORIC.

Try this code for shuffle:
Code:

static char i, nb1, nb2, card1, card2, cards[52];
static void shuffle(void)
{
  for(i=0;i<52;i++)
  {
    nb1 = i;
    nb2 = random() % 52;
    card1 = cards[nb1];
    card2 = cards[nb2];
    cards[nb1] = card2;
    cards[nb2] = card1;
  }
}

Actually this is the 'standard' way to make shuffle, the code is faster but it can to be optimized more Wink.
iss
iss

Messages : 112
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par TotoShampoin Lun 20 Aoû 2018 - 14:36

iss a écrit:I'm not sure where is the problem. I have 2 suspects - something like overflow somewhere or something related to SEDORIC.

Try this code for shuffle:
Code:

static char i, nb1, nb2, card1, card2, cards[52];
static void shuffle(void)
{
  for(i=0;i<52;i++)
  {
    nb1 = i;
    nb2 = random() % 52;
    card1 = cards[nb1];
    card2 = cards[nb2];
    cards[nb1] = card2;
    cards[nb2] = card1;
  }
}

Actually this is the 'standard' way to make shuffle, the code is faster but it can to be optimized more Wink.


I had tried to shuffle with a smaller amount of time, but the problem is the same :/

I feel like it happens AFTER the shuffle.
I tried to change the program so it simply prints the values instead of plotting the cards, and the problem is the same. So I have a suspicion about the cls, but there's no reason :/

_________________
Bonjour c:
TotoShampoin
TotoShampoin

Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par assinie Lun 20 Aoû 2018 - 16:58

Pour le cls(), je ne pense pas que ce soit lui le problème, il y en a un au début du main(), à moins que ça ne plante dès le début.

Ce que tu peux faire, c'est ajouter des
Code:
printf("debut fonction xxx...")
et
Code:
printf("fin fonction xxx\n")
au début et à la fin de chacune de tes fonctions pour voir laquelle pose éventuellement problème.
Ca permettra de limiter les recherches.

Tu peux aussi en ajouter régulièrement dans main() du genre
Code:
printf("avant xxx\n")
pour avoir une trace de ce qu'il se passe.

Peut-être un problème de débordement de  la pile du 6502.

Après il restera la bonne vieille séance de debug avec le moniteur de Oricutron, en compilant le programme avec l'opton --add-source pour pouvoir s'y retrouver dans le code assembleur.
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par assinie Lun 20 Aoû 2018 - 17:43

Il y a aussi l'option -Ln fichier.sym pour générer un fichier de symboles utilisable par Oricutron (option -s fichier.sym pour le charger ou commande sl fichier.sym à partir du moniteur de Oricutron).
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par TotoShampoin Lun 20 Aoû 2018 - 17:52

assinie a écrit:Pour le cls(), je ne pense pas que ce soit lui le problème, il y en a un au début du main(), à moins que ça ne plante dès le début.

Ce que tu peux faire, c'est ajouter des
Code:
printf("debut fonction xxx...")
et
Code:
printf("fin fonction xxx\n")
au début et à la fin de chacune de tes fonctions pour voir laquelle pose éventuellement problème.
Ca permettra de limiter les recherches.

Tu peux aussi en ajouter régulièrement dans main() du genre
Code:
printf("avant xxx\n")
pour avoir une trace de ce qu'il se passe.

Peut-être un problème de débordement de  la pile du 6502.

Après il restera la bonne vieille séance de debug avec le moniteur de Oricutron, en compilant le programme avec l'opton --add-source pour pouvoir s'y retrouver dans le code assembleur.

Judicieux. Je m'y colle.

*Plus tard*

J'ai compris le problème!!
[PROBLEME] Commande input et générateur aléatoire Carte_10
Juste à côté du CLS (la première carte donc), il y a un roi de la couleur 1350 (qui n'existe donc pas)
Donc ça crash parce qu'il sort de la zone mémoire prévue.

Les autres cartes n'ont pas bougé, donc ça veut dire que c'est le mélange qui a mal tourné, et j'ai du mal à comprendre comment.


D'ailleurs, en faisant le test plusieurs fois, j'ai vite remarqué que d'autres cartes sortent, mais toujours la première, et toujours des valeurs aberrantes

_________________
Bonjour c:
TotoShampoin
TotoShampoin

Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par assinie Lun 20 Aoû 2018 - 18:19

Pour shuffle(), je suppose que tu utilises le code que tu as publié au début, mais pour random() tu utilises quoi?
assinie
assinie

Messages : 271
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par TotoShampoin Lun 20 Aoû 2018 - 19:54

SOLUTION TROUVEE :

random() % MAX

^ c'est ce qui ne marchait pas.
Il a fallut faire un modulo APRES le random, sur une variable à l'écart

_________________
Bonjour c:
TotoShampoin
TotoShampoin

Messages : 78
Date d'inscription : 16/08/2017
Age : 23
Localisation : Lagny Sur Marne

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par Ladywasky Mar 4 Sep 2018 - 4:20

Si tu es sous ISDK, tu dois commenter la dernière ligne du (#define rand() ... ) du fichier lib.h
c:OSDK\include\lib.h
Ladywasky
Ladywasky

Messages : 240
Date d'inscription : 25/08/2018
Age : 53

Revenir en haut Aller en bas

[PROBLEME] Commande input et générateur aléatoire Empty Re: [PROBLEME] Commande input et générateur aléatoire

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum