mirror of
https://github.com/Cpt-Adok/SNAKE.git
synced 2026-03-28 17:13:43 +00:00
95 lines
2.7 KiB
Java
95 lines
2.7 KiB
Java
package personnages;
|
|
|
|
import java.util.Scanner;
|
|
|
|
import environnements.Map;
|
|
import types.*;
|
|
|
|
/**
|
|
* la classe Player a comme classe parent {@link Personnage}
|
|
* et qui contient tout les besoins primaire pour le bon
|
|
* fonctionnement de la classe Player. cette classse est très
|
|
* utile pour qu'un humain puisse jouer.
|
|
*/
|
|
public class Player extends Personnage {
|
|
/**
|
|
* la classe Player a comme classe parent {@link Personnage}
|
|
* et qui contient tout les besoins primaire pour le bon
|
|
* fonctionnement de la classe Player. Il comporte les coordonnées
|
|
* initiales pour placer correctement le personnage dans la grille
|
|
* du jeu.
|
|
* @param coordinate
|
|
* @param name
|
|
*/
|
|
public Player(int[] coordinate, String name) {
|
|
super(coordinate);
|
|
|
|
this.name = name;
|
|
}
|
|
|
|
public boolean moveCoordinate(int keys) {
|
|
Mouvement value = getMouvement(keys);
|
|
|
|
if (value != null) {
|
|
moveSnake(value);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public Mouvement getMouvement(Integer keys) {
|
|
switch (keys) {
|
|
case 0x77: case 0x7A: return Mouvement.HAUT; // w ou z
|
|
case 0x73: return Mouvement.BAS; // s
|
|
case 0x61: case 0x71: return Mouvement.GAUCHE; // a ou q
|
|
case 0x64: return Mouvement.DROITE; // d
|
|
case null: return null;
|
|
default: return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* transforme le String en prennant le premier char et
|
|
* le mets en ascii dans la classe Integer.
|
|
* @param input
|
|
* @return
|
|
*/
|
|
private Integer changeCoordinate(String input) {
|
|
if (input.length() > 0) {
|
|
return (int)input.charAt(0);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Cette fonction est uniquement destiné pour la classe
|
|
* Players pour recuperer l'input dans le terminal.
|
|
* @param player
|
|
* @return il retourne int qui est le char en ascii
|
|
*/
|
|
@SuppressWarnings("resource")
|
|
private int getInput() {
|
|
Scanner scanner = new Scanner(System.in);
|
|
Integer input = null;
|
|
|
|
while(this.getMouvement(input) == null) {
|
|
input = this.changeCoordinate(scanner.nextLine());
|
|
}
|
|
|
|
// scanner.close();
|
|
return input.intValue();
|
|
}
|
|
|
|
@Override
|
|
public boolean round(Map map) {
|
|
this.moveCoordinate(this.getInput());
|
|
|
|
int[] coordinate = this.getHeadCoordinate();
|
|
if(map.isGameOver(coordinate) || this.applyEffects(map.getEffect(coordinate))) return true;
|
|
map.deleteItems(coordinate);
|
|
|
|
this.increaseRound();
|
|
return false;
|
|
}
|
|
}
|