le jeu du serpent tft get pixel color

hello les amis

suite à un post de GREG06, je m'amuse à coder le jeu du serpent sur un écran utft 320 x240 8753B et méga 2560

c'est presque terminé. je bute sur une fonction que je croyais courante et pourtant je ne parviens pas à trouver le renseignement.

je plante le décor:
le serpent avance et trouve une pomme sur sa route.
le serpent doit avaler la pomme et grandir de 2 "pions"

le prg calcule la nouvelle case pour la tête du serpent et regarde si la case est vide.

je pensais pouvoir tester si la case ( un pixel ) était d'une couleur ( jaune par exemple) et si oui, c'est qu'il y a une pomme .

je trouve bien l'instruction "drawPixel(x,y,color)"ou "setPixel(x,y,color)"

pas pas de getPixel(x,y) ou "getColorPixel(x,y)"

pouvez vous me dire
si vous connaissez une fonction qui ferait ce test au niveau du pixel ?
ou si vous opteriez pour une autre solution? sachant que je prefererai éviter de faire une mémorisation de la carte des pommes sous forme de tableau. ( place mémoire et vitesse d'exécution).

Ce sera toujours plus lent d'aller extraire du screenbuffer la couleur d'un point plutôt que de conserver les coordonnées x/y de Vos "pommes" dans un tableau (vous n'en n'aurez pas bcp) au moment où vous les rajoutez (j'imagine comme vous le faites pour le corps du serpent)

@ JML
merci de ta réponse.
en attendant, j'ai effectivement terminé le prg avec un tableau

le prg tourne bien
j'ai utilisé un mini joystick ( deux potars dont les point milieu sont sur A0 et A1)
attention j'ai un écran 320X240 piloté par 8357B
j'utilise donc la bibliothèque qui va avec.

snake_v_6_utft_8357.zip (1.68 KB)

TFT_HX8357-master.zip (819 KB)

sympa d'avoir posté

vous ne devriez pas appeler lecture_BP(); que si le timeout est expiré (dans le if (millis() - previousStepTime >= gameSpeed), les boutons devraient être accessibles en permanence - vous gagnerez en réactivité (attention aux rebonds)

et la fonction deplacement_serpent() gagnerait à être gérée sous forme d'un buffer circulaire plutôt que déplacer tous les éléments du tableau - sinon au lieu de faire les 2 boucles for, n'en faites qu'une et je ne suis pas sûr que l'indice max de la boucle doive être tailLength + 1 avec un <[color=red]=[/color] (enfin sauf qu'on dirait que vous n'utilisez pas la case zéro?)

@ JML
merci pour tes remarques

je viens de faire une vidéo de ce que ça donne
ICI

Sympa - vous ne trouvez pas que vous manquez de réactivité sur les contrôles des boutons?

hello JML
je vais me pencher sur cette modification de la lecture des "BP" qui sont en réalité des potentiomètres
( donc pas de rebonds )
c'est un mini joystick.
dès que c'est fait je reposterai le code modifié

Hello, j'ai un jeu similaire dont tu peux t'inspirer si nécessaire : :slight_smile:

https://forum.arduino.cc/index.php?topic=480025.0

hello,merci à toi.
je ne connaissais pas cette version du jeu
1/ à 2 serpents.
2/ avec possibilité de tir sur les cibles ou l'autre serpent.

dfgh:
hello,merci à toi.
je ne connaissais pas cette version du jeu
1/ à 2 serpents.
2/ avec possibilité de tir sur les cibles ou l'autre serpent.

C'est une amélioration que j'ai faite. J'avais fait un PONG à 2 joueurs, et donc j'avais déjà codé pratiquement tout. J'ai juste eu à reprendre des bouts de code (gestion des manettes, du tir, etc)