Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Lun 24 Déc 2007, 18:39
Chose promise chose due. Voilà le Snake, qui selon moi est le meilleur que l'on puisse faire en basic.
Ce programme n'est pas du tout de moi !! C'est celui de Ratuss auquel j'ai apporté pas mal d'améliorations (vitesse, scores, ajout de 3 labyrinthes, sauvegarde, pause, correction des labyrinthes préexistants).
J'ai recopié le programme tel quel, donc j'ai mis ma présentation, mais vous pourrez la changer aisément si vous voulez, elle est tout au début.
En tout il y a dix labyrinthes répartis sur 2 niveaux. Pour passer au labyrinthe suivant il faut avoir fais plus de 30 points au précédent (j'ai essayé de les classer par ordre de grandeur).
Je tiens également à dire que le labyrinthe 10 a été créé par coc5.
Il faut utiliser les touches fléchées, et [ENTER] pour accéder au mode pause. Via ce mode, il est possible de :
* reprendre immédiatement la partie
* quitter le jeu tout en sauvegardant le partie de manière à la poursuivre ultérieurement (en choisissant l'option charger lorsque on relance le programme )
* quitter définitivement la partie
Attention : pour que le mode sauvegarde fonction, il ne faut toucher ni à W, ni aux liste L4,L5, ni à la fenêtre graphique.
Les scores sont visibles depuis l'option "scores" dans le mode principal. Ils sont enregistrés dans la liste L6.
Le jeu est séparé en 2 programmes qu'il faut impérativement nommer "SNAKE" et "[teta]SNAKE"
Attention : pour les bidouilleurs, il ne faut pas les rassembler en un seul sinon ça va ramer !!…
Snake
Nom du programme : "[SNAKE]"
Code
If W=1
Goto [teta]
PlotsOff
FnOff
ClrHome
FullScreen
ClrDraw
0->Xmin
94->Xmax
0->Ymin
62->Ymax
CoordOff
LabelOff
AxesOff
Horizontal 0
Horizontal 62
Vertical 0
Vertical 94
For (A,1,7
Text (10,A, "VIBRA
End
For (A,1,13
Text (18,A, "2007G
End
For (A,1,13
Text (A,53,"PRESENTE : "
End
Text (52,28,"VERSION 9.2
For (A,1,35
Text (35,A,"SNAKE // ajoutez un espace avant le S, évite la trainée
End
Pause
Lbl [teta]
If W=/=1
Then
0->Xmin
94->Xmax
-62->Ymin
0->Ymax
Lbl X
0->F
ClrDraw
16->A
18->B
44->C
77->D
1->E
2->N
If dim L6<11 // dès ti82stats, fermez bien la parenthèse, dim(L6)<11
11-> dim L6
1->P
Menu ("SNAKE","JOUER",6,"SCORES",9,"QUITTER",Z
Else
Menu ("SNAKE","CHARGER",W,"JOUER",6,"SCORES",9,"QUITTER",Z
End
Lbl W
3->F
DispGraph
Pause
Goto 8
Lbl Z
ClrDraw
-10->Xmin
10->Xmax
-6->Ymin
6->Ymax
1->Yscl
AxesOn
ClrHome
ClrList L4,L5
0->W
0->F
Stop
Lbl 9
Text (0,25,"NIVEAU 1 : "
Text (9,1,"1 : VIDE"
Text (9,70,L6(1
Text (17,1,"2 : FONTAINE
Text (17,70,L6(2
Text (25,1,"3 : PORTE
Text (25,70,"L6(3
Text (33,1,"4 : VERSAILLES
Text (33,70,L6(4
Text (41,1,"5 : DIAGONALE
Text (41,70,L6(5
Text (49,1,"6 : BOITE
Text (49,70,L6(6 <- //
Text (57,1,"7 : DAMIER
Text (57,70,L6(7
Pause
ClrDraw
Text (0,25,"NIVEAU 2 :
Text (9,1,"1 : CROIX
Text (9,70,L6(8
Text (17,1,"2 : DEDAL
Text (17,70,L6(9
Text (25,1,"3 : SATIONNEMENT
Text (25,70,L6(10
Pause
ClrDraw
Goto x
Lbl R
ClrHome
Disp "BLOQUE
Pause
Lbl 6
Menu ("LABYRINTHES","NIVEAU 1",S,"NIVEAU 2",T
Lbl T
Menu (NIVEAU 2","CROIX",H,"DEDAL",I,"STATIONNEMENT",J
Lbl S
Menu ("NIVEAU 1","VIDE",A,"FONTAINE",B,"PORTES",C,"VERSAILLES",D,"DIAGONALE",E,"BOITE,F,"DAMIER",G
Lbl J
If 30>=L6(9
Goto R
10->P
26->A
For ([teta],0,3
Line (8,-45+[teta],27,-45+[teta]
Line (67,-45+[teta],86,-45+[teta]
Line (8,-25+[teta],86,-25+[teta]
Line (28+[teta],-55,28+[teta],-32
Line (63+[teta],-55,63+[teta],-32
Line (28+[teta],-21,28+[teta],-7
Line (63+[teta],-10,63+[teta],-7
End
Goto A
Lbl I
If 30>L6(8
Goto R
9->P
8->B
For ([teta],0,3
Line (33+[teta],-55,33+[teta]-32
Line (58+[teta],-30,58+[teta] ,-7
Line (8,-25+[teta] ,46,-25+[teta]
<- //
Line (48,-40+[teta] ,86,-40+[teta]
End
Goto A
Lbl H
If 30>L6(7
Goto R
21->A
8->P
For ([teta] ,0,3
Line (43+[teta] ,-55,43+[teta] ,-7
Line (8,-30+[teta] ,86,-30+[teta]
End
Goto A
Lbl E
If 30>L6(4
Goto R
5->P
38->B
For ([teta] ,23,68,5
For (Z,13,16
Line ([teta] ,Z-[teta] , [teta] +3,Z-[teta]
End
End
Goto A
Lbl F
If 30>L6(5
Goto R
26->A
6->P
For ([teta],0,3
Line (8,-55+[teta] ,86,-55+[teta]
Line (8,-7-[teta] ,86,-7-[teta]
Line (8+[teta] ,-11,8+[teta] ,-51
Line (86-[teta] ,-11,86-[teta] ,-51
End
Goto A
Lbl G
If 30>L6(6
Goto R
6->A
7->P
For ([teta] ,1,15
13+5int (rand14)->I
5int (rand8+3)->J
For (Z,0,3
Line (I,Z-J,I+3,Z-J
End
End
Goto A
Lbl C
3->P
Lbl D
If 30>L6(3-int(P/3))
Goto R
For ([teta] ,7,10
For (Z,0,45,45
Line (8,- [teta] –Z,41,- [teta] –Z
Line (53,- [teta] –Z,86,- [teta] –Z
End
For (Z,1,76,75
Line ([teta]+Z,-11,[teta]+Z,-25
Line ([teta]+Z,-37,[teta] +Z,-51
End
End
If P=3
Goto A
4->P
Lbl B
If 30>L6(1
Goto R
For ([teta] ,27,35
Line (28,- [teta] ,66,- [teta]
End
Line (32,-31,62,-31,0
If P=1
2->P
Lbl A
L6(P)->O // ceci est la lettre O
ClrList L4,L5
99->dim L4
99->dim L5
For ([teta] ,1,6,1.4
Line (88,-int [teta] ,6,-int [teta]
End
Line (6,-57,88,-57
Line (88,-56,88,-6
Line (6,-6,6,-56
Text (0,13,"SCORE : "
Text (0,53,"HIGH : "
Text (0,72,(int L6(P
Lbl 8
prgm[teta]SNAKE
If F=1
Goto X
If F=2
Goto Z
Goto 8
Nom du programme : "[teta]SNAKE"
Code
If F=3
Goto L
69 !
-8-5int (rand10)->I
8+5int (rand16)->J
If pxl-Test(-I,J)=1
Return
Line (J,I,(J+2),(I-2
Line (J,(I-2),(J+2),I
Goto 3
Lbl 2
6+50fPart ((A+C)/50)->A
8+80fPart ((B+D)/80)->B
If pxl-Test ((A+2),B)=1
Goto 4
Text (A,B, "[degré]
Lbl 3
Round (1+NfPart (E/N),0->E
Text (L4(E),L5(E), " " {5 espaces}
A->L4(E
B->L5(E
getKey ->K
If K=0
Goto 2
If K=105
Goto M
Lbl L
0->F
If D=72
Then
If K=24
67->D
If K=26
77->D
If K=24 or K=26
44->C
Goto 2
End
If C=/=44
Goto 2
If K=25
39->C
If K=34
49->C
If K=25 or K=34
72->D
Goto 2
Lbl 4
Text (A,B,"[degré]
If N=99
Then
Text (27,31,"GAGNE !
Goto 8
End
Line (B+1,(-A-3),(B+2),(-A-2
If –I=/=(A+2) or J=/=B
Goto Q
N+1->N
Text (0,37,(N+1)
Return
Lbl Q
If (N+1)>L6(P
(N+1)->L6(P
Text (27,31, "GAME OVER
Pause
1->F
Return
Lbl 8
ClrDraw
ClrHome
ClrList L4,L5
Lbl M
Menu ("PAUSE","REPRENDRE",W,"QUITTER",N
Lbl N
Menu ("ENREGISTRER","OUI",O, "NON",Z
Lbl Z
2->F
Return
Lbl O
1->W
Stop
Lbl W
DispGraph
Pause
Goto L
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Lun 24 Déc 2007, 23:10
J'ai pas le cable ni vti ni ti connect…
Et je me suis tapé les 2000 octets à la main !
Mais toi si tu fais un petit copié collé tu pourais le faire non ?
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 879
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Jeu 27 Déc 2007, 18:31
Il faudrait juste re-traduire dans le sens inverse les codes du genre -> = ü
Sinon la description est prometteuse, mais je ne vois pas de quel labyrinthe tu parles, je ne me rappelles pas en avoir fait ?
Autorisation : Membre
Nb de messages : 879
Inscrit le : Sam 16 Jui 2007, 13:37
Posté le : Ven 28 Déc 2007, 11:56
Ah bon^^ ?
Au fait, au lieu de faire des trucs du genre -51+[theta] essaie de marquer [theta]-51 au total tu économiseras bien 20 octets et le code seras plus claire (pas de risque de faire le mauvais moins pour ceux qui ne connaissent pas )
Autorisation : Membre
Nb de messages : 29
Inscrit le : Mer 17 Oct 2007, 18:35
Posté le : Jeu 24 Jan 2008, 18:20
Salut, je vien de recopier tout ton programme à la main .
Tout d'abour, bravo pour la présentation, elle est super !!
Mais, après avoir réglé quelques problèmes des plus simples, je me heurte sur un problème dont je ne comprend pas l'erreur....
Err : Argument
abs(1NpartDéc(E/N),0->E)
Ceci est la ligne : Round (1+NfPart (E/N),0->E
(Anglais)
L'erreur se situe au niveau de -> (STO)
Aussi, j'oubliai, cette erreur apparait quand je veux lancer le tout 1er Niveau.
Sinon, tout fonctionne bien pour moi.
voilà, merci de m'aider
@+++
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Ven 25 Jan 2008, 15:28
Chose promise chose due : j'ai corrigé !!
Il y avait effectivement pas mal d'erreur. Pour ceux qui ont recopié le programme, je vous dit où elle sont :
* dans snake :
// plusieurs erreurs après le lbl J
// 1 erreur après lbl E
// 2 erreur après lbl F
// 1 erreur après lbl C
* dans [teta]snake :
// 1 erreur 3 lignes en dessous de l'instruction où il y a marqué "GAGNE !"
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 29
Inscrit le : Mer 17 Oct 2007, 18:35
Posté le : Ven 25 Jan 2008, 18:59
Salut, voilà, ratuss, je vien de corriger ma ligne en changant abs par arondi.
J'ai aussi corrigé les erreurs donnés par vibra.
après correction,je lance le jeu, et là, erreur syntaxe:
arrondi(1+NpartDéc(E/N),0 -> E)
erreur au niveau de la paranthèse.
si je remplace cette ligne par celle-là :
arrondi(1+NpartDéc(E/N) : 0 -> E
Ca me met erreur à la ligne d'après : ( dim invalide)
Texte(L4(E),L5(E)," " <5 espaces>
erreur au niveau du E
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Ven 25 Jan 2008, 19:07
Citer : macwarrior
je remplace cette ligne par celle-là :
arrondi(1+NpartDéc(E/N) : 0 -> E
Attention : c'est pas ":", mais "," !
Sinon, essaye de faire 0->l4(1):0->l5(1):0->l6(1) avant de lancer le programme "snake"(pour initialiser les listes).
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 29
Inscrit le : Mer 17 Oct 2007, 18:35
Posté le : Ven 25 Jan 2008, 19:18
j'ai remis la ligne comme au départ :
arrondi(1+NpartDéc(E/N),0->E)
et j'ai ajouté
0-> L4(1)
0-> L5(1)
0-> L6(1)
au début du programme
et quand je lance le niveau :
J'ai mon serpent formé de "degrès" (3)
et un trait qui bouge aléatoirement à chaque début de partie.
mais sinon, je n'ai rien à "ramassé"
donc.....je sèche xD
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Ven 25 Jan 2008, 20:51
Ba merde alors !! Pourquoi ça marche pas !!
T'as une 82 ?
Dès que j'aurais le temps, je revérifierai le code, mais là je comprends pas.
Sinon, t'es sur que pour lancer le jeu, tu lance bien "snake" et pas "[teta]snake” (on ne sais jamais… )
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Ven 25 Jan 2008, 21:39
Corrigé. (pour macwarrior, l'erreur se trouvait dans "[teta]snake", à la 14ème ligne).
PS, Ratuss, si tu m'indiques des erreurs, essaye de me dire approximativement où elles se trouvent (au moins dans quel programme).
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 29
Inscrit le : Mer 17 Oct 2007, 18:35
Posté le : Sam 26 Jan 2008, 15:17
Salut, merci de votre aide !!
Après correction des 2 lignes de (théta)SNAKE, voilà le résultat
Le jeu commence parfaitement, j'ai mon serpent, les cases à ramasser, pas de "trait" sur l'écran, mon serpent grossi bien quand je mange mes cases, mais..... et oui, encore un mais.....
Si, au moment ou je mange une case, mon serpent se trouve à l'endroit de la case suivante, celle-ci disparait.....
aussi, quand il se dirige vers le bas, on ne voit plus qu'un "demi-degrès".....
le "demi-degrès", ca ne me dérange pas, mais par contre, le bloquage de la case, c'est plus ennuyant.......
en jouant 5 fois, je n'ai pas réussi à passer au niveau suivant !! mdr
Autorisation : Membre
Nb de messages : 29
Inscrit le : Mer 17 Oct 2007, 18:35
Posté le : Mar 29 Jan 2008, 19:13
salut, j'ai retester le prog, toujours avec ce bug, très génant, et j'ai remarquer un autre bug.....
au bout d'une disaine de parties, j'i réussi à arriver à une longueur de 10 "degrès", mais pas de changement de niveau.......
est-ce le 1er bug qui cause celui-ci ou est-ce une erreur de recopiage???
voilà, merci, @++
Autorisation : Membre
Nb de messages : 30
Inscrit le : Sam 26 Jan 2008, 21:32
Posté le : Mer 30 Jan 2008, 12:39
Salut, voila j'aimerais savoir si ce jeu marche car je n'ai pas de cable et il est assez long a recopier.
Si quelqu'un la sur sa ti et qu'il marche sans bug se serait sympa de le dire ou au moins de presiser se qu'il ne va pas.
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Mer 30 Jan 2008, 15:31
Ouais, il marche à peu près correctement, il doit encore rester quelques petites erreurs de recopiages, mais tu peux le rentrer.
Je pense le vérifier de nouveau la semaine prochaine, et je te tiendrais aucourant des modifications.
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 29
Inscrit le : Mer 17 Oct 2007, 18:35
Posté le : Mer 30 Jan 2008, 18:33
Le bug, bah, c'est celui de la "case" à manger qui disparait car il apparait sur le serpent.
Par contre, en plus, même en réussissant à atteindre une taille de 30 cases, je ne passe pas au niveau supplémentaire..
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Mer 30 Jan 2008, 20:42
Citer : macwarrior
Le bug, bah, c'est celui de la "case" à manger qui disparait car il apparait sur le serpent.
Par contre, en plus, même en réussissant à atteindre une taille de 30 cases, je ne passe pas au niveau supplémentaire..
Non, en fait ça c'est normal, c'est un big que je n'ai jamais corrigé, car très rare !
Il n'y a que ça comme erreur ?
---------------------- Vive la programmation et vive le vibraphone !!!
Autorisation : Membre
Nb de messages : 1522
Inscrit le : Mer 01 Mar 2006, 20:41
Posté le : Mer 30 Jan 2008, 20:47
Citer
Non, en fait ça c'est normal, c'est un big que je n'ai jamais corrigé, car très rare !
très rare ?
il y a environ 150 cases maximum, si ton snake fais 40 de long, il ya une chance sur 4 pour que ca lui tombe dessus, (1 chance sur 4 à chaque pomme bien entendu)
a vrai dire c'est plutot l'inverse : le fait que cela n'arrive pas est très rare.
Autorisation : Membre
Nb de messages : 591
Inscrit le : Mer 04 Avr 2007, 13:29
Posté le : Mer 30 Jan 2008, 22:16
Non, c'est très rare car en fait la pomme ne peut tomber que sur une seule case du serpent (la dernière), les autres c'est pas possible. Donc ça fait une chance sur 150, c'est raisonnable.
---------------------- Vive la programmation et vive le vibraphone !!!