mon programme est bugé et je n'arrive pas à résoudre le prob
Posté le 20/01/2015 00:18
bonjour,
j'ai laissé mon autre projet de côté (celui sur lequel j'avais demandé de l'aide parce que je savais pas faire baisser ma barre de vie) car je ne sais plus trop quoi faire dessus pour l'instant, pendant ce temps j'ai donc commencé un jeu Snake, mais mon jeu est bugé (+ j'ai une petite question pour la suite)
voici mon code :
[brown]Cls[/brown]
Int (110Ran# )→A
Int (50Ran# )→B
[b][brown]PlotOn[/brown][/b] A,B
29→Y
40→X
3→D
[b][blue]Do[/blue][/b]
[b][brown]PlotOn[/brown][/b] X,Y
GetKey→G
G=[maroon]38[/maroon]⇒1→D
G=[maroon]28[/maroon]⇒2→D
G=[maroon]27[/maroon]⇒3→D
G=[maroon]37[/maroon]⇒4→D
D=[maroon]1[/maroon]⇒X-1→X
D=[maroon]2[/maroon]⇒Y+1→Y
D=[maroon]3[/maroon]⇒X+1→X
D=[maroon]4[/maroon]⇒Y-1→Y
[b][blue]If[/blue][/b] X=A And Y=B
[b][blue]Then[/blue][/b]
Int (110Ran# )→A
Int (50Ran# )→B
[b][brown]PlotOn[/brown][/b] A,B
[b][blue]IfEnd[/blue][/b]
[b][blue]LpWhile[/blue][/b] [maroon]1[/maroon]=[maroon]1[/maroon]
le bug c'est que quand la tête de mon serpent (dont les coordonnées sont X et Y) touche le fruit (enfin un pixel dont les coordonnées sont A et B) un nouveau nombre est généré qui seront les coordonnées d'un nouveau fruit, et un point est créé en coordonnées A,B... mais à ce moment là les coordonnées X et Y de la tête de mon serpent deviennent les même que les coordonnées du nouveau fruit et je ne sais pour quel raison, j'aimerais savoir comment empêcher cela et faire en sorte que mon serpent arrête de se prendre pour un ninja et continue son chemin normalement, aidez moi svp.
pour vous aider je vais vous expliquer ce que moi j'ai voulu faire:
Int (110Ran# )→A
Int (50Ran# )→B
au début créent pour la première fois les coordonnées d'un premier fruit, celui ci est affiché à la ligne suivante:
PlotOn A,B
29→Y et 40→X sont les coordonnées de départ que j'ai choisi pour la tête de mon serpent
3→D D est la direction dans laquel mon serpent se déplace (1 pour la gauche, 2 pour le haut, 3 pour la droite et 4 pour le bas) une fois dans la boucle les coordonnées de X ou Y sont modifié selon la valeur de D:
D=1⇒X-1→X
D=2⇒Y+1→Y
D=3⇒X+1→X
D=4⇒Y-1→Y
PlotOn X,Y est au début de la boucle, le point créer représente la tête du serpent
Getkey→G pour modifier la valeur de G qui changera la valeur de D avec ces 4 lignes :
G=38⇒1→D
G=28⇒2→D
G=27⇒3→D
G=37⇒4→D
je n'ai pas fait directement
G=38⇒X-1→X
G=28⇒Y+1→Y
G=27⇒X+1→X
G=37⇒Y-1→Y
pour éviter que le fait d'appuiller sur une autre touche que les flèches fasse arrêter le serpent, et aussi car je pourrais ajouter d'autres choses qu'un simple déplacement du serpent pour rendre mon jeu Snake unique
If X=A And Y=B
Then
Int (110Ran# )→A
Int (50Ran# )→B
PlotOn A,B
IfEnd
LpWhile 1=1
la condition n'est rempli seulement si la tête de mon serpent se trouve sur le même pixel que le fruit, si cela se produit un nouveau fruit est créé a de nouvelles coordonnées (et c'est là que ca commence à faire n'importe quoi).
merci d'avance pour votre aide
ensuite ce n'est plus en rapport avec ce problème mais j'aimerais savoir comment faire pour effacer la queue de mon serpent, j'aurais par exemple une variable T qui sera la taille en pixel de mon serpent et des pixels seront effacé de sorte à ce que mon serpent ne dépasse jamais cette taille, et le dernier point, c'est que je ne sais pas comment faire savoir à mon programme que la tête de mon serpent touche ça queue si cela arrive pour le faire perdre, j'ai vu dans le menu du SHIFT+F4 une fonction "PxlTest(" j'ai pensé que ça pourrait m'aider si son utilité est celle que j'imagine (le nom me ferais penser qu'il serais possible de vérifier si un pixel à telles coordonnées est allumé ou pas), si c'est une bien comme ca qu'il faudrais le faire pouvez vous m'expliquer comment l'utiliser dans mon programme ?
merci d'avance (encore une fois)
Citer : Posté le 20/01/2015 07:00 | #
À tous les coups, c'est que les variables X et Y sont utilisées "en interne" par la machine quand tu utilises les fonctions graphiques (Plot-On par exemple), du coup tu peux essayer de remplacer X et Y par deux autres variables pour voir ce que ça donne déjà, car je ne suis pas sûr à 100% de ce que j'avance ^^...
Pour la deuxième question, je suis sur un portable donc c'est pas trop évident pour l'instant de répondre, mais tu devrais en savoir plus rapidement.
Citer : Posté le 20/01/2015 07:36 | #
Merci Nemhardy, je vais essayer déjà essayer ça, et pour la deuxième question je ne pourrais pas voir directement après que tu y ais répondu, donc merci d'avance
Ajouté le 20/01/2015 à 18:11 :
j'ai essayé de changer les variables de la tête de mon serpent, j'ai choisi K et L et ca marche, merci