Poster un nouveau sujet Poster une réponse
Snake
Auteur Message
Zatman



Autorisation : Membre
Nb de messages : 10
Inscrit le : Jeu 09 Jui 2011, 15:41
Posté le : Ven 21 Oct 2011, 19:41   Citer 

voila j'ai enfin réussi à faire un snake qui fonctionne, pas très efficace mais qui fonctionne:


Code

effecr
1->A
1->B
26-K
-1->W
lbl 2
W+1->W
output(8,1,W
entaléat(1,8->N
entaléat(1,16->M
output(N,M,"+

lbl 1
while K=26
codetouche->K
if K=0:26->K
output(A,B,"                \ un espace
B+1->B
if B=17:goto0
if N=A et M=B:goto 2
output(A,B,"*
for(Z,1,140
end
end



ensuite c'est la meme chose pour les trois autres directions et l'etiquette 0 affiche perdu.
Voilà mais le seul problème c'est que maintenant je suis confronté à pas mal de problème:
-quand le serpent mange une souris, il avance directement de deux cases, ce qui fait que quand une souris se trouve sur un bord, le serpent se "cogne" et là on a perdu
-j'aimerais bien faire en sorte que le serpent grandisse mais là je n'ai aucune idée de comment faire
-quand on appuie sur une autre touche que les flèches ça coupe la boucle et on ne peut plus rien faire, question: comment y remédier?
-et enfin j'aimerais savoir si il y a un moyen de le raccourcir au niveau des lignes (qu'il y est un moyen de faire une seul fois au lieu de 4 pour les 4 directions)

 Adresse email Haut de page Bas de page 
 
snap



Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Ven 21 Oct 2011, 19:52   Citer 

Salut! Pour les directions, tu peut mettre :


Code

:Codetouche -> K
:Output(A,B,"
:B+(K=26)-(K=24 -> B
:A+(K=34)-(K=25 -> A
:If B =    ou A=    : Goto 0   <-- tu met les valeurs pour lesquelles le serpent meurs
: La suite des instructions



Avec ce code, ton serpent peut se déplacer dans toutes les directions avec les flèches.

----------------------
Commence un monopoly non graphique et compte bien le finir!
Lycée de l'escaut Valenciennes happy.gif
Fan de reflets d'acide!
le meilleur jeu du monde
http://snap-le-terrible.minitroopers.fr
 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 21 Oct 2011, 20:58   Citer 

Sinon, pour la mort au bord : tu peut faire (j'intègre dessuite le code desnap):

Code
effecr
1->A
1->B
26->K
-1->W
lbl 2

:B-(K=26)+(K=24 -> B   //rajout ici
:A-(K=34)+(K=25 -> A   //rajout ici

W+1->W
output(8,1,W
entaléat(1,8->N
entaléat(1,16->M
output(N,M,"+

lbl 1
while 1         //ici modif
codetouche->K
:Output(A,B,"
:B+(K=26)-(K=24 -> B
:A+(K=34)-(K=25 -> A
:If B =    ou A=    : Goto 0   <-- tu met les valeurs pour lesquelles le serpent meurs

if K=0:26->K
output(A,B,"                \ un espace
B+1->B
if B=17:goto0
if N=A et M=B:goto 2
output(A,B,"*
for(Z,1,140
end
end



Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Zatman



Autorisation : Membre
Nb de messages : 10
Inscrit le : Jeu 09 Jui 2011, 15:41
Posté le : Ven 21 Oct 2011, 21:55   Citer 

d'accord, si j'ai bien compris le while 1 permet de faire une boucle infini (ça remplace la lbl 1 et goto 1)
Par contre j'ai pas compris ton message sandro, si je mets

Code
B+(K=26)-(K=24 -> B
:A+(K=34)-(K=25 -> A



pourquoi est ce que j'ai besoin de

Code

if K=0:26->K
output(A,B,"                \ un espace
B+1->B
if B=17:goto0
if N=A et M=B:goto 2
output(A,B,"*
for(Z,1,140



En fait si j'ai bien compris et recopié l'astuce de déplacement le serpent ne se déplace que quand on lui demande, et ça fait aussi un truc bizarre au niveau de l'espace, le serpent laisse des "traces" derrière lui.

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Sam 22 Oct 2011, 11:36   Citer 


Citer
d'accord, si j'ai bien compris le while 1 permet de faire une boucle infini (ça remplace la lbl 1 et goto 1)
Par contre j'ai pas compris ton message sandro, si je mets


Code
B+(K=26)-(K=24 -> B
:A+(K=34)-(K=25 -> A




Celui la n'est que pour combler le problème du double avancement dont tu te plaignais : si ça avance de 2 et que ça recule de 1, c'est comme si ça avançait de 1.

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes