snakeia

A Snake version with an artificial intelligence. This version has many game modes. You can play against the AI, or let it play alone. A Battle Royale mode is also available, this mode sees between 2 and 100 AI fight! Many settings are available to vary th


Keywords
ai, artificial-intelligence, battle-royale, battle-royale-mode, es6, es6-javascript, game, javascript, javascript-game, online-game, online-games, oop-in-javascript, pure-javascript, vanilla-javascript
License
GPL-3.0
Install
npm install snakeia@2.2.0-0

Documentation

SnakeIA

Screenshot Screenshot

Screenshot

English

A Snake version with an artificial intelligence. This version has many game modes. You can play against the AI, or let it play alone. A Battle Royale mode is also available, this mode sees between 2 and 100 AI fight! Many settings are available to vary the games. A Levels mode (for the player and the AI) is also available, it's a series of level with a particular goal to achieve (get a minimum score, get a score in time, …). Downloadable levels are available.

An online game mode is also available! Game servers are already opened so you can play online with others players. This repository hosts the client and the game engine used by the server program. Check the repository SnakeIA Server for more informations.

Game written in pure JavaScript and object oriented.

About this game

Credits

Changelog

  • Version 2.2 (10/18/2020):

    • Addition of a bonus shop for the Levels game mode: this store allows you to buy bonuses among 6 available, in exchange for apples (which can be collected in the levels);
    • The apples are no longer placed in the corridors (zone where only one row/col of the grid is empty) whatever their size;
    • The game now detects when Snakes are placed near a wall or another Snake: in this case, the Snake is flipped the other way;
    • The game now detects if the last AIs are blocked: in this case, if the AIs remain blocked, the game ends (unless one or more human players are still playing);
    • AIs now better detect golden apples;
    • Bug fixes and adjustments:
      • Fixed an animation bug;
      • The ZQSD/WASD keys are recognized again;
      • Fixed a bug with random values ​​that did not give the same results depending on whether they came from a game that had been restarted or not;
      • Fixed a bug with the counter before a new game in the online game mode;
      • Fixed a crash in the online game mode when the client side predictions mode was enabled;
      • Removed the message "An error has occurred" that appeared stealthily in the online game mode when a room was joined and which could block the game for the user;
      • Fixed a possible bug when multi-threading was enabled in the settings and which could prevent a game from starting;
      • Fixed other minor bugs;
      • Addition of new unit tests related to the new features added;
      • Small corrections of the English translation.
  • Version 2.1.1 (01/06/2020) :

    • Added an animation when a Snake loses (it bounces on the obstacle);
    • It's now possible to move the Snake by sliding your finger in the desired direction;
    • The ranking can now be scrolled using the mouse wheel or via the finger on mobile devices, and a scrollbar is now displayed;
    • Added a new graphic skin (Pixel);
    • Improvement of the animations;
    • It's now possible to limit the FPS (frames per second) in the settings;
    • The unknown cell type will now display a "?";
    • Bug fixes and other adjustments;
    • Technical improvements:
      • The classes have been converted to ES6+ classes, the build script now uses Babel;
      • The functions of the game UI have been separated into several classes inheriting from JSGameTools.Component;
      • The different AI levels now have their own classes, it's possible to pass a custom AI class to the Snake constructor;
      • performance.now used instead of Date.now for animation calculations.
  • Version 2.1 (5/3/2020):

    • Improvement of the online game mode: possibility of enabling AIs in online mode, client-side predictions (improves performance, experimental functionality disabled by default), latency (ping) displayed in the game informations;
    • Settings menu added to adjust different game settings;
    • Addition of a new graphic skin (Tropical), this skin can be enabled in the game settings;
    • Golden apples can appear sometimes in all game modes: these types of apples increase the score by 3 at once;
    • The game now uses two different pseudo-random number generators that can be initialized by seeds; these seeds can be customized in the Advanced settings when creating a new game (not available in online mode) - the same seed will result in an identical game if the others settings are the same;
    • Major performance improvement;
    • Bug fixes and other adjustments:
      • Apples are no longer placed on a cell surrounded by 3 or more walls;
      • When there is no more free space available, the game stops only when all the apples have been reached;
      • A progress bar has been added to the resource loading screen;
      • The server can now send a notification to the client in the online game mode;
      • Bug fixes with Safari browser;
      • Other minor bug fixes.
    • Technical modifications:
      • The graphical user interface elements have been moved to the JSGameTools module;
      • JavaScript dependencies are now managed via npm;
      • GameEngineWorker build managed by Webpack;
      • Addition of unit tests.
  • Version 2.0.1 (3/18/2020):

    • Fixed online mode authentication
  • Version 2.0 (3/18/2020):

    • Added an online game mode! This is the Battle Royale mode playable online. Servers are already opened and can be used. Check the repository SnakeIA Server for more informations.
    • Many fixes and improvements, although every effort has been made for the online game mode.
  • Version 1.5 (1/31/2020):

    • Performance improvement (multi-threading);
    • Fixed speed management: the game is smoother;
    • Major changes in the architecture of the game code (MVC, other changes);
    • Bug fixes and other adjustments.
  • Version 1.4.2 (10/7/2019):

    • Added a labyrinth mode: it's now possible to generate mazes. The goal is to find the path to the apple through the maze. Levels of this type are also possible (to download later).
    • Bug fixes and other adjustments.
  • Version 1.4.1 (9/29/2019):

    • The movement of the Snakes is now animated;
    • The player's Snake is indicated by an arrow in a game with several AI opponents;
    • The game can now be played with the ZQSD/WASD keys;
    • Bug fixes, performance improvements and others adjustments.
  • Version 1.4.0.1 (9/7/2019):

    • Fixed a problem affecting performance;
    • The game is paused when full-screen mode is enabled or exited;
    • Updated software libraries;
    • Others minors fixes.
  • Version 1.4 (8/2/2019):

    • The game now detects if the apple is blocked by obstacles (walls, dead Snake) and inaccessible then avoids to put the apple in these places or changes its position;
    • Many improvements of the game interface:
      • The top banner and its elements resize automatically according to the size of the screen;
      • All game infos (winners, level goal, level won/failed messages) are displayed at the bottom of the game interface as notifications;
      • Display of the best score/time directly in the game interface in Levels mode;
      • Display of the remaining time for the levels involving a counter;
      • Buttons resize automatically if necessary;
      • Improved text display (automatic line wrap, etc.);
      • Display of the percentage of loading of the resources;
      • The page now scrolls to the game interface when starting a game;
      • Displaying a full-screen mode button while displaying the counter before the start of a game;
      • Display of a button Exit full-screen when possible and necessary;
      • The game prevents scrolling of the page with the arrows of the keyboard during a game;
      • Others minors adjustments of the interface.
    • Fixed a bug that reduced the performance and fluidity of the game during a game involving multiple players (human or AI) due to the display of text above the Snake;
    • Improved processing of resource loading errors;
    • Other bugfixes and adjustments.
  • Version 1.3.2.1 (7/25/2019):

    • Additions to use the game in offline mode and to be offered installation on compatible platforms;
    • Other corrections.
  • Version 1.3.2 (7/25/2019):

    • Added the AI assistant for the player. By enabling this option, an AI ​​will try to correct your trajectory if you are about to crash into an obstacle. Reduces the difficulty of the game ;
    • Bug fixes and others adjustments.
  • Version 1.3.1 (7/18/2019):

    • Correction of the speed at the start of the game if the frame rate is greater or less than 60;
    • Added a new type of level: reach a given score before the opponents (no level exploits it for the moment);
    • Fixed others bugs and fixed compatibility with Microsoft Edge and Safari.
  • Version 1.3 (7/12/2019):

    • Possibility for several players to play on the same grid! This mode supports a hundred players (a human player and a hundred AI) on the same grid! Players are differentiated according to their color. Their name and score are displayed above each one;
    • Introduction of Levels game mode (for AI and player);
    • Generation of a random color for each Snake at each new game;
    • The menus are navigable with the keyboard, it's also possible to pause the game by pressing the Enter key;
    • Bug fixes and adjustments (see commits on Github);
    • Added a level of AI "Random" (random movements of the AI).
  • Version 1.2 (7/3/2019):

    • Migration to the Lowlight.Astar software library, which supports torus-shaped grids, which improves AI performance;
    • Correction and improvement of the performances of the AI ​​in low level mode;
    • Fixed the generation of walls at random positions: dead ends are now detected and removed;
    • Fixed a bug with the translation engine during the initial loading of the page: in some cases, the page was not translated and the language menu did not load;
    • Support for resource loading errors: an error message is displayed in this case;
    • A Current game infos menu is available in the Pause menu > About…;
    • The minimum speed allowed is now 100;
    • Simplifications of the code.
  • Version 1.1 (6/30/2019):

    • Integration of the i18next translation engine and translation of the application into English;
    • Various improvements and bug fixes:
      • The menus and texts automatically adapt to the width of the game space and the screen resolution (automatic reduction/increase of text size and buttons, automatic line jump);
      • Optimization of the display of the control buttons for the player (arrows), this improves performance;
      • The default speed is now 8;
      • Other minor bug fixes and texts fixes.
  • Version 1.0 (6/19/2019):

    • Initial version

How to compile

You can compile yourself the JavaScript code if you made a change. To do this, you have to install Node.js and npm.

To install Node.js and npm for your OS, read this page: https://docs.npmjs.com/getting-started/installing-node

Git clone the repository and cd to the project directory (or download it directly from Github):

git clone https://github.com/Eliastik/snakeia.git
cd snakeia

Then run this command to install the dependencies:

npm install

Then to compile:

  • Dev mode: npm run build-dev
  • Prod mode: npm run build
  • Watch mode: npm run watch

This will compile the JavaScript code into the sub-directory "dist".

SnakeIA contains some unit tests. To execute them, launch the command npm run test.

Français

Une version du Snake dotée d'une intelligence artificielle. Cette version est dotée de nombreux modes de jeu. Vous pouvez notamment jouer contre l'IA, ou la laisser jouer seule. Un mode Battle Royale est également disponible, ce mode voit s'affronter entre 2 et 100 IA ! De nombreux paramétrages sont disponibles pour varier les parties. Un mode Niveaux (pour le joueur et l'IA) est également disponible, il s'agit d'un série de niveau dotés d'un objectif particulier à accomplir (obtenir un score minimal, obtenir un score en un certain temps, …). Des niveaux téléchargeables sont disponibles.

Un mode de jeu en ligne est disponible ! Des serveurs sont déjà ouverts pour que vous puissiez jouer avec d'autres joueurs. Ce dépôt fourni le client ainsi que le moteur de jeu utilisé par le programme serveur. Plus d'informations sur le dépôt SnakeIA Server.

Jeu programmé en JavaScript pur et en orienté objet.

Ă€ propos du jeu

Crédits

Journal des changements

  • Version 2.2 (18/10/2020) :

    • Ajout d'une boutique de bonus pour le mode de jeu Niveaux : cette boutique permet d'acheter des bonus parmi 6 disponibles, en Ă©change de pommes (qui peuvent ĂŞtre ramassĂ©es dans les niveaux) ;
    • Les pommes ne sont plus placĂ©es dans les couloirs (zone oĂą une seule ligne/colonne de la grille est vide) quelque soit leur taille ;
    • Le jeu dĂ©tecte dĂ©sormais lorsque les Snake sont placĂ©s près d'un mur ou d'un autre Snake : dans ce cas, le Snake est retournĂ© dans l'autre sens ;
    • Le jeu dĂ©tecte dĂ©sormais si les dernières IAs sont bloquĂ©es : dans ce cas, si les IAs restent bloquĂ©es, la partie se termine (sauf si un ou plusieurs joueurs humains jouent encore) ;
    • Les IAs dĂ©tectent dĂ©sormais mieux les pommes dorĂ©es ;
    • Correction de bugs et ajustements :
      • Correction d'un bug d'animation ;
      • Les touches ZQSD/WASD sont Ă  nouveau reconnues ;
      • Correction d'un bug avec les valeurs alĂ©atoires qui ne donnaient pas les mĂŞmes rĂ©sultats selon s'ils venaient d'une partie qui avait Ă©tĂ© recommencĂ©e ou non ;
      • Correction d'un bug avec le compteur avant une nouvelle partie dans le mode de jeu en ligne ;
      • DĂ©tection d'un plantage dans le mode de jeu en ligne lorsque le mode PrĂ©dictions cĂ´tĂ© client Ă©tait activĂ© ;
      • Suppression du message "Une erreur est survenue" qui apparaissait furtivement dans le mode de jeu en ligne lorsqu'une salle Ă©tait rejointe et qui pouvait bloquer la partie pour l'utilisateur ;
      • Correction d'un possible bug lorsque le multi-threading Ă©tait activĂ© dans les paramètres et qui pouvait empĂŞcher le dĂ©marrage d'une partie ;
      • Correction d'autres bugs mineurs ;
      • Ajout de nouveaux tests unitaires en rapport avec les nouvelles fonctionnalitĂ©s ajoutĂ©es ;
      • Petites corrections de la traduction en anglais.
  • Version 2.1.1 (01/06/2020) :

    • Ajout d'une animation lorsqu'un Snake perd (il rebondi sur l'obstacle) ;
    • Il est dĂ©sormais possible de dĂ©placer le Snake en glissant le doigt dans la direction voulue ;
    • Le classement peut dĂ©sormais ĂŞtre dĂ©filĂ© Ă  l'aide de la molette de la souris ou via le doigt sur les appareils mobiles, et une barre de dĂ©filement est dĂ©sormais affichĂ©e ;
    • Ajout d'un nouveau skin graphique (Pixel) ;
    • AmĂ©lioration des animations ;
    • Il est dĂ©sormais possible de limiter les FPS (images par seconde) dans les paramètres ;
    • Les types de cases inconnues afficheront dĂ©sormais une image "?" ;
    • Corrections de bugs et autres ajustements ;
    • AmĂ©liorations techniques :
      • Les classes ont Ă©tĂ© converties en classes ES6+, le script de build utilise dĂ©sormais Babel ;
      • Les fonctions de l'interface utilisateur du jeu ont Ă©tĂ© sĂ©parĂ©es en plusieurs classes hĂ©ritant de JSGameTools.Component ;
      • Les diffĂ©rents niveaux d'IA ont dĂ©sormais leurs propres classes, il est possible de passer une classe d'IA personnalisĂ©e au constructeur de Snake ;
      • Utilisation de performance.now au lieu de Date.now pour les calculs d'animation.
  • Version 2.1 (03/05/2020) :

    • AmĂ©lioration du mode de jeu en ligne : possibilitĂ© d'activer les IA en mode en ligne, prĂ©dictions cĂ´tĂ©-client (amĂ©liore les performances, fonctionnalitĂ© expĂ©rimentale dĂ©sactivĂ©e par dĂ©faut), latence (ping) affichĂ©e dans les informations de la partie ;
    • Menu Paramètres ajoutĂ© afin de rĂ©gler diffĂ©rents paramètres du jeu ;
    • Ajout d'un nouveau skin graphique (Tropical), ce skin peut ĂŞtre activĂ© dans les paramètres du jeu ;
    • Des pommes en or peuvent apparaĂ®tre Ă  certains moments dans tous les modes de jeu : ces types de pommes augmentent le score de 3 d'un seul coup ;
    • Le jeu utilise dĂ©sormais deux gĂ©nĂ©rateurs de nombres pseudo-alĂ©atoires diffĂ©rents pouvant ĂŞtre initialisĂ©s par des graines ; ces graines peuvent ĂŞtre personnalisĂ©es dans les Paramètres avancĂ©s lors de la crĂ©ation d'une nouvelle partie (non disponible en mode en ligne) - une mĂŞme graine rĂ©sultera en une partie identique si les autres paramètres sont les mĂŞmes ;
    • AmĂ©lioration majeure des performances ;
    • Corrections de bugs et autres ajustements :
      • Les pommes ne sont dĂ©sormais plus placĂ©es sur une case entourĂ©e de 3 murs ou plus ;
      • Lorsqu'il n'y a plus d'espace libre disponible, la partie s'arrĂŞte uniquement lorsque toutes les pommes ont Ă©tĂ© atteintes ;
      • Une barre de progression a Ă©tĂ© ajoutĂ©e Ă  l'Ă©cran de chargement des ressources ;
      • Le serveur peut dĂ©sormais envoyer une notification au client en mode de jeu en ligne ;
      • Correction de bugs avec le navigateur Safari ;
      • Autres corrections de bugs mineurs.
    • Modifications techniques :
      • Les Ă©lĂ©ments graphiques d'interface utilisateur ont Ă©tĂ© dĂ©placĂ©s vers le module JSGameTools ;
      • Les dĂ©pendences JavaScript sont dĂ©sormais gĂ©rĂ©es via npm ;
      • Build du GameEngineWorker gĂ©rĂ© par Webpack ;
      • Ajout de tests unitaires.
  • Version 2.0.1 (18/03/2020) :

    • Correction de l'authentification au mode de jeu en ligne
  • Version 2.0 (18/03/2020) :

    • Ajout d'un mode de jeu en ligne ! Il s'agit du mode Battle Royale jouable en ligne. Des serveurs sont dĂ©jĂ  ouverts et peuvent ĂŞtre utilisĂ©s. Plus d'informations sur le dĂ©pĂ´t SnakeIA Server.
    • De nombreuses corrections et amĂ©liorations, bien que tous les efforts ait Ă©tĂ© portĂ©s sur le mode de jeu en ligne.
  • Version 1.5 (31/01/2020) :

    • AmĂ©lioration des performances (multi-threading) ;
    • Correction de la gestion de la vitesse : le jeu est plus fluide ;
    • Grands changements dans l'architecture du code du jeu (MVC, autres changements) ;
    • Corrections de bugs et autres ajustements.
  • Version 1.4.2 (07/10/2019) :

    • Ajout d'un mode labyrinthe : il est dĂ©sormais possible de gĂ©nĂ©rer des labyrinthes. Le but est de trouver le chemin vers la pomme Ă  travers le labyrinthe. Des niveaux de ce type sont Ă©galement possibles (Ă  tĂ©lĂ©charger ultĂ©rieurement).
    • Corrections de bugs et autres ajustements.
  • Version 1.4.1 (29/09/2019) :

    • Le dĂ©placement des Snake est dĂ©sormais animĂ©, rendant le jeu plus fluide ;
    • Le Snake du joueur est dĂ©signĂ© par une flèche lors d'une partie avec plusieurs adversaires IA ;
    • Le jeu peut dĂ©sormais se jouer avec les touches ZQSD/WASD ;
    • Correction de bugs, amĂ©lioration des performances et autres ajustements.
  • Version 1.4.0.1 (07/09/2019) :

    • Correction d'un problème affectant les performances ;
    • Le jeu se met en pause lors de la mise en plein-Ă©cran ou lorsque le mode plein-Ă©cran est quittĂ© ;
    • Bibliothèques logicielles mises Ă  jour ;
    • Autres corrections mineures.
  • Version 1.4 (02/08/2019) :

    • Le jeu dĂ©tecte dĂ©sormais si la pomme est bloquĂ©e par des obstacles (murs, Snake ayant perdu) et si elle est inaccessible et Ă©vite de poser la pomme Ă  ces endroits ou change sa position ;
    • Nombreuses amĂ©liorations de l'interface du jeu :
      • Le bandeau du haut et ses Ă©lĂ©ments se redimensionnent automatiquement selon la taille de l'Ă©cran ;
      • Toutes les infos du jeu (gagnants, consignes des niveaux, messages de niveau rĂ©ussi/Ă©chouĂ©) sont affichĂ©es en bas de l'interface du jeu sous forme de notifications ;
      • Affichage du meilleur score/temps directement dans l'interface du jeu en mode Niveaux ;
      • Affichage du temps restant pour les niveaux impliquant un compteur ;
      • Les boutons se redimensionnent automatiquement si nĂ©cessaire ;
      • AmĂ©lioration de l'affichage du texte (saut automatique de ligne, etc.) ;
      • Affichage du pourcentage de chargement des ressources ;
      • La page dĂ©file dĂ©sormais vers l'interface du jeu lors du dĂ©marrage d'une partie ;
      • Affichage d'un bouton Mode plein-Ă©cran lors de l'affichage du compteur avant le dĂ©but d'une partie ;
      • Affichage d'un bouton Quitter plein-Ă©cran lorsque possible et nĂ©cessaire ;
      • Le jeu empĂŞche le dĂ©filement de la page avec les flèches du clavier en cours de partie ;
      • Autres ajustements mineurs de l'interface.
    • Correction d'un bug qui rĂ©duisait les performances et la fluiditĂ© du jeu lors d'une partie impliquant plusieurs joueurs (humains ou IA) dĂ» Ă  l'affichage du texte au dessus des Snake ;
    • AmĂ©lioration de la gestion des erreurs de chargement des ressources ;
    • Autres corrections de bugs et ajustements.
  • Version 1.3.2.1 (25/07/2019) :

    • Ajout permettant d'utiliser le jeu en mode hors-ligne et de se voir proposer l'installation sur les plateformes compatibles ;
    • Autres corrections.
  • Version 1.3.2 (25/07/2019) :

    • Ajout de l'assistant IA pour le joueur. En activant cette option, une IA tentera de corriger votre trajectoire si vous ĂŞtes sur le point de vous Ă©craser sur un obstacle. RĂ©duit la difficultĂ© du jeu ;
    • Corrections de bugs et autres ajustements.
  • Version 1.3.1 (18/07/2019) :

    • Correction de la vitesse au dĂ©marrage du jeu si le taux d'images par seconde est supĂ©rieur ou infĂ©rieur Ă  60 ;
    • Ajout d'un nouveau type de niveau : atteindre un score donnĂ© avant les adversaires (aucun niveau ne l'exploite pour l'instant) ;
    • Corrections d'autres bugs et de la compatibilitĂ© avec Microsoft Edge et Safari.
  • Version 1.3 (12/07/2019) :

    • PossibilitĂ© pour plusieurs joueurs de jouer sur la mĂŞme grille de jeu ! Ce mode supporte une centaine de joueurs (un joueur humain et une centaine d'IA) sur la mĂŞme grille ! Les joueurs sont diffĂ©rentiĂ©s en fonction de leur couleur. Leur nom ainsi que leur score est affichĂ© au dessus de chacun d'eux ;
    • Introduction du mode de jeu Niveaux (pour l'IA et le joueur) ;
    • GĂ©nĂ©ration d'une couleur alĂ©atoire pour chaque Snake Ă  chaque nouvelle partie ;
    • Les menus sont navigables au clavier, il est Ă©galement possible de mettre en pause le jeu en appuyant sur la touche Entrer ;
    • Corrections de bugs et ajustements (voir les commits sur Github) ;
    • Ajout d'un niveau d'IA "Au hasard" (mouvements alĂ©atoires de l'IA).
  • Version 1.2 (03/07/2019) :

    • Migration vers la bibliothèque logicielle Lowlight.Astar, qui supporte les grilles en forme de tore, ce qui amĂ©liore les performances de l'IA ;
    • Correction et amĂ©lioration des performances de l'IA en mode faible ;
    • Correction de la gĂ©nĂ©ration des murs Ă  des positions alĂ©atoires : les impasses sont dĂ©sormais dĂ©tectĂ©es et supprimĂ©es ;
    • Correction d'un bug avec le moteur de traduction lors du chargement initial de la page : dans certains cas, la page ne se traduisait pas et le menu des langues ne se chargeait pas ;
    • Prise en charge des erreurs de chargement des ressources : un message d'erreur est affichĂ© dans ce cas ;
    • Un menu Info partie est disponible dans le menu Pause > Ă€ propos… ;
    • La vitesse minimale autorisĂ©e est dĂ©sormais de 100 ;
    • Simplifications du code.
  • Version 1.1 (30/06/2019) :

    • IntĂ©gration du moteur de traduction i18next et traduction de l'application en anglais ;
    • AmĂ©liorations diverses et corrections de bugs :
      • Les menus et les textes s'adaptent automatiquement Ă  la largeur de l'espace du jeu et Ă  la rĂ©solution de l'Ă©cran (rĂ©duction/augmentation automatique de la taille du texte et des boutons, saut automatique de ligne) ;
      • Optimisation de l'affichage des boutons de contrĂ´le pour le joueur (flèches), cela amĂ©liore les performances ;
      • La vitesse par dĂ©faut est dĂ©sormais 8 ;
      • Autres corrections mineures de bugs et des textes.
  • Version 1.0 (19/06/2019) :

    • Version initiale

Comment compiler

Vous pouvez compiler vous-même le code JavaScript si vous avez effectué un changement. Pour cela, vous devez avoir installé Node.js et npm.

Pour installer Node.js et npm sur votre système, suivez le guide : https://docs.npmjs.com/getting-started/installing-node

Effectuez un clonage du dépôt et déplacez-vous dedans (ou téléchargez-le directement depuis Github) :

git clone https://github.com/Eliastik/snakeia.git
cd snakeia

Puis lancez cette commande pour installer les dépendances :

npm install

Puis pour compiler :

  • Mode dĂ©veloppement : npm run build-dev
  • Mode production : npm run build
  • Mode automatique : npm run watch

Cela va compiler le code JavaScript dans le sous-répertoire "dist".

SnakeIA contient quelques tests unitaires. Pour les exécuter, lancer la commande npm run test.

TO-DO list

  • AmĂ©liorer l'IA (dĂ©fi : machine learning -> deep Q-learning)
  • AmĂ©liorer les performances graphiques
  • Eviter de placer les joueurs trop près des murs -> direction inversĂ©e si trop près d'un mur
  • Bug lors de la crĂ©ation d'une partie en mode en ligne (quelquefois) : message "Erreur est survenue" ou "Chargement" et partie bloquĂ©e
  • Corriger message "Une erreur est survenue" lors du lancement d'une partie en mode en ligne
  • Plantage en utilisant le mode de prĂ©dictions cĂ´tĂ© clients
  • Eviter de placer une pomme dans un cul-de-sac peu importe sa taille (actuellement uniquement les cul-de-sac d'une case sont Ă©vitĂ©s)
  • DĂ©tection du blocage des IAs
  • Correction bug des seeds ne donnant pas les mĂŞmes parties (seed d'une partie recommencĂ©e sur une partie initiale)
  • PrĂ©dictions pour le mode en ligne (amĂ©liore la fluiditĂ©) - Pas vraiment OK, Ă  revoir si possible
  • Correction animation mort Snake quand partie terminĂ©e
  • ContrĂ´les sur mobile via dĂ©filement doigt
  • Barre dĂ©filement classement
  • SĂ©parer le code de la mĂ©thode draw de GameUI en plusieurs classes Component
  • DĂ©filement classement roulette/glisser
  • Seeds pour les grilles/jeu
  • Tests unitaires
  • EmpĂŞcher les fruits de popper dans des cases entourĂ©s de 3 murs
  • Optimiser flood fill
  • Bug avec les workers : les Snake semblent "popper"
  • Performances lorsque plusieurs Snake sur une seule grille (problème affichage texte drawSnakeInfos et aussi la fonction isCaseSurrounded de la classe Grid corrigĂ©s)
  • Correction vitesse dĂ©marrage partie si fps > 60
  • IdĂ©e type de niveau : atteindre le score avant les adversaires
  • Corriger l'algorithme de gĂ©nĂ©ration de murs Ă  des positions alĂ©atoires (empĂŞcher les blocages possibles)
  • hue-rotate ne fonctionne pas sur Microsoft Edge et Safari -> pas de changement de couleur des Snake possible (workaround trouvĂ© avec le Snake pointĂ© par la flèche + dĂ©tection et texte diffĂ©rent)
  • Animations
  • Labyrinthes
  • Multithreading
  • MVC (architecture client-serveur)
  • Jeu multi-joueur en ligne (crĂ©ation d'un programme serveur avec socket.io)

Autres idées

  • (Menu affichant les contrĂ´les du jeu)
  • [-] (Afficher difficultĂ© niveaux)
  • Bonus dans le mode niveaux (pièces obtenues en fonction du score/temps (1.75 fois ce qui est demandĂ© dans l'objectif) permettant d'acheter des bonus (passer dernier niveau ou activer le mode assistant IA))
  • Animation mort Snake
  • Skin vrai serpent

DĂ©claration de licence

Copyright (C) 2019-2020 Eliastik (eliastiksofts.com)

Ce programme est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation ; soit la version 3 de la licence, soit (à votre gré) toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie tacite de QUALITÉ MARCHANDE ou d'ADÉQUATION à UN BUT PARTICULIER. Consultez la GNU General Public License pour plus de détails.

Vous devez avoir reçu une copie de la GNU General Public License en même temps que ce programme ; si ce n'est pas le cas, consultez http://www.gnu.org/licenses.


Copyright (C) 2019-2020 Eliastik (eliastiksofts.com)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.