Skip to content

Releases: Klaynight-dev/Snake_Auto

Snake_Auto V3.0

13 Jan 09:37
7989911

Choose a tag to compare

Note de version pour la v3

Nouvelles fonctionnalités

  • Ajout d'un deuxième code nommé propal2.c avec 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

18 Dec 14:14
16cd7bf

Choose a tag to compare

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 :

  1. Compiler avec la commande :
    gcc ./version2.c -Wall -lm -o snake_game
  2. 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

09 Dec 08:27
a971040

Choose a tag to compare

Fonctionnalités de base :

  1. 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.
  2. Le serpent :

    • Taille fixe de 10 unités.
    • Tête représentée par un O, et les neuf anneaux suivants par des X.
    • Initialement positionné en (40, 20) et orienté vers la droite.
    • Peut se croiser lui-même ou faire demi-tour.
  3. 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.
  4. 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.
  5. 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.).