Derniers sujets
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité Aucun
Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion
Statistiques
Nous avons 201 membres enregistrésL'utilisateur enregistré le plus récent est David Coipel
Nos membres ont posté un total de 8294 messages dans 716 sujets
[PROBLEME] Commande input et générateur aléatoire
Page 1 sur 1 • Partagez
[PROBLEME] Commande input et générateur aléatoire
Bonjour les oriciens 
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 :
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 ^^

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:
- Un message pour toi Jede : Avec mon père, on a inspecté la commande clock(), et on a vu que ça lit juste la valeur des adresses 276 et 277. En fait, cette zone mémoire n'est active qu'en basic, donc cette commande n'est d'aucune utilité :/
_________________
Bonjour c:
TotoShampoin- Messages : 76
Date d'inscription : 16/08/2017
Age : 19
Localisation : Lagny Sur Marne
Re: [PROBLEME] Commande input et générateur aléatoire
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
Re: [PROBLEME] Commande input et générateur aléatoire
Bonjour TotoShampoin 
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.
than the value of VIA's T1 is used as seed.
I hope this helps
.

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());
than the value of VIA's T1 is used as seed.
I hope this helps

iss- Messages : 108
Date d'inscription : 30/10/2014
Re: [PROBLEME] Commande input et générateur aléatoire
iss a écrit:Bonjour TotoShampoin
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.Here the 'getchar' is used to make the process true random depending on how fast the user press a key,
- Code:
getchar();
srandom(deek(0x304));
printf("random : %d\n", random());
than the value of VIA's T1 is used as seed.
I hope this helps.
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](https://i.servimg.com/u/f11/19/77/85/60/jeu_de10.png)
_________________
Bonjour c:
TotoShampoin- Messages : 76
Date d'inscription : 16/08/2017
Age : 19
Localisation : Lagny Sur Marne
Re: [PROBLEME] Commande input et générateur aléatoire
Une chose est sûre, le code op 32 n'existe pas en 6502 
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 ?

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- Messages : 758
Date d'inscription : 26/04/2014
Re: [PROBLEME] Commande input et générateur aléatoire
Symoon a écrit:Une chose est sûre, le code op 32 n'existe pas en 6502
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- Messages : 76
Date d'inscription : 16/08/2017
Age : 19
Localisation : Lagny Sur Marne
Re: [PROBLEME] Commande input et générateur aléatoire
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:
Actually this is the 'standard' way to make shuffle, the code is faster but it can to be optimized more
.
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

iss- Messages : 108
Date d'inscription : 30/10/2014
Re: [PROBLEME] Commande input et générateur aléatoire
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.
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- Messages : 76
Date d'inscription : 16/08/2017
Age : 19
Localisation : Lagny Sur Marne
Re: [PROBLEME] Commande input et générateur aléatoire
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
Ca permettra de limiter les recherches.
Tu peux aussi en ajouter régulièrement dans main() du genre
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.
Ce que tu peux faire, c'est ajouter des
- Code:
printf("debut fonction xxx...")
- Code:
printf("fin fonction xxx\n")
Ca permettra de limiter les recherches.
Tu peux aussi en ajouter régulièrement dans main() du genre
- Code:
printf("avant xxx\n")
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- Messages : 255
Date d'inscription : 09/02/2014
Re: [PROBLEME] Commande input et générateur aléatoire
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- Messages : 255
Date d'inscription : 09/02/2014
Re: [PROBLEME] Commande input et générateur aléatoire
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 deset
- Code:
printf("debut fonction xxx...")
au début et à la fin de chacune de tes fonctions pour voir laquelle pose éventuellement problème.
- Code:
printf("fin fonction xxx\n")
Ca permettra de limiter les recherches.
Tu peux aussi en ajouter régulièrement dans main() du genrepour avoir une trace de ce qu'il se passe.
- Code:
printf("avant xxx\n")
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](https://i.servimg.com/u/f11/19/77/85/60/carte_10.png)
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- Messages : 76
Date d'inscription : 16/08/2017
Age : 19
Localisation : Lagny Sur Marne
Re: [PROBLEME] Commande input et générateur aléatoire
Pour shuffle(), je suppose que tu utilises le code que tu as publié au début, mais pour random() tu utilises quoi?
assinie- Messages : 255
Date d'inscription : 09/02/2014
Re: [PROBLEME] Commande input et générateur aléatoire
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
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- Messages : 76
Date d'inscription : 16/08/2017
Age : 19
Localisation : Lagny Sur Marne
Re: [PROBLEME] Commande input et générateur aléatoire
Si tu es sous ISDK, tu dois commenter la dernière ligne du (#define rand() ... ) du fichier lib.h
c:OSDK\include\lib.h
c:OSDK\include\lib.h
Ladywasky- Messages : 237
Date d'inscription : 25/08/2018
Age : 49

» [FAQ] Commander un Karotz avec un Nabaztag:tag
» Bon Anniversaire à Notre Générateur Aléatoire de Combos Pourries!
» Idée : Solution au probleme de longueur limitée des URL?
» :visit La nouvelle commande d'Habbo
» [Résolu]probleme alicebox
» Bon Anniversaire à Notre Générateur Aléatoire de Combos Pourries!
» Idée : Solution au probleme de longueur limitée des URL?
» :visit La nouvelle commande d'Habbo
» [Résolu]probleme alicebox
Page 1 sur 1
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum
|
|
» Type in Master Mind
» Pictoric
» Nouveau site ceo.oric.org
» Bocco's adventures - nouveau jeu pour Oric
» Problème avec les boucles
» Nouvel ancien jeu: Oric Golf par K. Smith
» Aux couleurs de l'Atmos
» ORIC-1 sur LE BON COIN
» recherche racine carrée 32 bits (et arctangente 16 bits) [RESOLU !! ]
» une atan2 pour vos lib math
» Materiels Oric pour membres du CEO
» I had a dream .. glOric
» CEO-MAG 355
» Boite de réception des messages sur le forum