Forum

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

Mon premier programme:un sshoot'em up du nom de Phoenix Lord

Attila le 24/10/2013 à 15:54
Bonjour à tous ! Voilà grace à ce forum j'ai enfin fini mon premier programme (sur TI 82 stats fr), un shoot'em up du nom de "Phoenix Lord". Si ceartain souhaite l'améliorer, je vous en prie ne vous gêner pas.Je précise que ce jeu se compose de trois programmes:
-Le menu (les -> sont des sto)
Code
PROGRAM:PHOENIX
:EffEcr
:Output(1,1,"XXXXXXXXXXXXXXXX //16 X
:Output(3,2,"PHOENIX LORD V
:Output(6,2,"BY ATTILA   >W<
:Output(4,15,"' //Ceci est une apostrophe que l'on trouve dans le catalogue (2nd 0)
:Output(8,1,"XXXXXXXXXXXXXXXX //16 X
:Pause
:EffEcr
:Menu("VAISSEAU ?","UTOPIC II >W<",U,"GARENA Z  I//le symbole pi//I",G
:Lbl U
:prgmUTOPIC
:Stop
:Lbl G
:prgmGARENA
:Stop


-Le premier vaisseau(UTOPIC II)
Code
PROGRAM:UTOPIC
:EffEcr
:Input "DIFFICULT:2,3,4?",H
:EffEcr
:7->A
:7->B
:A+1->C
:1->U
:entAléat(2,15)->X
:1->Y
:entAléat(2,15)->Z
:0->T
:0->Q
:0->S
:Lbl 0
:7->B
:EffEcr
:Output(8,A,">W<
:Output(U,X,"V
:Output(Y,Z,"V
:codeTouche->K
:If K=24 et A-1>0
:A-1->A
:If K=26 et A+3<17
:A+1->A
:If K=21:Goto 1
:A+1->C
:If K=105:Menu("QUITTER","OUI",EN,"NON",0
:T+1->T
:If T=H:Goto T
:Q+1->Q
:If Q=H:Goto Q
:Goto 0
:Lbl 1
:A+1->C
:For(B,7,1,-1
:For(B,B,B-0.1
:End
:7*8/racine de (5)-4²*66/racine de (42)+11*16 //calcul visanta ralentire le tir pour qu'il soit visible
:Output(B,C,"'
:If B=Y-1 et C=Z
:Goto DB
:If B=U-1 et C=X
:Goto DA
:End
:Goto 0
:Lbl T
:0->T
:U+1->U
:If U=8:Goto G
:Goto 0
:Lbl Q
:0->Q
:Y+1->Y
:If Y=8:Goto G
:Goto 0
:Lbl DA
:1->U
:entAléat(2,15)->X
:Goto S
:Lbl DB
:1->Y
:entAléat(2,15)->Z
:Goto S
:Lbl S
:S+1->S
:Goto 0
:Lbl G
:EffEcr
:Output(5,4,"GAME OVER
:Output(8,1,"SCORE
:Output(8,7,S
:Pause
:Menu("CONTINUER","OUI",D,"NON",EN
:Lbl EN
:EffEcr
:Stop
:Lbl D
:prgmPHOENIX
:Stop


Et le deuxième vaisseau(GARENA Z)
Code
PROGRAM:GARENA
:EffEcr
:Input "DIFFICULT:2,3,4?,H
:EffEcr
:7->A
:7->B
:A->C
:7->D
:A+2->E
:1->U
:entAléat(2,15)->X
:1->Y
:entAléat(2,15)->Z
:0->T
:0->Q
:0->S
:Lbl 0
:7->B
:7->C
:EffEcr
:Output(8,A,"I//symbole pi//I
:Output(U,X,"V
:Output(Y,Z,"V
:codeTouche->K
:If K=24 et A-1>0
:A+1->A
:If K=26 et A+3<17
:A+1->A
:If K=105:Menu("QUITTER","OUI",EN,"NON",0
:K=21:Goto 1
:T+1->T
:If T=H:Goto T
:Q+1->Q
:If Q=H:Goto Q
:Goto 0
:Lbl 1
:A->C
:A+2->E
:8->B
:8->D
:Repeat B=1 et D=1
:B-1->B
:D-1->D
:7*8/racine de (5)-4²*66/11+16 //encore le calcul de lag
:Output(B,C,"'
:Output(D,E,"'
:If B=Y-1 et C=Z ou D=Y-1 et E=Z
:Goto DB
:If B=U-1 et C=X ou D=U-1 et E=X
:Goto DA
:End
:Goto 0
:Lbl T
:0->T
:U+1->U
:If U=8:Goto G
:Goto 0
:Lbl Q
:0->Q
:Y+1->Y
:If Y=8:Goto G
:Goto 0
:Lbl DA
:1->U
:entAléat(2,15)->X
:Goto S
:Lbl DB
:1->Y
:entAléat(2,15)->Z
:Goto S
:Lbl S
:S+1->S
:Goto 0
:Lbl G
:EffEcr
:Output(5,4,"GAME OVER
:Output(8,1,"SCORE
:Output(8,7,S
:Pause
:Menu("CONTINUER","OUI",D,"NON",EN
:Lbl EN
:EffEcr
:Stop
:Lbl D
:prgmPHOENIX
:Stop


Voilà,voilà !

Notes:-les difficultés sont dans l'ordre décroissant (2=Difficile et 4= Facile)
-La difficulté 1 éxiste mais est suscidaire godgrace.gif
-Les commandes sont les flèches pour se déplacer, 2nd por tirer et Enter
pour faire Pause.

Voilà, Bon jeu !
Attila le 26/10/2013 à 09:17
N'oubliez pas de laisser vos avis minied.gif
linkakro le 30/10/2013 à 15:57
Je suis intrigué par la temporisation.
Code
:For(B,B,B-0.1
:End
:7*8/racine de (5)-4²*66/racine de (42)+11*16 //calcul visanta ralentire le tir pour qu'il soit visible
Le calcul est mal choisi car peu efficace et bordélique.
Le grand classique est la factorielle 69 notée 69!. Cela effectue 1*2*3*...*69. On utilise 69! car 70! et plus dépassent la capacité.
Il serait plus simple d'utiliser une boucle For vide en choisissant la borne convenable.
Code
For(D,0,100):End

Ta boucle For(B,B,B-0.1) n'a que peu d'intérêt car elle est quittée immédiatement. En plus saisir B-1 en fin aurait suffit.

Pas besoin de Goto avant le Lbl.
Code
:Goto S // innutile
:Lbl S
Attila le 30/10/2013 à 20:48
Oui je me suis rendu compte après coup des rappels de valeur inutiles et oublies d'optimisation notables. D'ailleurs j'ai 1 questions:que est ce que je pourrais programmer pour m'entraîner ?

En tout cas merci de ta réponse et de tes conseils bienvenus.

Sur ce, salutations

Attila
linkakro le 30/10/2013 à 21:28
Je pense que tu devrais utiliser la commande Return pour revenir à PHOENIX à l'emplacement de l'appel du sous-programme plutôt que d'appeler PHOENIX.
Pour l'instant tu ne fais que des appels donc les Stop après les appels ne servent à rien du tout.
Sâches aussi qu'arriver à la fin d'un programme provoque la même chose que Return.

Tu peux t'entrainer en faisant les jeux classiques et des maths. Quelques idées : jeu du plus ou moins, factorisation des trinômes, calcul du pgcd (plus grand commun diviseur) par l'algorithme d'euclide (divisions euclidiennes successives), jeu de pong à un joueur puis deux, jeu d'éviction d'obstacles mouvants
Je ne conseille pas le Snake pour commencer, il y a trop de méthodes différentes et de contraintes différentes, et la plupart sont trop lentes et risquent de te décevoir, ce qui serait dommage.
Attila le 31/10/2013 à 18:15
J'ai suivi la méthode de mdr1 en partie donc j'ai déja fait des plus ou moins et du chauds ou froids.
Je vais essayer de faire le calcul de pgcd. Je le posterai peut être pour que tu me dise ce que t'en penses.

En tout cas merci pour tes conseils.

Attila
Attila le 03/11/2013 à 21:57
J'ai suivi la méthode de mdr1 en partie donc j'ai déja fait des plus ou moins et du chauds ou froids.
Je vais essayer de faire le calcul de pgcd. Je le posterai peut être pour que tu me dise ce que t'en penses.

En tout cas merci pour tes conseils.

Attila
m@thieu41 le 03/11/2013 à 22:04
Fail du message?