Skip to content

Commit

Permalink
Version 2.2
Browse files Browse the repository at this point in the history
  • Loading branch information
Eliastik committed Oct 18, 2020
1 parent b1fc012 commit b1e5b9c
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 12 deletions.
41 changes: 39 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Game written in pure JavaScript and object oriented.

## About this game

* Version: 2.1.1
* Version: 2.2
* Made in France by Eliastik - [eliastiksofts.com](http://eliastiksofts.com) - Contact : [eliastiksofts.com/contact](http://eliastiksofts.com/contact)
* License: GNU GPLv3 (see LICENCE.txt file)

Expand All @@ -31,6 +31,24 @@ Game written in pure JavaScript and object oriented.

## 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;
Expand Down Expand Up @@ -195,7 +213,7 @@ Jeu programmé en JavaScript pur et en orienté objet.

## À propos du jeu

* Version du jeu : 2.1.1
* Version du jeu : 2.2
* Made in France by Eliastik - [eliastiksofts.com](http://eliastiksofts.com) - Contact : [eliastiksofts.com/contact](http://eliastiksofts.com/contact)
* Licence : GNU GPLv3 (voir le fichier LICENCE.txt)

Expand All @@ -212,6 +230,24 @@ Jeu programmé en JavaScript pur et en orienté objet.

## 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 ;
Expand Down Expand Up @@ -397,6 +433,7 @@ SnakeIA contient quelques tests unitaires. Pour les exécuter, lancer la command
- [x] 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)
- [x] 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))
- [x] Animation mort Snake
Expand Down
2 changes: 1 addition & 1 deletion dist/GameEngineWorker.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/SnakeIA-node.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/SnakeIA.js

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2278,7 +2278,7 @@ function getListBonus(player) {
button.disabled = true;
button.classList.add("disabled");
button.setAttribute("aria-label", i18next.t("levels.bonusNotApplicable"));
} else if(levelsBonusData[key].price > item["numFruits"]) {
} else if(levelsBonusData[key].price > getNumberFruits(player)) {
button.disabled = true;
button.classList.add("disabled");
button.setAttribute("aria-label", i18next.t("levels.notEnoughFruits"));
Expand All @@ -2295,7 +2295,7 @@ function getListBonus(player) {
buttonInfo.setAttribute("aria-label", i18next.t(levelsBonusData[key].information));
buttonInfo.setAttribute("data-balloon-length", "large");
const iconInfo = document.createElement("span");
iconInfo.classList.add("fui-question-circle", "align-middle");
iconInfo.classList.add("fui-question-circle");
buttonInfo.appendChild(iconInfo);

const buttonPrice = document.createElement("div");
Expand Down Expand Up @@ -2330,7 +2330,7 @@ function buyBonus(bonus, player) {
storageGlobal.setItem(save, JSON.stringify(item));
} else if(levelsBonusData[bonus].applicableTo.indexOf(player) < 0 || (item["unlockAllLevels"] && (bonus == "BONUS_UNLOCK_ALL_LEVELS" || bonus == "BONUS_PASS_LEVEL"))) {
alert(i18next.t("levels.bonusNotApplicable"));
} else if(levelsBonusData[bonus].price > item["numFruits"]) {
} else if(levelsBonusData[bonus].price > getNumberFruits(player)) {
alert(i18next.t("levels.notEnoughFruits"));
} else if(item["currentBonus"] != null) {
alert(i18next.t("levels.bonusAlreadyEquipped"));
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "snakeia",
"version": "2.1.1",
"version": "2.2.0",
"description": "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.",
"main": "dist/SnakeIA-node.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion service-worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* along with "SnakeIA". If not, see <http://www.gnu.org/licenses/>.
*/
const CACHE_BASENAME = "snake-ia";
const CACHE_VER = "-v2.1.1.0";
const CACHE_VER = "-v2.2.0";
const CACHE = CACHE_BASENAME + CACHE_VER;

const CACHE_URLS = [
Expand Down
4 changes: 2 additions & 2 deletions src/engine/Constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ export default {
IMAGE_SNAKE_SATURATION: 50,
IMAGE_SNAKE_VALUE: 77,
CARS_TO_PRERENDER: ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "×"],
APP_VERSION: "2.1.1",
DATE_VERSION: "06/01/2020",
APP_VERSION: "2.2",
DATE_VERSION: "10/18/2020",
PROB_GOLD_FRUIT_1_PLAYER: 100,
PROB_GOLD_FRUIT_MULTIPLE_PLAYERS: 50,
INFO_NOTIF_COLOR: "rgba(52, 152, 219, 0.5)",
Expand Down

0 comments on commit b1e5b9c

Please sign in to comment.