1

Je me pose des questions sur l'efficacité aléatoire des nombres généré par random, en effet je tombe très souvent sur le nombre maximum-1 que j'ai spécifié à random. confus

De plus comment est-il possible par exemple de tomber 1/10 sur un nombre et voir plus sur d'autres nombres avec random?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

2

1.oublie pas d'initialiser le compteur
2.je crois (KK confirmera) que lorsqu'on demande des nombres aléatoires à un intervalle très court la fonction renvoie le même nombre

3

J'ai initialisé le compteur de cette façon au démarrage du jeu:
randomize ();
srand (65535);
2.je crois (KK confirmera) que lorsqu'on demande des nombres aléatoires à un intervalle très court la fonction renvoie le même nombre


Quel genre d'intervalle en secondes ou en millisecondes? Car dans mon cas c'est variable et ça peut aller de 50 millisecondes à 60 secondes. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

4

ah, merde.
Mon intervalle ca aurai été qq µs., du style;
int i;
for (i=0; i!=100; i++) tab[i]=srand(100);

5

Ah ouai ok, je vais utiliser cette routine:
unsigned long int GCL_RandomSeed;

unsigned long int GCL_Random(unsigned long int Max) {
  GCL_RandomSeed = 0x0019660D * GCL_RandomSeed + 0x3C6EF35F;
  return GCL_RandomSeed%Max;
}

void GCL_Randomize() {
	GCL_RandomSeed = peekIO(0x600017);
}

int i; for (i=0; i!=100; i++) tab=srand(100);


C'est pas plutot?
for (i=0; i<100; i++) tab=srand(100);
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

6

geogeo: bah réfléchi ...

7

La routine fonctionne niquel.

Juste quelque petite questions qui n'on rien à voir avec ce topic.

Est-il possible d'utiliser le clavier dans une interruption comme les instruction _keytest...
Où je peux trouver le rowread le plus rapide???
Pour redirigé l'auto int 2 du clavier un SetIntVec suffit?
Et une dernière, pour les jeux de shoot'em up, quand on reste appuyer sur la touche de tir les missiles partent avec le même interval alors que lorsque qu'on appuie plusieurs fois sur la touche de tir, les missiles partent avec des intervalles différent, comment réaliser ça??
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

8

C'est pas plutot? for (i=0; i<100; i++) tab=srand(100);

boaf, pareil wink

9

Euh vous savez vraiment ce que ça fait srand? hum

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

10

dis tjs

11

geogeo :
Est-il possible d'utiliser le clavier dans une interruption comme les instruction _keytest...
Où je peux trouver le rowread le plus rapide???
Pour redirigé l'auto int 2 du clavier un SetIntVec suffit? Et une dernière, pour les jeux de shoot'em up, quand on reste appuyer sur la touche de tir les missiles partent avec le même interval alors que lorsque qu'on appuie plusieurs fois sur la touche de tir, les missiles partent avec des intervalles différent, comment réaliser ça??
what Réfléchis un peu quand même !!
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

12

lol
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

13

[indice]Si tu appuies sur la touche 1 fois, le jeu ne balancera qu'un missile[/indice]
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

14

J'ai réalisé la gestion on ne peut tirer que 3 missiles à la fois.
Mais le problème c'est les 3 première question que j'ai posé car en intégrant la gestion du clavier dans une interruption comme la 1 même en désactivant l'auto int 5 d'autres touches non appuyé sont detecté. sad
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

15

La gestion du clavier devrait se faire dans l'interruption 2 ou dans aucune.
Comme je suis gentil, je t'explique:
Tant que la touche est pressée (tu le détectes à partir de l'interruption 2), tu lance des missiles périodiquement (avec l'interruption 5 par exemple) et si la touche est relâché, tu arrêtes de lancer des missiles. Simple, non ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

16

Mais ce que tu explique je l'ai appliqué et ça fonctionne très bien mais mon problème est plutôt de ce type:

Pour garder un jeu fluide malgré différente vitesse du jeu je voudrais executer périodiquement une interruption (ça je sais faire à force) mais gérer toute les commande dedans comme par exemple:
[pre] DEFINE_INT_HANDLER (myint) { char incr=2; //Accélération au PAD avec HAND if (_keytest (RR_HAND)) incr=4; //Touches LEFT et RIGHT if (_keytest (RR_LEFT)) Racket [0]->xpos-=incr; if (_keytest (RR_RIGHT)) Racket [0]->xpos+=incr; }[pre] C'est aussi simple que ça. Donc soit ça fonctionne et je m'y prend comme un pieds. :(
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

17

trinon c'est pas bien de faire comme ça. Une interruption ne devrait servir à rien d'autre qu'a donner des informations au programmes.
Tu peux très bien utiliser des variables globales et les interprêter au bon moment dans la boucle du programme, ça donnera probablement un meilleur résultat et ça sera moins crade.
Garde a l'esprit que si tu changes tes variables pendant le dessin, tu pourrait obtenir des bugs d'affichage.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

18

GoldenCrystal :
trinon c'est pas bien de faire comme ça. Une interruption ne devrait servir à rien d'autre qu'a donner des informations au programmes.
Tu peux très bien utiliser des variables globales et les interprêter au bon moment dans la boucle du programme, ça donnera probablement un meilleur résultat et ça sera moins crade.
Garde a l'esprit que si tu changes tes variables pendant le dessin, tu pourrait obtenir des bugs d'affichage.


Ouai j'utilise les interruption pour donner des infos ou incrémenter des variables or j'ai des bugs graphique à cause de l'incrémentation de certaines variables dans l'interruption mais s'est corrigé.

Donc impossible de procéder de cette façon.
Et où je peux obtenir le rowread rapide car malgré ma demande je n'ai rien obtenu. sad
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

19

Pour le rowread rapide, j'avais utilisé ça dans mon démineur:
| d0.w: keyboard row mask
| Outputs column mask in d0.b
rowread:
	not.w %d0
	andi.w #0x3FF,%d0
	move.w %d0,(0x600018)
	move.w #23,%d0
__rr_loop:
	dbf %d0,__rr_loop
	| Read value and store it in d0
	move.b (0x60001B),%d0
	not.b %d0
	rts
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

20

OK merci beaucoups. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

21

un rowread plus rapide ou alors plus petit ?

22

Rapide! Mais celui de GoldenCrystal est très petit et rapide. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

23

geogeo :
J'ai initialisé le compteur de cette façon au démarrage du jeu:
randomize (); srand (65535);

C'est idiot! Seul le dernier règlage compte, et c'est toujours le même!

Voilà un code d'initialisation qui fonctionne:
    // 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);
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é

24

Merci mais j'avais pas pensé à la compatibilité avec HW1. smile
if (!AMS_1xx) randnum+=(*((volatile unsigned long*)(_rom_call_addr(4FC))))* (_Gray3PIsRealHW2()?52:78);


_Gray3PIsRealHW2() correspond à quoi pour TIGCC en 4 niveaux de gris???
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

25

_GrayIsRealHW2

Et ma remarque n'a rien à voir avec les HW1!!!
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é

26

lol oui en effet. Je modifier la souce s'occupant des nombes aléatoire.
[EDIT] C'est compatible avec Pedrom cette méthode??
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

27

Oui, mais pas optimal.
Si tu veux avoir des nombres aléatoires de bonne qualité sous PedroM, remplace if (!AMS_1xx) par if (!AMS_1xx || *(unsigned short *)0x32==(('R'<<8)+'O')). Attention, ça demande la bêta officielle ou une alpha de juste avant, ça boguera avec les alphas plus anciennes.
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é

28

OK merci je viens d'appliquer ça et ça fonctionne à merveille. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

29

Kevin Kofler
:
geogeo :
J'ai initialisé le compteur de cette façon au démarrage du jeu:
randomize (); srand (65535);
C'est idiot! Seul le dernier règlage compte, et c'est toujours le même!

Dis-donc mon Kevinochou, t'avais tes règles la semaine dernière ? C'est la deuxième fois que je te vois agresser un débutant aujourd'hui confus
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

30

J'ai dit que le code était idiot, pas lui.
Le seul idiot qui a posté dans le topic, c'est toi. grin
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é