/RogueLikeTERD

A roguelike game in the terminal using precedural generated levels.

Primary LanguageJava

RogueLikeTERD

BEAUCHET Quentin (Quentin Beauchet)
CARLENS Jean-Philippe (Coruscant11) ("BuildTools" "jipey" également pour la plupart des commits)
FORNER Yann (Yann-Forner) ("Yann" également pour les commits du début du projet)
MASSE Gillian (GillianMASSE)

Attention : le jdk est en version 15 !
Attention : le jeu est pensé pour être joué sur linux car la console windows n'affiche pas assez vite les characteres !

Presentation du jeu

Le but du jeu est d'avancer le plus loin possible dans un labyrinthe composé de plusieurs étages eux même composés de plusieurs pièces aux attributs différents les unes des autres le tout généré procéduralement. Le joueur va devoir survivre face à de nombreux monstres, boss et divers pièges tout aussi mortels. Heureusement pour lui il va pouvoir s'équiper d'armes et d'armures de plus en plus puissantes et avoir recours à des objets lui facilitant son aventure.

⚠️Warnings⚠️

Le jeu est jouable est sur Linux et sur Windows.

Attention toutefois à son utilisation sur Windows :

  • Les smileys seront remplacés par des lettres.
  • Le jeu sera lancé de base en tour par tour, il faudra appuyer sur T pour changer ce mode si désiré.
    Ces spécifications seront de même valables sur un IDE.
    De même, attention, l'ambiance musicale du jeu est très prononcée, veuillez baisser le volume ! :)

Touches

Déplacement : ZQSD
Mode Tour par tour : T
Attaque à distance : A
Utiliser la potion courante : P
Changement d'armes : I
Changement de potion : O
Lâcher arme : L
Lâcher potion : M
Sauvegarder : W
Quitter : ESC

Attributs du joueur

Le joueur est doté de différents attributs lui permettant d'évoluer dans le jeu.

La vie

La vie est la donnée la plus importante du jeu. Si celle-ci tombe à 0, le joueur a perdu.
Le joueur peut perdre de la vie par les dégats que peuvent lui infliger les monstres et en regagner grâce à la nourriture ou aux potions de vie

L'endurance

L'endurance permet au joueur d'attaquer les monstres du jeu.
A chaque attaque, celui-ci perd de l'endurance.
Il sera possible de regagner de l'endurance avec le temps, ou grâce aux potions d'endurance et au burger.


L'argent

L'argent permet au joueur d'acheter des objets au marchand.

Le joueur peut en gagner en vendant des objets au marchand ou directement en trouvant des stacks d'argent au sein du labyrinthe.


Vitesse d'action

Le joueur se verra doté d'une vitesse d'attaque et d'une vitesse de déplacement différente en fonction de sa classe.

Composants du jeu

1. Génération de la carte

1.1. Types d'etages

La carte se compose en plusieurs types d'étages:

1.1.1. Etage cercle

Toutes les pièces de cet etage sont des cercles.

1.1.2. Etage normal

Toutes les pièces de cet étage sont des rectangles.

1.1.3. Etage dongeon

Les pièces de cet étage sont un mélange de tout les types commun de pièces.

1.1.4. Etage piege

C'est un étage piège qui apparait lorsque l'on marche sur une case piegée.

1.1.5. Etage boss

C'est un étage où un boss apparaît .

1.1.5. Etage repos

C'est un étage qui régénère la vie du joueur. Cette salle possède de même une arme que le joueur pourra rammaser

1.2. Types salles

1.2.1. Salle normale

C'est la salle de base, elle est rectangulaire.

1.2.2. Salle triangle

C'est un triangle, c'est aussi une des salles de base.

1.2.3. Salle cercle

C'est un cercle, c'est une plus petite version de salle de boss.

1.2.4. Salle marchand

Salle dans lequel le marchand apparaît

1.2.5. Salle tresor

Salle où le joueur peut trouver un coffre et de l'argent. Il peut parfois y trouver une potion d'endurance.

2. Entités

2.1. Joueur

Le joueur peut choisir sa classe au début du jeu ce qui lui permet d'influencer sur ses statistiques au debut de la partie.
Ses statistiques sont:
-Points de vie (PV)
-Puissance d'Attaque (PA)
Le joueur est de même représenté en fonction de sa classe : Guerrier : Linux: 🌋
Windows: "@"
Archer : Linux: 🧝
Windows: "@"
Magicien : Linux: 🧙
Windows: "@"

2.2. Monstres

Les monstres ont les mêmes statistiques que le joueur mais avec une vitesse et un champ de vision en plus ce qui leurs permet de le détecter s'il s'approche trop et de s'arréter s'il s'éloigne trop.

2.2.1. Alien

Linux: 👽
Windows: &
Il se déplace vite et détecte le joueur de très loin de plus des qu'il reçoit un coup il se téléporte à l'autre bout de l'étage.

2.2.2. Abeille

Linux: 🐝
Windows: B
L'abeille n'est pas si dangereuse en revanche des qu'elle meurt deux nouvelles abeilles deux fois moins puissantes apparaissent.

2.2.3. Oiseau

Linux: 🐦
Windows: ù
Il suit un chemin pèriodique en diagonale et n'attaque pas le joueur à moins que celui lui bloque le passage.

2.2.4. Fantome

Linux: 👻
Windows: H
Il peut traverser les murs pour venir attaquer le joueur.

2.2.5. Rat

Linux: 🐀
Windows: M
Il est rapide et se déplace en diagonale mais a très peu de points de vie.

2.2.6. Squelette

Linux: 💀
Windows: S
Il peut attaquer le joueur à distance et recule dès qu'il s'approche de lui pour garder une certaine distance de securité.

2.2.7. Esacargot

Linux: 🐌
Windows: G Il se déplace en ligne droite et dès qu'il est façe a un obstacle fait demi tour.

2.2.8. Volcan

Linux: 🌋
Windows: V
Il cause des dégats à toutes les entités s'approchant dans son champs d'activation.

2.2.9. Zombie

Linux: 🧟
Windows: Z
Il se déplace très lentement et a beaucoup de points de vie.

2.2. Le marchand

Le marchand, même si considéré comme un monstre dans notre implémentation, est bien différent des autres entités du labyrinthe
Il apparaît dans le labyrinthe de manière aléatoire.
Lorsque le marchand meurt, il droppe son stock et ne réapparait plus.
Pour engager la conversation avec celui-ci, il suffit de le colisionner.

2.2.1. L'achat

Le joueur peut acheter auprès du marchand des armes et des potions.
Le prix est fixé en fonction de l'équilibrage du jeu.

2.2.2. La vente

Le joueur peut de même vendre ses objets auprès du marchand.

2.2.3. Le vol

Il est possible de rompre la pacificité du marchand en essayant de le voler.
Le marchand devient alors une entité aggressive.

2.3. Boss

Les boss sont présents dans le labyrinthe dans les salles prévues à cet effet.
Ce sont des monstres bien plus fort que les précédents, dotés de capacités uniques et prenant plusieurs cases d'affichage.

2.3.1. Big Monster

Le boss "Big Monster" est un monstre puissant doté de deux bras. Sa particularité est qu'il double sa puissance à chaque perte de bras.

2.3.2. Snake

Le boss "Snake" est doté d'une longue queue qu'il faudra détruire avant de pouvoir le tuer.

2.3.3. Invoqueur

Le boss "Invoqueur" tire de puissant rayons lazer. Il invoque de même des rats lorsque celui-ci se voit infligé des dégats.

2.4. Items

2.4.1 Armes

Les armes, peuvent être trouvées tout le long du labyrinthe :
- En les ramassant directement dans le labyrinthe
- En les récupérant sur un monstre tué
- En les achetant au marchand
Elles permettent au joueur d'attaquer les différents monstres qu'il va rencontrer durant son aventure.
Le type et la portée d'attaque vont changer en fonction de l'arme portée par le joueur.

2.4.1.1 Mélée

Clé à molette :
Linux: 🔧
Windows: "m"

Epée :
Linux: 🔪
Windows: "m"

Hache :
Linux: 🪓
Windows: "m"

Châine :
Linux: 🔗
Windows: "m"

Les armes mélées sont les armes corps à corps du jeu. Elles infligent des dégats conséquent à courte portée.
Il existe des clés à molette, des épées, des haches et des chaînes.

2.4.1.2 Armes à distance

Canne à pêche
Linux: 🎣
Windows: "b"

Arc
Linux: 🏹
Windows: "b"

Tridant
Linux: 🔱
Windows: "b"

Revolver
Linux: 🔫
Windows: "b"

Il existe dans le jeu des arme à distance. Elles permettent d'attaquer un monstre à partir du moment où il est à portée de l'arme
Si aucun monstre n'est à portée du joueur, ce dernier ne peut pas attaquer.
Il existe des Cannes à pêche, des arcs, des tridents et des revolvers

2.4.1.3 Les armes magiques

Balais
Linux: 🧹
Windows: "w"

Balais
Linux: 🦴
Windows: "w"

Balais
Linux: 🥢
Windows: "w"

Balais
Linux: 🦯
Windows: "w"

Les armes magiques sont de même des armes à distance du jeu. Le joueur, en les utilisant, attaquera en ligne droite devant lui.
Ces dégats seront infligés sur la ligne entière . Ils peuvent être apparantés à des dégats de "zone" . Contrairement aux armes à distance classiques, peu importe qu'il y ait des monstres sur sa trajectoire, le joueur peut quand même utiliser son arme.
Il existe des balais, des os, des baguettes et des cannes

2.4.2 Les potions

Les potions, tout comme les armes, peuvent être trouvées tout le long du labyrinthe :
- En les ramassant directement dans le labyrinthe
- En les récupérant sur un monstre tué
- En les achetant au marchand
Une fois ramassées, les potions se disposent dans l'inventaire du joueur et peuvent être utilisées à tout moment.
Celles-ci ont des effets qui diffèrent en fonction du type de la potion.

2.4.1.1 La potion de vie

Linux: 🍼
Windows: "h"
La potion de vie est une potion tout de ce qu'il y a de plus classique : elle restaure de la vie au joueur à l'utilisation.

2.4.1.2 La potion de force

Linux: 🍺
Windows: "s"
Une fois utilisée, la potion de force rend le joueur plus fort en augmentant ses dégats d'attaque de manière temporaire.

2.4.1.3 La potion d'invincibilité

Linux: 💉
Windows: "i"
Après avoir consommé cette potion, le joueur devient invulnérable pendant un court instant

2.4.1.4 La potion d'endurance

Linux: 🥃
Windows: "e"
L'utilisation de cette potion octroie au joueur une endurance illimitée pendant une courte durée, permettant au joueur d'utiliser ses attaques sans coût.

2.4.3 La nourriture

A la différence des potions et des armes, le joueur ne peut pas stocker de nourriture dans son inventaire.
Une fois ramassée, la nourriture est instantanément consomée et rend de la vie et/ou de l'endurance au joueur.

2.4.3.1 Les fruits

Les fruits permettent de rendre de la vie au joueur.
Ils sont identifiable dans le jeu par les symboles suivant :

Pomme :
Linux: 🍎
Windows: "p"

Banane :
Linux: 🍌
Windows: "b"

Carrote :
Linux: 🥕
Windows: "c"

Orange :
Linux: 🍊
Windows: "o"

Pêche :
Linux: 🍑
Windows: "g"

2.4.3.2 Le Burger

Linux: 🍔
Windows: "b"
Le burger permet de rendre de la vie et de l'endurance au joueur.

2.4.4 Les items spéciaux

2.4.4.1 Les stacks d'argents Les stacks d'argent sont des objets trouvables par le joueur dans le labyrinthe.
Une fois ramassés et comme la nourriture, les stacks d'argent disparaissent et créditent le joueur du montant de celui-ci.
L'affichage va varier en fonction du montant du stack d'argent.
Entre 0 et 25 or :
Linux: 💵
Windows:

Entre 25 et 50 or :
Linux: 💸
Windows:

Entre 50 et 75 :
Linux: 💴
Windows:

Entre 75 et 100 :
Linux: 💰
Windows:

2.4.4.1. Chest

Linux: 📦
Windows: "€"
Un coffre est un item contenant un à trois objets du jeu
. Le joueur doit tout simplement aller sur le coffre pour l'ouvrir.

3. Cases

Les cases du jeu se divisent en deux categories, les fonctionnelles et les cosmétiques: les premières ont une utilité que cela soit dans le jeu ou la programmation alors que les deuxièmes n'apporteront qu'un intérêt esthétique.

3.1. Fonctionelles

3.1.1. Cellules Normales

Ce sont les cellules de base.



3.1.2. Cellules Bordure

Ce sont les bordures de l'étage, aucune entité ne peut les traverser (sauf exceptions).

3.1.3. Cellules Vide

Ce sont des cellules vides.

3.1.4. Cellules Monter

Elle permet de remonter à l'étage precedent.
Linux: 👍
Windows: "^"

3.1.5. Cellules Descendre

Elle permet de descendre à l'etage precedent.
Linux: 👎
Windows: "v"

3.1.6. Cellules Piege

Ce sont des cellules invisibles qui teleportent le joueur dans un etage piégé. Ces dernières étant des cellules piégées, sont invisibles et ressemblent à des cellules "classiques".

3.1.7. Cellules Projectiles

Linux: 🔥
Windows: "+"
Ces cellules sont présentes lorsque le joueur tire avec une arme à distance. Elles représentent la trajectoire du projectile.

4. Inventaire

L'inventaire du joueur permet de stocker les objets et la monnaie du joueur.
Il affiche tout ceci dans une interface visible sur la droite de l'écran.
Ce menu affiche de même les monstres présents sur l'étage.

5. Sauvegarde

La sauvegarde permet au jouer de sauvegarder la partie pour la reprendre dans le futur.

Exemple quand aucune partie n'est sauvegardée :



Exemple de sauvegarde de partie:



Exemple de chargement d'une partie sauvegardée :