Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 4723
Réponses : 43
Type : discussion
Etat : réponses autorisées

Cubefield

f/x=x² le 19/02/2011 à 20:51
Récemment, j'ai découvert un autre de ces jeux à la con horriblement addictifs qui servent juste à passer le temps : le Cubefield.
Et donc j'en ai fait une version TI, que je vous poste ici.
L'avantage c'est qu'il est tout léger puisqu'il ne prend que 495 ko.
Alors pour éviter que vous ne recopiiez (oui oui il faut bien 2 "i" j'ai pas fait de faute godgrace.gif )pour rien, j'ai vérifié et il marche.
Attention ici [A] est une matrice, que vous obtiendrez en faisant 2nde + x-1 (Donc Matrice) + 1.
Sto c'est la touche juste au-dessus de "On".
[THETA] c'est Alpha + 3.
Le [INFERIEUR A] se trouve en faisant 2nde + math + 5 et le [DIFFERENT DE] se trouve en faisant la même chose mais en remplacant le 5 par un 2.Puis pour le [SUPERIEUR A], pareil avec un 3. Et pour le =, pareil mais avec un 1. Non ,je ne vous prend pas pour des cons godgrace.gif , mais c'est pour si y a des débutants qui veulent taper ce prog sur leur calto (on sait jamais, c'est beau de rêver clown.gif )
prgmCUBEFILD
Code
Lbl [THETA]
Meny ("CUBEFIELD","JOUER",J,"SCORES",S,"QUITTER",Q
Lbl J
Clrhome
1[STO]Z
Delvar [A]
{8,16[STO]dim([A]
50[STO]N
0[STO]M
8[STO]X
For(W,1,7
Disp " "
End
Lbl 0
If Z/20=iPart(Z/20
N-10[STO]N
If M[INFERIEUR A]15 and Z/30=iPart(Z/30
M+1[STO]M
Disp " "
For(V,0,M
randInt (1,16[STO]S
Output(8,S,"[2NDE + 0 + [13 FOIS VERS LE BAS] (le petit carré de 9 pixels)]
1[STO][A](8,S
End
Output(1,X,"V
Output(1,1,Z
getKey[STO]K
X+(K=26 and X[DIFFERENT DE]16)-(K=24 and X[DIFFERENT DE]16)[STO]X
For(W,1,7
rowSwap([A],W,W+1)[STO][A]
End
For(W,1,16
0[STO][A](8,W
End
Z+1[STO]Z
For(W,0,N
End
If [A](1,X)=0
Goto 0
ClrHome
Output(1,X,"V
Output(8,S,"[2NDE + 0 + [13 FOIS VERS LE BAS] (le petit carré de 9 pixels)]
Output(1,1,Z
Output(4,4,"GAME OVER
Pause
ClrHome
Disp "SCORE : "
Output(1,9,Z
If Z[SUPERIEUR A]L6(11
Then
Z[STO]L6(11
Output(4,1,"RECORD BATTU !"
Pause
Goto [THETA]
Lbl S
ClrHome
Output(1,1,"VOTRE HIGH SCORE EST : "
Output(2,8,L6(11
Pause
Goto [THETA]
Lbl Q
ClrHome
Output(1,1,"

Voili voilou, & have fun! happy.gif
f/x=x² le 19/02/2011 à 20:58
Attention j'ai fait une erreur, à la 2ème ligne c'est "Menu(" au lieu de "Meny(".
C'était une faute! moodforlove.gif
Akmdad le 19/02/2011 à 21:20
deja fait...

ceci dit jeu tres sympa!!
f/x=x² le 19/02/2011 à 21:22
Non en fait, c'est pas déjà fait, c'est juste une amélioration par moi du programme déjà fait... moodforlove.gif
linkakro le 20/02/2011 à 13:59
Soit les grands esprits se rencontrent, soit tu as pompé sur une des versions de mon programme FLY (cubefield) (a priori la 2)

https://tout82.pages-perso.fre[...].php?sujet=2303
https://espace-ti.e-monsite.co[...]ue-1150538.html
La première version est perdue quelque part sur le forum.


Mais je ne t'en veux pas : si tu l'as amélioré, c'est que tu as bossé toi-même. bigmouth.gif
Une mention de l'origine aurait tout-de-même été plus transparente.
f/x=x² le 20/02/2011 à 17:18
Excuse-moi Linkakro. C'est bien toi qui a fait ce prog moodforlove.gif
Mais je l'ai amélioré avec un menu, un mode scores, des petits carrés qui te foncent dessus au lieu des X, l'affichage du score en direct pendant la partie, le game over qui s'affiche dès que tu as perdu et quelques autres encore.
Mais le prog original vient effectivement de toi.
Akmdad le 20/02/2011 à 18:34
c'est une v2.0 non officielle...
linkakro le 24/02/2011 à 13:19
Je compte appliquer tes améliorations de présentation (v2.3) à ma v4.2 pour faire la 4.3. J'en profiterai pour adopter "cubefield" plutôt que "fly".
f/x=x² le 24/02/2011 à 13:28
Nan nan, t'as pas le droit, faut me demander avannt!!
Mais non, je rigole! crazy.gif Bien sûr que tu peux mettre mes améliorations, j'en serais ravi minied.gif !
Akmdad le 24/02/2011 à 19:02
manquerait plus que sa tiens...
linkakro le 10/03/2011 à 21:23
CUBEFIELD 4.3
Bien plus puissante et avec l'affichage en plus.
Je savais faire la présentation mais j'étais flemmard.

Vous pouvez remplacer les lFLY par la liste L6 pour les ti82basiques.
Code
"NOYAU CONCU PAR LINKAKRO
"PRESENTATION PAR F/X=X2
1->dim(lFLY
Lbl A
Menu("CUBEFIELD","JOUER",J,"SCORES",S,"QUITTER",Q
Lbl J
DelVar [A]
{7,16}->dim([A]
8->X
0->A
1->N
ClrHome
For(W,1,8
Disp ""
End
Lbl 1
A+1->A
A+1-7iPart(A/7)->B
getKey->K
min(16,max(1,X-(K=24)+(K=26->X
min(15,1+iPart(A/20->N
Disp ""
Output(1,X,"V
If [A](B,X
Goto Z
*row(0,[A],B)->[A]   // *row = *ligne : matrice+droite+E
For(W,1,N
randInt(1,16->D
Output(8,D,"Р       // le petit carré du catalogue
1->[A](B,D
End
Goto 1
Lbl Z
Pause
ClrHome
Disp "GAME OVER
Disp "SCORE=",A
If lFLY(1)<A
Then
Disp "NOUVEAU RECORD
{A->lFLY
End
Lbl S
Disp "RECORD=",lFLY
DelVar [A]
Pause
Goto A
Lbl Q
made2kill le 14/03/2011 à 17:06
T'es gentil de me citer
Image manquante
, mais j'ai changé de nom depuis (mais c'est pas grave).
Alors, j'ai essayé ca et c'est vrai que c'est plus rapide, mais on peut faire mieux:

Remplace:

Citation
Lbl Q


Par:

Citation
Lbl Q
ClrHome
Output(1,1," <- 1 espace


Remplace:

Citation
Disp "GAME OVER
Disp "SCORE=",A
If lFLY(1)<A
Then
Disp "NOUVEAU RECORD
{A->lFLY
End


Par:

Citation
Output(1,X,"V
Output(8,D,"Ð //le petit carré du catalogue
Output(4,4,"GAME OVER
Pause
ClrHome
Output(1,1,"SCORE="
Output(1,7,A
If lFLY(1)<A
Then
Output(2,1,"NOUVEAU RECORD !
A->lFLY
End
Pause
Goto A


Et autres encore, mais là j'ai la flemme de chercher, donc voilà.
Implosion le 30/11/2011 à 23:12
happy.gif j'aime ce programme. Question du noob juste comme ça : C"EST QUOI LES TOUCHES POUR DEPLACER LE VAISSEAUUUUUUUUUUUUUUUUUUUU !!!!!!!!!???????
Merci de vos futures reponses.
linkakro le 30/11/2011 à 23:50
droite et gauche
Implosion le 01/12/2011 à 14:36
Alors c'est officiel ,il ne marche pas sur ma TI 82 stats fr. Je peux pas bouger le vaisseau, donc j'me prend un carré et jcreve.
linkakro le 01/12/2011 à 17:10
Les déplacements sont gérés dans cette partie :
Code
getKey->K
X-(K=24)+(K=26)->X
min(max(1,X),16->X
Ce code est conçu dans un éditeur 83 et testé sur ma 82statfr.
snap le 01/12/2011 à 17:14
D'ailleurs tupeut simplifier cette fonction:

Code
Getkey -> K
min(16,max(1,X+(K=26)-(K=24 -> X
linkakro le 01/12/2011 à 17:16
Oui, je ne pensais pas à ça à l'époque.
J'édite.
Implosion le 01/12/2011 à 17:34
mh...j'ai utilisé le programme donné tout en haut moi, pas le tien...
Sinon a part ça j'ai remplacé la partie concernant le déplacement et ça marche toujours pas ..
linkakro le 01/12/2011 à 18:01
J'espère que tu as appliqué ce changement dans ma version 4.3 et non la 2.3 sinon c'est sûrement normal.

max et min sont dans le menu math
Les parenthèses et virgules doivent être rigoureusement respectées.
Sinon je ne vois pas... surtout que j'y ai joué. ahh.gif
calcugeek le 01/12/2011 à 19:30
Ceci est un message aux pros de l'asm : serait il calculettement possible de faire un effet de profondeur pour que le jeu ressemble à l'original? ce serait le must du must beer.gif beer.gif en héxadecimal de préférence car je n'ai pas le cable eyeonly.gif eyeonly.gif
The K le 01/12/2011 à 19:34
Une espèce de jeu en 3D en gros c'est ça ? (je ne connais pas l'original ^^')

Oh ben oui c'est possible alors.
C'est même possible en ti-basic avec le graphique je pense.
Dans tous les cas, un jeu 3D est très lourd niveau graphiques cry.gif
calcugeek le 01/12/2011 à 20:31
Justement!Je pense que l'essentiel du programme peut se faire en ti-basic et que le "zoom" peut se faire en asm à chaque fois. Quoi qu'il en soit j'espère bien que c'est possible et que quelqu'un connaissant l'asm répondra affirmativement. J'ai pas trop le temps d'apprendre l'asm du fait que je suis en prépa godgrace.gif godgrace.gif
linkakro le 01/12/2011 à 21:34
Nous dérivons du sujet.
Oui une version 3D de ce jeu existe sur ti83+. D'ailleurs je l'ai téléchargé et il fonctionne avec mirageos.
J'aime bien le jouer en accéléré dans l'émulateur wabbitemu. godgrace.gif
Polymorph le 01/12/2011 à 22:33
Y'a moyen de coder en Asm sur une 82 stats fr?

Juste pour demander si c'est normal qu'on ai une boucle lbl Goto, qui pourrait être remplacée par une While 1?
The K le 01/12/2011 à 22:45
Désole de hs :
Oui et non. On peut lire certains programmes en asm par la commande "Envoi(9prgmASM", ASM étant le nom du programme. On peut aussi transférer ION sur ti-82, Shell qui permet de lire d'autres programmes en asm. Mais ne pas oublier que sur ti 82, si t'as un RAM Clear c'est fatal ... Ce qui arrive pour une petite erreur de rien du tout ;(
Après non, pour la simple et bonne raison qu'on code un programme en asm depuis un ordinateur pour toutes les TI-z80. Les autres TI, je ne sais pas.
Fin du hs.

Pourquoi pas une boucle while 1 ? Parce que pour l'auteur c'était plus simple avec les lbl/Goto je suppose winkle.gif
linkakro le 01/12/2011 à 23:00
Je mettais et je mets toujours des boucles while 1 uniquement à la fin de la conception quand j'y pense car les goto fonctionnent TOUJOURS et que les boucles peuvent poser des problèmes.
Une boucle de ce type ne peut pas être quittée sans goto et la composition des deux pose de gros problèmes.

Bien sûr qu'on peut programmer en asm sur ti82statfr.
D'un point de vue assembleur : 82stat=82statfr=83 ; 83+(se)=84+(se)
La 82 de base n'est pas propice à l'assembleur (mais c'est possible). Il faut bidouiller la ram avec des fichiers très spéciaux.
Toutes les TI que je viens de citer ont un processeur Z80 (de diverses puissances)
Mais les deux dernières ont des composants et une OS différents d'où un language différent malgré leur processeur (mémoire archive, applications, et horloge pour la 84+).
The K le 02/12/2011 à 16:15
Euh ... oui c'est vrai ! (roh mais que dis-je ?)

Oui bien sur sinon l'instruction Asm( et AsmComp( ne serviraient à rien sur ti-83 plus/84/se/pocket.
Implosion le 02/12/2011 à 18:58
J'ai utilisé la version du début de sujet parce que la tienne semble être encore plus galere vu que y'a des histoire de "fly" que j'ai pas bien suivi.
linkakro le 03/12/2011 à 01:07
Le programme a juste changé de nom et grandement évolué.
made2kill(alias f:x=x^2) a posté une variante d'une vieille version de mon programme tandis que j'ai posté la plus récente.
C'est l'évolution historique du programme qui est dure à suivre mais le programme final est clair.
Je n'ai pas testé la sienne et je te recommande de copier ma version 4.3.
xDreams le 03/12/2011 à 23:45
Il est pas mal ce pitit jeu dites donc ! bigmouth.gif
je crois que je vais m'amuser !


xDreams.
Implosion le 04/12/2011 à 12:40
Bon bah j'ai recopié le tien, et ça marche impec happy.gif y'a moyen d'augmenter la vitesse des carrés?
linkakro le 05/12/2011 à 14:46
Non ce programme ne peut pas être radicalement plus rapide sous cette forme.
Le seul moyen d'accélérer le programme serait d'inventer une toute nouvelle boucle qui travaille autrement.
L'astuce que j'ai appliquée ici pour le défilement (pointeur) et la fonction *row sont la méthode la plus puissante que je connaisse en TI-Basic.
Tu peux toujours espérer grapiller des milisecondes dans les coins mais je suis sceptique.

Sinon choisis un programme dans un autre language plus puissant.
tapenad le 06/12/2011 à 21:44
petite question:
dans le cube field de linkakro,ou est la fonction *row ( pour ti-82.fr)



post n°30!!!!!!!!!!!!!!!!
linkakro le 06/12/2011 à 21:58
Dans le catalogue et dans le menu matrice.
Comme d'hab il y avait l'article de traduction pour ça. Tant pis j'ajoûte un commentaire au code.
*row( = *ligne( ==>> [matrix][droite][alpha][sin]
yu971 le 07/12/2011 à 18:59
où trouver la touche iPart sil vous plait ? cry.gif
encore désolé pour ma nocivité je vais m'améliorer merci de répondre ^^
linkakro le 07/12/2011 à 19:32
Va dans l'article de traduction/catalogue pour connaître les réponses à toutes les questions du genre "c'est quoi iPart ?" en cherchant toi-même.
iPart se trouve dans le menu math et se traduit par ent ou partEnt.
-Coco- le 07/12/2011 à 20:04
J'avais moi même fait un cubefield en assembleur. Il rendait plutôt bien (c'est sûr qu'avec des sprites et 60 FPS c'est plus agréable).
Par contre flemme de le poster car c'est surchiant d'expliquer aux gens comment faire marcher ION et toussa.... Sauf si vous insistez godgrace.gif
The K le 07/12/2011 à 20:33
Moi j'insiste rien que pour voir la tête du programme !
(et je sais comment marche ION accessoirement !)

bigmouth.gif godgrace.gif
Polymorph le 09/12/2011 à 22:38
Moi je sais pas comment marche Ion... ni n'importe quel autre Shell, mais j'insiste! Parce qu'un jeu à 60fps, c'est vraiment la classe.
sandro le 09/12/2011 à 22:40
moi aussi j'aimerais bien voir si possible. Et en plus, si il y en a qui ne savent pas, tu peux toujours donner un lien vers cet article : https://tout82.pages-perso.fre[...].php?sujet=2522.

Sandro
-Coco- le 10/12/2011 à 19:18
Bon allez je vais vous le poster pour vous faire plaisir (mais bon c'est pas non plus un perfect game, y'a de légers bugs de collisions parfois)
sandro le 10/12/2011 à 19:28
tant que ça ne fait pas de RAM Clear, c'est bon

Sandro
-Coco- le 10/12/2011 à 21:30
Aucun RAM Clear (c'est un code totally clean et sans bavure)