1

Qqun pourrait-il m'expliquer comment faire un vrai random ?
Car avec les exemples de GamePark, la suite de chiffres obtenue est toujours la même !

Je pense qu'il faut faire intervenir une fonction de tps (style randomize) mais j'attends vos suggestions.
T3 member
TimeToTeam : A new generation of games for TI

2

Tu peux prendre la valeur d'un port au hasard pour l'initialiser ou un autre truc dan le genre, c'est a dire, il faut juste trouver un octet ou un word qui n'est jamais le meme, il doit bien y en avoir!
ou bien, tu lance un compteur, a partir du lancement d'un jeu, et au moment aou tu commence la partie, tu prend la valeur du compteur.
le compteur peut etre incrementé dans une interruption, mais a mon avis il y a surement un moyen plus propre que ca!

3

C'est le meme probleme que sur ti!

4

c le même pb que sur tous les supports ou ya la fonction rand / srand.
Ca génere toujours la même suite de chiffre, mais qui elle est aléatoire.

Sur PC, généralement on associe avec la fonction time comme c jamais la même. Sur GP il y a une fonction qui te retourne le nombre de seconde depuis que le prog est lancé.

Prototypage selon la doc GP:

unsigned int GpTickCountGet(void);
This function returns system tick count in milli seconds after the program starts to run.

vala
Yenaphe point info

5

Yenaphe a raison, mais tu risques quand même d'avoir toujours la même suite de chiffres.
Je m'explique, puisque ton premier GpTickCountGet() aura toujours la même valeur (comme tu l'as dit, GpTickCountGet renvoie le nombre de ticks (millieme de secondes) depuis le lancement du prog, à la difference du pc, où tu auras forcement toujours des valeurs differentes), tu as de fortes chances d'initialiser la 'seed' de ton random avec la même valeur.
Enfin, c'est le probleme que j'ai rencontré sur un de mes prog, mais je me souviens pas avoir trouver de solution (j'ai du passer sur autre chose entre temps smile).

6

ialiser ta 'seed' à chaque fois que tu as besoin d'un random (au lieu de le faire une fois au debut) avec GpSrand(GpTickCountGet())Tu peux essayer de reinit.
Je suppose qu'a chaque fois que tu as besoin d'un random c'est plus ou moins lié à ce que fait le joueur, et ça c'est plus ou moins aléatoire...

enfin c'est une idée quoi smile

7

ok, merci à tous !
Je suis sûr que GpSrand(GpTickCountGet()) est la solution car je ne fais jamais le random au même moment dans mon prog.

alexis : C'est le meme probleme que sur ti!
Je sais bien, mais ce ne sont pas les mêmes fonctions :P (ni le même hardware)
T3 member
TimeToTeam : A new generation of games for TI

8

Surtout que sur TI, il y a FiftyMSecTick qui résoud très bien le problème. Extrait de bgammon.c:
    // compute random seed from 0x600017 and FiftyMSecTick
    unsigned long randnum=255-peekIO(0x600017);
    if (!AMS_1xx) randnum+=(*((volatile unsigned long*)(_rom_call_addr(4FC))))*
                           (_Gray3PIsRealHW2()?52:78);
    srand(randnum);

Mais évidemment, ça, ça ne marche bien que parce que la valeur n'est réinitialisée que lors d'un reset, pas lors de chaque exécution d'un programme. D'après ce qui a été dit ici, il n'a pas l'air d'y avoir une solution comparable sur GP32. sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Content d'avoir pu t'aider Technic smile

tiens nous au courant steup...

10

Tu demandes a l'user d'appuyer sur une touche, puis tu init avec le tick.
Comme l'user n'appuira jamais de la meme facon, ca devrait etre bon.

11

vi, comme ca ca marche smile
et la le mec il le pécho par le bras et il lui dit '

12

oui en effet ca marche mais attention :
la solution c'est pas GpSrand(GpTickCountGet()) MAIS srand(GpTickCountGet());
T3 member
TimeToTeam : A new generation of games for TI

13

Pourquoi?
moi j'utilise GpSrand() et ça marche très bien...

14

bha pas chez moi fou
T3 member
TimeToTeam : A new generation of games for TI