Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
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

)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

, 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

)
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!

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!

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...

f/x=x² le 20/02/2011 à 17:18
Excuse-moi Linkakro. C'est bien toi qui a fait ce prog
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!

Bien sûr que tu peux mettre mes améliorations, j'en serais ravi

!
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:
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

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 gaucheImplosion 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é.

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

en héxadecimal de préférence car je n'ai pas le cable

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

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

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.

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

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 !
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

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 ?

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

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 !)

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.-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) Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.