Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 3781
Réponses : 18
Type : discussion
Etat : réponses autorisées

Besoins d'aide pour programation snake

harven le 24/08/2010 à 10:55
bonjour a tous je suis nouveau sur le site ( fraichement inscrit ) et j'aurai besoins d'aide pour la programation d'un petit snake tous simple ( sans le labi qui va avec )mais avec un compteur de poin qui va jusqu ... bha jusqua qu'on perde et avec le snake qui "grandi de 1" quand il mange un " souris " ( ou avec la queud qui ne s'efface pas ou avec la queud qui s'efface ).
voici ce que j'ai reussi a faire :
- arriver a faire bouger un rond sur l'ecran avec les touche haut bas gauche droite cry.gif

ps : j'ai pas de cable et j'ai une 82

autre ps : comment vous faite pour que quand vous ecrivez les code , qu'il soit dans un carré "gris claire" .

bha voila c'est tous et sinon j'avait un plus moins a presenter mais il a ete efface quand les pile son morte ( il y avait 6 niveu de difficulté )et j'ai bien parcouru les forum et vu les niveau de certain il se pourait qu'il on des chose a m'apprendre ( beaucoup de chose ) et une derniere chose , je n'arrive pas a codé le graphique ( a par le stylo ) mais les autre outils ... idem pour les getkey ( j'arrive un petit peu )

bon bha c'est tous happy.gif
a+

harven
Sangohan38 le 24/08/2010 à 11:09
Bonjour Harven.

On va commencer par deux petites remarques qui font tellement mieux lorsque elles sont suivies:
-Une phrase commence par une majuscule et se termine par un point.
-Essaye d'aérer ton texte et de le structurer un peu plus (les PS(=post-scriptum) se placent à la fin du post par exemple).

Pour que le code soit dans un carré gris clair, on utilise la balise code qui se trouve au dessus de la zone d'édition.
Ensuite, si tu pouvais reformuler tes questions de façon claire, on pourrait sans doute y répondre mais là je ne les vois pas.

Sangohan38
harven le 24/08/2010 à 11:45
Bon globalement ce que je recherche :

- Je recherche de l'aide pour la programation d'un snake.

- Je recherche egalement de l'aide pour mieux comprendre l'utilisation des getkeys et de la fonction "draw" dans un programme.

Pour le programme sanke j'ai deja fait :

- Un programme ou on peu deplacer un rond sur l'ecran de la ti 82.

Et je recherche :

- Une fonction pour placer aleatoirement une "souris" que le snake devras mangé.
- Une autre pour compter les points.

- Et un pour faire grandire mon snake au fur et a mesure qu'il mange des "souris" / Ou plus simple : Que le snake ne s'efface pas durant la partie.

Ps : Je n'ai pas de cable ti / pc
a+

Harven.
darkmory le 24/08/2010 à 11:56
- getkeys permet de stocker la valeur de la touche sur laquelle tu appuie dans une variables
Code
Ex: getkeys -> K

il va stocker le code touche (la valeur numériques de la touche) dans K
ce qui permets des tests après
Code
Ex: If K=72
    Then...

-pour la souris tu peut utiliser deux rand qui donneront les coordonnés de la souris
Code
Ex: rand(1,40) -> A
    rand(1,40) -> B
    output(A,B,[couleur=#55FF55](ta souris)[/couleur])

-pour les points tu fais un test si ton serpent est sur la souris tu gagne un points
Code
Ex: If (ton serpent)= (ta souris)
    Then
    rand(1,40) -> A
    rand(1,40) -> B                        //une nouvelle souris apparait
    output(A,B,[couleur=#55FF55](ta souris)[/couleur])
    P+1->P                 // +1 pts
harven le 24/08/2010 à 12:05
Merci c'est tres simpa de part.
Mais sinon pour la fonction "draw" , aurais tu des indication a me donner ?
( J'arrive tous de meme a faire les contour de l'ecrans avec "horizontal" et "vertical".
a+

Harven
Sangohan38 le 24/08/2010 à 12:14
Pour expliquer une fonction, rien ne vaut le site du zéro.
Pour placer aléatoirement un point, utilise la fonction int(rand X+1 où X est soit la longueur de ton écran soit la largeur.
Pour compter les points tu peut rajouter une condition du style:
Code

If A=X and B=Y <-- où ( ) A et B sont les coordonnées de ton serpent et X,Y celles de ta souris
S+1->S  <-- on ajoute 1  à la variable S qui sera ton score
...
...  <--- le reste de ton programme jusqu'à ce que l'on perde
Disp S  <--- on affiche le score


Sangohan38
harven le 24/08/2010 à 12:31
Merci bien mais le site du zero je connait et j'ai deja vu ce tuto ( qui ma d'ailleurs permi de commencer la programation ).
Et j'aurai besoin de trois derniere chose :

- Une fonction qui permet de faire perdre la partie quand le snake se mange et afficher "game over" au milieu de l'ecran.

- Une autre pour faire grandire de 1 le snake quand il mange une souris.

- Optionnel * : un menu de jeu plus beau.

a+

Harven
harven le 24/08/2010 à 13:19
Et ou je peut trouver la fonction "str" ou "chaine" en francais ?

Ps : J'ai une ti 82.
a+

Harven
darkmory le 24/08/2010 à 13:30
- pour le game over c'est casi comme la souris mangé
Code
 Ex: If (ton serpent)= (le mur)
     Disp "Game over"


-pour le menu utilise la fonction menu
Code
 PROG + C
harven le 24/08/2010 à 13:50
Mais la touche "str" ou "chaine" en francais ?
Je la trouve ou ?

Harven
Sangohan38 le 24/08/2010 à 13:50
Sur la 82 non stats, il n'existe pas de fonctions équivalente aux chaines.

Sangohan38
harven le 25/08/2010 à 13:43
J'ai codé un snake, voici le code :

Code
Lbl 0
Clrhome
1#X:1#Y
1#A:1#B
Repeat K=45                 //// Dsl sinon quand je met " repeat (C=X and D=Y) ca marche pas.
Output(Y,X,"0"
Output(Y,X,"0"
Y#A:X#B
getkey#K
X-(K=24)+(K=26)#X
Y-(K=25)+(K=34)#Y
if X=0:1#X                 
if X=17:16#X
if Y=0:1#Y                ///// Il delimite les bord de l'ecran
if Y=9:8#Y
int rand(8#C
int rand(16#D
output(B,A,"o"           [couleur=#FF0000]<- erreur domaine [/couleur]
if (X=D and Y=C
P+1#P
goto 0
end





Voila , comme vous pouvez la voir ... il est nul cry.gif mais ca ma met erreur domaine a la ligne marquer .(les "#" sont l'equivalent de "sto ->" )
Aider moi please.

A+

Harven.
Sangohan38 le 25/08/2010 à 14:01
Une erreur qui est possible c'est lorsque tu déplace ton curseur hors de l'écran le A et le B n'ont pas le temps d'être modifiés et rerstent à 0.
Place ta ligne Y->B:X->A avant le Output.
Et aussi, tu as inversé B et A dans ton output car le premier argument est la ligne et le second la colonne.

Sangohan38
harven le 25/08/2010 à 15:44
J'ai suivi tes conseil mais maitenant le curseur du snake ne bouge plus .
homer__simpsons le 22/12/2010 à 11:25
Ah la la.. le vieux truc le snale!!

J'en ai fait un mais avant j'avais fait un teleport: Atteindre un point...

Le code qui permet de faire mon snake: (Il y a plein de truc autour mais c'est trop long a recopié!!)

Code

:o->Xmin:0->Ymin
:94->Xmax                  //je definis le graphe!
:62->Ymax
:ClrDraw
:AxesOff
:0->R                     //0 Pommes
:1->D                     // initialisation de ces deux variables
:1->E                               utiles pour la suite
:31->A                    // A et B coordonnées tête serpent
:55->B
:24->Z                    // variable de deplacement
1->I                                  //endroit de lecture
1->dim((petit L [liste])Ordpi         //ordonnée
1->dim((petit L [liste])Abspi         //abscisse
:Repeat 0                 //Boucle infini
:Repeat pxl-test(A,B      ..Repeter jusqu'a ce que ce pixel soit allumé
:(petit L [liste])Ordpi(I->D          //on recupere la position du pixel
:(petit L [liste])Abspi(I->E           de la queue
:A->(petit L [liste])Ordpi(I          //on enregistre la position du pixel
:B->(petit L [liste])Abspi(I           de la tete
:I+1->1                               //on change l'endroit de lecture
:If I)R+2:1->I                        //si on sort de la dimension de la liste
:GetKey                                      on retourne au debut
:If Ans:Ans->Z           //si on a appuyé sur une touche on enregistre la quelle
:Pxl-on(A,B              // On allume le pixel de la tête
:B-(Z=24)+(Z=26)->B     //on dit la ou la tete va
:A-(Z=25)+(Z=34)->A
:Pxl-Off(D,E            //On eteint le pixel de la queue
:End                    //fin du pixel test
:If A=C and B=F         //Si la tête est a l'endroit de la queu
:Then
:While pxl-test(C,F     //repeter jusqu'a ce que ce pixel soit eteint
:randint(1,61->C        //on met la souris a n'importe quel endroit
:randint(1,65->F           (1,65 et 1,61 peuvent etre changé: c'est pour ma
:End                                          fenetre
:R+1->R                  //Plus une pomme
:PxlOn(C,F               //on montre ou est la souris
:R+1->dim((petit L [liste])Abspi      //on redimensionne les listes pour
:R+1->dim((petit L [liste])Ordpi        permettre eu snake de grandir
:Else                //si t'es pas sur la pomme
:Text(27,30,"GAME OVER
:ClrList ((petit L [liste])Abspi     //On effance les listes pour prendre   
:ClrList ((petit L [liste])Ordpi         moins de place
:Text(35,30,"Score:",R
:Pause
:End
:End


N'hesitez pas a me poser des questions!! Jes suis sur un autre forum aussi:
http://www.texas-intrument.xooit.fr

j'espere avoir était assez clair...j'ai pas recopier tout mon code il fait au moins le double... Mais j'ai recopier l'essentiel...

J'ai alleger au maximum mon code et est cherché la vitesse: Certains endroits seront peut-etre incomprehensible pour certains... Dites moi ou ils sont!!
Sangohan38 le 22/12/2010 à 21:03
A mon avis, ce code n'est qu'un copier/coller d'un site car vu le nombre d'erreur de syntaxe et d'optimisation...
Notamment les Ordpi, Abspi qui ne veulent rien dire, le I)+2 qui doit donner une jolie erreur de syntaxe et enfin:

Code
:GetKey
:If Ans:Ans->Z


qui peut être remplacé tout simplement par:

Code
GetKey->Z


Et pour finir, ici c'est un sujet pour aider à créer un snake, pas pour venir se la péter en montrant celui qu'on à créé.

Sangohan38
eracro le 05/10/2011 à 21:24
salut,
dans ma programation de snake il m'ont marque erreur argument au 1er "if" je ne comprend pas pourquoi ? angry.gif
de plus esce normal que quand je fais 2nde 6 il marguent l6 et pas liste ?
aussi a un moment il mettent [pas egal a ] esque s'est pareil si on met le = barre?
aidez moi s'il vous plaits !!!! bigmouth.gif
sandro le 05/10/2011 à 21:30
C'est celui là le snake dont tu parle ou c'est juste encore un autre multi-post? maxiangry.gif
Persalteas le 06/10/2011 à 15:08
je t'ai répondu sur espace TI.

Et oui c'est normal le L6.

Rappelle toi un truc: Il y a très rarement une truc écrit en toutes lettres en français dans un code pour Ti 82.