[axe] snake

Voir le sujet précédent Voir le sujet suivant Aller en bas

[axe] snake

Message par sandro le Jeu 22 Mar - 19:38

Bonjour,

j'ai fais un snake pour le premier tour du TI-Concour, et comme celui-si est finit, je voullais présenter le code pour que ceux qui veulent puissent l'utiliser, et ceux qui ont des idées d'ammélioration m'en faire part.

Le snake comporte 9 niveaux ; 3 modes (standart, campagne (on change de niveau après un nombre donné de pommes mangées) ou muant (le serpent pert une partie de sa queu quand il mange (mais garde la même longueur), ce morceau de queu sera désormais comme un mur) ; une vitesse réglable, ainsi que le nombre de pommes par niveau.



Touches à utiliser : les flèches, annul(clear) et enter

le lien (source + executable no-shell) : axe tour1 Sandro06.zip

Spoiler:
BASIC Code a écrit::.SNAKE06
:DiagnosticOff
:ClrHome
:Disp i,i," SNAKE",i," Par Sandro
:Pause 5000
:200→D
:.D=duree de pause
:1→M→I
:.M=mode
:.I=Niveau
:25→F
:.F=nbr pommes/niv
:Lbl PA
:1→A
:ClrHome
:Text(0,3,"->Jouer
:Text(8,13,"Vitesse
:Text(8,23,"Mode
:Text(8,33,"Niveau
:Text(8,43,"Pommes par niveau
:Text(8,53,"Quiter
:K--
:Repeat K=9
:getKey→K
:A→B
:!If K-1
:A++
:!If A-7
:1→A
:End
:End
:!If K-4
:A--
:!If A
:6→A
:End
:End
:Text(0,A*10-7,"->
:Text(0,B*10-7,"
:End
:
:ClrHome
:!If A-2
:Text(0,0,"Vitesse:",D►Dec
:Text(0,10,"(plus le nombre est grand,
:Text(0,20,"moins c ' est rapide )
:K--
:While K-9
:getKey→K
:!If K-1
:D--
:!If D
:500→D
:End
:End
:!If K-15
:200→D
:End
:!If K-4
:D++
:!If D-501
:1→D
:End
:End
:Text(25,0,D►Dec,"
:End
:Goto PA
:End
:
:!If A-3
:1→M
:Text(15,0,"MODE:
:Text(0,10,"->Standart
:Text(8,20,"Campagne
:Text(8,30,"Muant
:K--
:Repeat K=9
:getKey→K
:M→B
:!If K-1
:M++
:!If M-4
:1→M
:End
:End
:!If K-4
:M--
:!If M
:3→M
:End
:End
:Text(0,M*10,"->
:Text(0,B*10,"
:End
:Goto PA
:End
:
:!If A-4
:Text(0,0,"Niveau:",I►Dec
:K--
:While K-9
:getKey→K
:!If K-1
:I--
:!If I
:9→I
:End
:End
:!If K-4
:I++
:!If I-10
:1→I
:End
:End
:Text(24,0,I►Dec
:End
:Goto PA
:End
:
:!If A-5
:25→F
:Text(0,0,"Pommes par niveau:",F►Dec
:K--
:While K-9
:getKey→K
:!If K-1
:F--
:!If F-9
:150→F
:End
:End
:!If K-15
:25→F
:End
:!If K-4
:F++
:!If F-151
:10→F
:End
:End
:Text(65,0,F►Dec,"
:End
:Goto PA
:End
:!If A-6
:DiagnosticOn
:Return
:End
:
:
:
:
:Lbl ST
:ClrDraw
:ClrHome
:Disp i,i,i," Niveau",I►Dec
:Pause 2500
:!If I-2
:ref(0,0,2,64
:ref(0,0,96,2
:ref(0,62,96,2
:ref(94,0,2,64
:End
:
:!If I-4
:For(A,0,10
:For(B,0,6
:ref(A*8+4,B*8+4,4,4
:End
:End
:End
:
:!If I-3
:ref(0,0,96,2
:ref(0,0,2,30
:ref(0,34,2,30
:ref(94,0,2,30
:ref(94,34,2,30
:ref(0,62,96,2
:For(A,2,5
:ref(A*8-6,A+1*2,2,15-A*4
:ref(12-A*8+6,A+1*2,2,15-A*4
:End
:End
:
:!If I-7
:ref(0,30,96,2
:For(A,1,7
:ref(A*14-8,0,2,30
:ref(A*14-2,32,2,32
:End
:rref(54,32,2,32
:End
:
:!If I-6
:For(A,0,4
:ref(A*8+4,A*6+4,86-(A*16),56-(A*12
:rref(A*8+6,A*6+6,82-(A*16),52-(A*12
:End
:ref(0,30,96,4
:rref(0,30,96,4
:End
:
:!If I-8
:For(A,0,10
:For(B,0,6
:.If A^2
:.ref(A*8+4,B*8+4,4,4
:.Else
:ref(A*8+4,B*2+(A^2)*4,4,4
:.ref(A*8+4,B*8,4,4
:.End
:End
:End
:rref(52,32,4,4
:End
:
:!If I-5
:For(B,0,1
:For(A,0,2
:ref(A*32+4,B*30+4,2,20
:ref(A*32+8,B*30+4,16,2
:ref(A*32+24,B*30+8,2,16
:End
:ref(4,B*30+24,86,2
:End
:End
:
:!If I-9
:For(A,0,1
:ref(0,A*62,96,2
:End
:For(A,1,15
:ref(A*6-2,(A^2)*4+2,2,56
:End
:Pxl-Off(58,32
:Pxl-Off(58,33
:Pxl-Off(59,32
:Pxl-Off(59,33
:End
:
:
:DispGraph
:For(P,0,4
:Pxl-On(P+22*2,32
:Pxl-On(P+22*2,33
:Pxl-On(P+22*2+1,32
:Pxl-On(P+22*2+1,33
:P+22*2→{P*2+L3
:32→{P*2+L3+1}
:End
:
:.L est la longueur du serpent (en carres de 2*2 pixels
:.P est la position (du 1er octe/2) de la tete dans L3 (pointeur)
:4→P+1→L
:
:
:.S=delta X
:.T=delta Y
:
:52→X
:32→Y
:0→T+2→S
:.2→S
:
:rand^47*2→A
:rand^32*2→B
:While pxl-Test(A,B
:rand^47*2→A
:rand^32*2→B
:End
:Pxl-On(A+1,B
:Pxl-On(A,B+1
:Pxl-On(A+1,B+1
:DispGraph
:
:Repeat getKey
:End
:
:While K-15
:getKey→K
:
:!If L-5-F or (M-2
:I++
:!If I-11
:1→I
:End
:Goto ST
:End
:!If K-1 or (T=‾2
:0→S+2→T
:.2→T
:End
:!If K-2 or (S=2
:‾2→S+2→T
:.0→T
:End
:!If K-3 or (S=‾2
:.2→S
:0→T+2→S
:End
:!If K-4 or (T=2
:‾2→T+2→S
:.0→S
:End
:X+S→X
:Y+T→Y
:
:If X=‾2
:94→X
:End
:!If X-96
:0→X
:End
:If Y=‾2
:62→Y
:End
:!If Y-64
:0→Y
:End
:
:If pxl-Test(X,Y
:Goto GO
:End
:
:If M-3
:.Standart/campagne
:If pxl-Test(X,Y+1
:L+1→A
:While A>(P+2
:A-1→A
:{A-1*2+L3}^r^→{A*2+L3}^r^
:End
:L+1→L
:
:!If L-384
:Goto ER
:End
:
:rand^47*2→A
:rand^32*2→B
:While pxl-Test(A+1,B
:rand^45+1*2→A
:rand^30+1*2→B
:End
:Pxl-On(A,B+1
:Pxl-On(A+1,B
:Pxl-On(A+1,B+1
:P++
:Else
:P++
:!If P-L
:0→P
:End
:{P*2+L3}→N
:{P*2+L3+1}→O
:
:Pxl-Off(N,O
:Pxl-Off(N,O+1
:Pxl-Off(N+1,O
:Pxl-Off(N+1,O+1
:End
:Else
:.Muant
:If pxl-Test(X,Y+1
:For(A,P+1,L-1
:{A*2+L3→{A+1*2+L3
:End
:L+1→L
:rand^47*2→A
:rand^32*2→B
:While A+B=0 or pxl-Test(A,B
:rand^47*2→A
:rand^32*2→B
:End
:Pxl-On(A,B+1
:Pxl-On(A+1,B
:Pxl-On(A+1,B+1
:DispGraph
:
:End
:
:P++
:!If P-L
:0→P
:End
:{P*2+L3}→N
:{P*2+L3+1}→O
:
:Pxl-Off(N,O
:Pxl-Off(N,O+1
:Pxl-Off(N+1,O
:Pxl-Off(N+1,O+1
:
:End
:
:
:Pxl-On(X+1,Y
:Pxl-On(X+1,Y+1
:Pxl-On(X,Y+1
:Pxl-On(X,Y
:DispGraph
:Pause D
:
:X→{P*2+L3}
:Y→{P*2+L3+1}
:
:End
:
:Lbl MN
:ClrHome
:1→A
:Text(0,20,"->RECOMMENCER
:Text(8,30,"PARAMETRES
:Text(8,40,"QUITTER
:Repeat K=9
:getKey→K
:A→B
:!If K-1
:A++
:!If A-4
:1→A
:End
:End
:!If K-4
:A--
:!If A
:3→A
:End
:End
:Text(0,A+1*10,"->
:Text(0,B+1*10," "
:End
:
:!If A-1
:Goto ST
:End
:!If A-2
:Goto PA
:End
:DiagnosticOn
:Return
:
:Lbl GO
:ClrHome
:Disp i,i," GAME OVER",i,"Longueur:",L►Dec
:Pause 5000
:Goto MN
:
:Lbl ER
:ClrHome
:Disp i,i," FELITITATIONS!",i," Vous avez at- teint la lon- gueur maximale: 384
:Pause 5000
:Goto MN
Generated by SourceCoder, © 2005-2012 Cemetech



Merci d'avance pour d'éventuelles idées d'améliorations

Sandro

_________________
mort à l'inutile, place à la mémoire libre et aux programmes!

sandro
Or 4
Or 4

Sexe : Masculin
Age : 20
Messages : 806
Date d'inscription : 01/07/2011
Etudes : T°S SVT spé maths
Points Forum : 29
Points Concours : 5
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84+ SE
  • - TI-89
  • - Casio Collège

TI-84+ SE


Revenir en haut Aller en bas

Re: [axe] snake

Message par kindermoumoute le Jeu 22 Mar - 20:55

Dans les premières lignes :
:1→M→I→K

kindermoumoute
Or 4
Or 4

Sexe : Masculin
Age : 22
Messages : 797
Date d'inscription : 07/10/2010
Points Forum : 21
Points Concours : 1
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-83+

TI-83+


Revenir en haut Aller en bas

Re: [axe] snake

Message par sandro le Ven 23 Mar - 20:10

t'es sur, il y a le label PA entre : quand on pert et qu'on choisit parammetres, le K vaudra encore 9 (confirmation du parramètre) ?

Merci

Sandro

_________________
mort à l'inutile, place à la mémoire libre et aux programmes!

sandro
Or 4
Or 4

Sexe : Masculin
Age : 20
Messages : 806
Date d'inscription : 01/07/2011
Etudes : T°S SVT spé maths
Points Forum : 29
Points Concours : 5
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - ASM TI-83+ / TI-84+
  • - Axe Parser
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-84+ SE
  • - TI-89
  • - Casio Collège

TI-84+ SE


Revenir en haut Aller en bas

Re: [axe] snake

Message par Contenu sponsorisé Aujourd'hui à 16:42


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum