Releases: Klaynight-dev/Snake_Auto
Releases · Klaynight-dev/Snake_Auto
Snake_Auto V3.0
Note de version pour la v3
Nouvelles fonctionnalités
- Ajout d'un deuxième code nommé
propal2.cavec un autre type d'algorithme. - Ajout de messages de fin avec les temps CPU et le nombre de mouvements.
- Optimisation importante (~ -100 mouvements).
- Utilisation de l'algorithme A*.
Améliorations
- Optimisation de plusieurs parties du code.
- Optimisation de la gestion de donnée.
Corrections de bugs
- Correction du bug de fin où le serpent heurte un mur en raison de l'absence de pommes.
- Correction des bugs dans le header
defconst.h. - Correction des warnings engendré par la mise en place de a*.
- Correction des bugs de game over du paramètre -a (désactivation de l'affichage).
Autres changements
- Ajout de nouveaux fichiers header.
- Ajout d'arguments pour le main (-h, -v, -s, -a).
- -h : Similaire à la commence
help, permet d'afficher tous les paramètres avec se qu'il font. - -s : Activer le mode speedrun (delay plus rapide)
- -d : Activer le mode debug, une barre en bottom qui permet d'afficher les informations de développement du snake comme le temps CPU ou encore le nombre de mouvement.
- -v : Affiche la version actuelle du code
- -a : Desactiver l'affichage afin de se concentrer sur le temps CPU
Pour plus de détails, vous pouvez consulter les commits et la pull request.
Full Changelog: V2...V3
Snake_Auto V2.0
Date de publication : 12 décembre 2024
Auteurs : Gabriel Gourdon et Elouan Passereau
Résumé
Cette version introduit un jeu "Snake" basé sur des comparaisons d'approches algorithmiques. Le jeu est conçu pour être exécuté à l'aide du compilateur GCC. Il met l'accent sur la jouabilité avec une IA simplifiée et des mécaniques de jeu classiques enrichies.
Nouvelles fonctionnalités
- Éléments de jeu :
- Gestion des pommes (10 au total) avec une détection optimisée.
- Génération de trous dans les bordures pour améliorer le gameplay.
- Ajout de bordures et d'obstacles statiques pour délimiter le plateau.
- Comportement du serpent :
- Déplacement contrôlé avec une logique d'IA basique.
- Collision détectée avec précision (corps, murs, obstacles).
- Gestion de la victoire après avoir mangé toutes les pommes.
- Interface utilisateur :
- Affichage des informations en temps réel (score, mouvements, temps écoulé, position, direction, position des pommes).
- Messages personnalisés en cas de victoire, défaite ou sortie volontaire.
- Performances :
- Accélération de la vitesse du serpent pour simuler un challenge progressif.
- Calcul du temps CPU utilisé.
Améliorations
- Réduction de la complexité de certaines fonctions (par ex. gestion des directions et détections).
- Optimisation de la gestion des coordonnées et des collisions.
- Ajout d’une gestion des événements clavier robuste.
Problèmes connus
- Bug mineur : Le serpent peut se heurter à un mur lorsqu'il tente de réintégrer un trou après avoir mangé la première pomme. (TODO mentionné dans le code).
Instructions d'utilisation
Pour compiler et exécuter :
- Compiler avec la commande :
gcc ./version2.c -Wall -lm -o snake_game
- Lancer l'exécutable généré :
./snake_game
Perspectives
- Résolution du bug mentionné.
- Ajout de niveaux supplémentaires avec des obstacles dynamiques.
- Implémentation d’une IA avancée pour le serpent.
Snake_Auto V1.0
Fonctionnalités de base :
-
Plateau de jeu :
- Dimensions : 80 caractères de largeur et 40 caractères de hauteur.
- Bordures représentées par des
#. - Plateau vide, sans obstacles.
-
Le serpent :
- Taille fixe de 10 unités.
- Tête représentée par un
O, et les neuf anneaux suivants par desX. - Initialement positionné en (40, 20) et orienté vers la droite.
- Peut se croiser lui-même ou faire demi-tour.
-
Les pommes :
- Représentées par un
6. - Les positions des pommes sont fournies par deux tableaux :
int lesPommesX[NB_POMMES] = {75, 75, 78, 2, 8, 78, 74, 2, 72, 5}; int lesPommesY[NB_POMMES] = { 8, 39, 2, 2, 5, 39, 33, 38, 35, 2};
- Les pommes doivent être mangées une par une.
- Représentées par un
-
Déplacements et temporisation :
- Le serpent se déplace automatiquement pour manger les pommes.
- Temporisation de 200000 microsecondes entre deux déplacements.
- Le jeu s’arrête si toutes les pommes sont mangées ou si l'utilisateur appuie sur la touche
a.
-
Affichage des résultats :
- Nombre total de déplacements réalisés.
- Temps CPU consommé par le programme.
Contraintes techniques :
- Le serpent doit fonctionner avec des coordonnées de pommes données dynamiquement (les tableaux sont donnés à titre d'exemple).
- Le programme doit s'arrêter correctement après avoir mangé les 10 pommes.
- Code source conforme aux conventions de codage (commentaires, indentation, constantes, etc.).