Des conseils pour créer un jeu Snake ?

Général

ObudShaer

il y a 5 ans

Bonjour à tous ! 

Voilà je souhaite commencer mes petits jeux vidéos, et je souhaite débuter en faisant un petit jeu simple : le Snake 

Le soucis c'est que je ne sais pas trop par où commencer, du coup pourriez vous m'aider en me disant par où débuter, que faire en premier etc...

Vos conseils seront très utiles :D

Bonne journée !

jicehel

NEW il y a 5 ans

Bonjour ObudShaer, je ne sais pas trop du coup où tu en est au niveau programmation mais déjà, je pense que tu as déjà lu les tutos: https://gamebuino.com/academy/workshops

C'est tout bête mais c'est important de commencer par les lire: dans le hello World, tu vas comprendre la structure de base des programmes, l'usage des commentaires, etc... PS: Les commentaires sont principalement pour toi dans un premier temps et aussi pour les autres qui reliront ton programme alors si tu as un anglais courant, tu peux les faire en anglais mais bon si tu ne te sent pas à l'aise avec l'anglais, fais les en français, on s'en tape. Ce qui compte c'est de tracer le pourquoi des choses.

Selon ton niveau de programmation, fais ou pas le compteur d'invité. C'est pour apprendre à utiliser les variables et les structures conditionnelles donc si tu connais déjà, tu peux passer par contre, le suivant: balle rebondissante tu dois le faire car il va pouvoir te servir directement pour ton programme pour apprendre comment dessiner un point de ton serpent (la balle, ce serait un peut comme la tête ou un des anneaux de ton serpent)

Pour terminer, avec l'exemple du Pong, tu verras comment gérer les touches et les collisions.

Voilà, avec ces tutos, tu as presque tout pour faire ton snake.

Dans ton programme tu dois aussi utiliser le tirage aléatoire pour faire apparaître les objets à ramasser

Apprendre à utiliser les tableaux pour stocker la position des anneaux de ton serpent, la position des objets à ramasser, ...

Je serais toi dans un premier temps, je ferais simple: un point que je contrôle à l'écran avec les touches et qui se bloque sur les bords.

Après, je rajouterais la sauvegarde des anneaux (la position de la tête au moment où il y a un nouvel anneau à ajouter) et modifier le boucle d'affichage pour afficher tous les points du tableau (tu peux utiliser un compteur nb_anneaux par exemple)

Tu porras changer la gestion des collisions avec les bord pour que si le serpent sort de l'écran le jeu soit terminé puis ajouter les objets à ramasser et la gestion des scores.

Après, tu pourras remplacer l'affichage des carrés de ton jeu par de jolis sprites si tu le souhaites pour ton serpent et les pommes ou autres objets à ramasser. Si tu le souhaites tu peux faire tout ça sur un fond et ajouter une musique et des sons pour donner un aspect plus pro à ton jeu, sauvegarder les scores, un menu d'options avec démarrer le jeu, voir les scores,.... ajouter un écran de démarrage, la gestion de la mise en pause du jeu, des sons quand certains événements se produisent (sortie de l'écran, ramassage d'un objet, petit son quand un nouvel anneau apparait, etc...)


Voilà, j'espère que ça t'aidera un peu mais ce sont de grandes lignes. On pourra t'aider ponctuellement en cas de problème (même si de mon côté, j'ai commencé il n'y a pas longtemps ;) )

Come

il y a 5 ans

Merci sa va m’aider je pense ?

ObudShaer

il y a 5 ans

Salut ! Merci pour tes informations très utiles ! :D

Mais dis moi, j'aimerai que le serpent avance tout seul et on ne peut que le faire changer de directions sais tu quel code faut-il appliquer pour faire cela ?

Come

NEW il y a 5 ans

jicehel jicehel

Merci sa va m’aider je pense ?

ObudShaer

NEW il y a 5 ans

jicehel jicehel

Salut ! Merci pour tes informations très utiles ! :D

Mais dis moi, j'aimerai que le serpent avance tout seul et on ne peut que le faire changer de directions sais tu quel code faut-il appliquer pour faire cela ?

jicehel

il y a 5 ans

oui pour qu'il avance tout seul, tu gères les déplacement à chaque boucle en avançant dune vitesse définit sur l'axe des x et sur l'axe des y...

Bon, ce n'est peut être pas très clair alors je développe.

Par défaut, au début ton serpent est à l'arrêt et dès que tu appuie sur une touche, il démarre.

Tu définis une vitesse de déplacement que je vais appeler v (tu remarqueras mon sens aigu de l'imagination, quand même ...  :) )

Si tu cliques sur haut, tu mets vx à 0 et vy=-v si tu cliques sur bas, tu mets vx à 0 et vy à v, si tu cliques à gauche, tu mets vx = -v et vy = 0 et devines, à droite ? ben ça donne vx = v et vy = 0... 

Tu gères tes touches à chaque tour et après tu gère le déplacement de ton serpent avec x=x+vx et y=y+vy, puis fais tes tests et si le déplacement est permis tu dessines ton serpent sinon tu gères l’empêchement: perte d'une vie ou autre selon le gameplay que tu as défini. 

Voilà, j'espère que ça répond bien à ta question mais s'il y a encore des zones d'ombres, demandes et j'essayerais d'y répondre (si personne n'a répondu avant)  ;)

jicehel

NEW il y a 5 ans

ObudShaer ObudShaer

oui pour qu'il avance tout seul, tu gères les déplacement à chaque boucle en avançant dune vitesse définit sur l'axe des x et sur l'axe des y...

Bon, ce n'est peut être pas très clair alors je développe.

Par défaut, au début ton serpent est à l'arrêt et dès que tu appuie sur une touche, il démarre.

Tu définis une vitesse de déplacement que je vais appeler v (tu remarqueras mon sens aigu de l'imagination, quand même ...  :) )

Si tu cliques sur haut, tu mets vx à 0 et vy=-v si tu cliques sur bas, tu mets vx à 0 et vy à v, si tu cliques à gauche, tu mets vx = -v et vy = 0 et devines, à droite ? ben ça donne vx = v et vy = 0... 

Tu gères tes touches à chaque tour et après tu gère le déplacement de ton serpent avec x=x+vx et y=y+vy, puis fais tes tests et si le déplacement est permis tu dessines ton serpent sinon tu gères l’empêchement: perte d'une vie ou autre selon le gameplay que tu as défini. 

Voilà, j'espère que ça répond bien à ta question mais s'il y a encore des zones d'ombres, demandes et j'essayerais d'y répondre (si personne n'a répondu avant)  ;)