Poster un nouveau sujet Poster une réponse
snake: probleme
Auteur Message
Zatman



Autorisation : Membre
Nb de messages : 10
Inscrit le : Jeu 09 Jui 2011, 15:41
Posté le : Jeu 09 Jui 2011, 16:10   Citer 

Bonjour,
Je suis nouveau sur le site, ça fait déjà quelques fois que je passe par là pour résoudre mes problèmes de ti, mais les sujets déjà existants n'ont pas réussi à éclairer ma lanterne ^^.
Alors voilà, comme tous débutant en programmation, j'ai décidé de me lancer dans la création d'un snake (originale n'est ce pas?)le problème constaté est que le snake n'avance que vers la droite:

Code


lbl 3
effecr
-1->W                                  //W est le compteur de point
4->C                                   //C: coordonnée verticale du snake
4->D                                  //D: coordonnée horizontale
26->K                                 //k sera le codetouche, donc le snake va à droite au début
Menu("snake","start",1,"quitter",2    //menu principal

lbl 2
effecr
output(1,1"                           // un espace
stop
lbl1
W+1->W
output(8,1,W                          // affiche le compteur de points en bas à droite
entaléat(1,8->E
entaléat(1,16->F                     //les coordonnées du point à manger

lbl5
output(E,F,"+
codetouche->K
if K=26
goto 8
if K=24
goto 99
if K=25
goto 9
if K=34
goto J
For(teta,1,140                   //boucle vide qui ralentit le serpent
End

lbl 8                            // etiquette pour aller à droite
output(C,D,"                     // un espace
1+D->D
if D=17
goto 0
output(C,D,"*
if C=e et D=F
goto 1
goto 5

lbl 99                            // etiquette pour aller à gauche
output(C,D,"                     // un espace
1-D->D
if D=0
goto 0
output(C,D,"*
if C=e et D=F
goto 1
goto 5

lbl 9                            // etiquette pour aller en haut
output(C,D,"                     // un espace
C-1->C
if C=0
goto 0
output(C,D,"*
if C=e et D=F
goto 1
goto 5

lbl j                           // etiquette pour aller en bas
output(C,D,"                     // un espace
1+C->C
if D=9
goto 0
output(C,D,"*
if C=e et D=F
goto 1
goto 5

lbl 0                          // quand on a perdu
effecr
output(1,1,"perdu
pause
goto 3



Désolé d'avoir fait n'importe quoi au niveau des étiquettes ^^
J'éspère que quelqu'un m'aidera, merci d'avance.

 Adresse email Haut de page Bas de page 
 
chr4
Invité
Posté le : Jeu 09 Jui 2011, 16:39   Citer 

salut,
alors déjà comme tu fais ton snake dans la "fenêtre de calcul" et pas sur l'écran graphique, tu vas perdre beaucoup de qualité. Bon, là-dessus, tu fais comme tu veux.
Ensuite, c'est bien pensé ! mais il te manque une boucle pour que ton serpent continue d'avancer "tant que" l'utilisateur n'aura pas modifier sa trajectoire.
Je me trompe ?
Si j'étais toi, je rajouterai un truc du type :


Code
:while (variable 'f'si jamais il perd)
:if (variable signifiant la direction droite)
:then
:(instruction pour modifier la position. Donc effacement, taille, x,y)
:end            #tu met sa 4 fois pour chaque direction
:  (insertion du code si jamais il perd. La variable 'f' devient 0)
:   (code Touche + for (10 tours)devant pour que le joueur puisse au mieux prendre son temps.
:(traitement des données du code touche, vide le cas échéant)
:(les trucs 'en plus' (score...))
:End



  Haut de page Bas de page 
 
Zatman



Autorisation : Membre
Nb de messages : 10
Inscrit le : Jeu 09 Jui 2011, 15:41
Posté le : Sam 11 Jui 2011, 1:57   Citer 

désolé mais j'ai pas tellement compris ta solution à mon problème, si tu pouvais me le faire pour l'une des directions, comme exemple, ce serait bien sympa.
Merci

 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 : Sam 11 Jui 2011, 11:11   Citer 

D'abord une question, pour bien pouvoir comprendre le programme : les "e" sont-ils la même variable que "E" (faute de frape) ou le "e" minuscule que l'on optient depuis le clavier (valent 2.7...)?

Sandro

----------------------
mort à l'inutile, place à la mémoire libre et aux programmes
 Adresse email Haut de page Bas de page 
 
cam!
Invité
Posté le : Sam 11 Jui 2011, 20:06   Citer 

Voici UNE proposition parmi tant d'autres.
D'abord, selon moi :
- tu mes au debut un "while 1"et a la fin
Un "end"
Entre le "while 1=1" et la fonction "code touche->k" tu mets les evenements,etc...
Exemple:

While 1=1 //Tant que 1 est egal a 1
//Tu dessines ton serpent et tu mets des conditions
Output(Y,X,"O
Output(1,1,"PAS:"
Output(1,5,P
codeTouche->K
If K=24 ou K=25 ou K=26 ou K=34:Then:Output(Y,X," "tongue.gif+1->P:End
If K=24:X-1->X // pas de goto 1 ni rien. On laisse simple.
If K=25:Y-1->Y
If K=26:X+1->X
If K=34:Y+1->Y
/*
Ici tu mets les conditions
*/
End // le fameux "end".

  Haut de page Bas de page 
 
Zatman



Autorisation : Membre
Nb de messages : 10
Inscrit le : Jeu 09 Jui 2011, 15:41
Posté le : Lun 13 Jui 2011, 16:54   Citer 

Désolé pour la faute de frappe mais c'est bien un E majuscule, soit la case mémoire qui correspond à une des coordonnées du point à avaler.
Sinon pour le boucle While, cam, tu n'as pas ecris le cas où le joueur perd, je dois plus utiliser d'étiquettes c'est ça? Parceque j'ai peur que sans les étiquettes il affiche perdu et comme la boucle while est infinie, il affiche une erreur domaine juste après.
dernier point: j'ai pas compris l'utilité du Output"pas

 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 : Sam 08 Oct 2011, 14:37   Citer 

Salut! désolé de relancer un sujet pas mal ancien mais en fait j'ai toujours pas résolu mon problème, si qqun pouvait me faire une des directions avec la fonction while ou alors m'envoyer le lien d'un snake basique (sur l'écran d'affichage, et sans trop de complications ce serait sympa)

 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