Page 1 of 1

snake

Unread postPosted: 20 Nov 2015, 18:16
by koalys
bonjour je cherche à crée un snake sur l’écran non graphique de ma ti 82 plus mais je n'arrive pas à faire avancer le snake automatiquement tout en gérant ses mouvements j'arrive soit l'un soit l'autre :'( pourriez vous m'aidez merci d'avance

Re: snake

Unread postPosted: 20 Nov 2015, 18:21
by critor
Salut !


Voici une façon parmi d'autres :
Code: Select all
While ...
    getKey->G
    If G
    Then
        G->K
    End
    X+(K=26)-(K=24)->X
    Y+(K=34)-(K=25)->Y
    ...
End


Si une touche est pressée, on enregistre son code dans K.
Si aucune touche n'est pressée, la valeur de K n'est pas modifiée, et le serpent continuera donc son mouvement précédent.

Re: snake

Unread postPosted: 20 Nov 2015, 18:31
by Hayleia
Une version de ce que fait critor qui utilise Ans (pour économiser une variable, et si ça se trouve c'est plus optimisé mais j'en sais rien, je fais pas de Basic très souvent) et qui ne prend en compte que les touches directionnelles (pour éviter les tricheurs qui appuieraient sur n'importe quelle touche pour arrêter le snake)

Code: Select all
While ...
    getKey
    If max(Ans={24,25,26,34:Ans→K
    X+(K=26)-(K=24)→X
    Y+(K=34)-(K=25)→Y
    ...
End

Re: snake

Unread postPosted: 21 Nov 2015, 09:24
by koalys
merci mais je ne comprend pas cette partie la
X+(K=26)-(K=24)→X
Y+(K=34)-(K=25)→Y

Re: snake

Unread postPosted: 21 Nov 2015, 11:12
by Epharius
Ça paraît compliqué mais ça ne l'est pas ;)
Ici on additionne (K=26)-(K=24) à la position X du snake. Qu est ce que ça veut dire ? Le getkey est une fonction qui sert à connaître la touche actuellement pressée. Dans notre cas on met cette valeur dans la variable K.

Si k=24 alors c'est la flèche gauche.
Si k=25 alors c'est la flèche haut.
Si k=26 alors c'est la flèche droite.
Si k=34 alors c'est la flèche bas.

A partir de la on peut faire un exemple et se demander ce qu'il se passera si le joueur appuie sur la touche flèche droite :
X+(26=26)-(26=24)
En simplifiant :
X+(1)-(0)
X+1

Si le joueur appuie sur la touche droite, alors la position X du joueur est incrémentée !

J'espère que cela t'aura aidé ;)

Re: snake

Unread postPosted: 21 Nov 2015, 11:35
by Wistaro
Quand une condition est vérifiée, elle vaut 1.
Par exemple, "(3 = 3) retournera toujours 1, alors que "(3=2)" retournera toujours 0. C'est le principe des booléens.
"(K=26)" retournera 1 si l'utilisateur presse la touche correspondante. Autrement, il va valoir 0.

Re: snake

Unread postPosted: 21 Nov 2015, 13:33
by koalys
merci beaucoup de votre aide 0:] et je vais essayer avec ça merci encore