mirror of
https://github.com/Cpt-Adok/SNAKE.git
synced 2026-01-25 16:34:08 +00:00
ajout des fichiers necessaires
This commit is contained in:
102
src/game/connexion/Channel.java
Normal file
102
src/game/connexion/Channel.java
Normal file
@@ -0,0 +1,102 @@
|
||||
package game.connexion;
|
||||
|
||||
import game.environnement.*;
|
||||
import personnage.Personnage;
|
||||
import personnage.types.Mouvement;
|
||||
|
||||
public class Channel extends Personnage {
|
||||
private Reseau reseau;
|
||||
private static Reseau adversaire;
|
||||
private String channel;
|
||||
|
||||
public Channel(Map map, String channel, String autreChannel) {
|
||||
super(new int [] {map.getGrid()[0].length - 1, map.getGrid().length - 1});
|
||||
|
||||
this.name = autreChannel;
|
||||
|
||||
this.channel = channel;
|
||||
|
||||
reseau = new Reseau(channel);
|
||||
adversaire = new Reseau(autreChannel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant l'envoi de message, grâce à celle de Réseau
|
||||
* @param String contenant la direction voulue
|
||||
**/
|
||||
public static void envoyerMessage(Mouvement mouvement) {
|
||||
adversaire.sendContent(conversionString(mouvement));
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant la réception du dernier message envoyé, grâce à celle de Réseau
|
||||
**/
|
||||
public String recupererMessage() {
|
||||
return reseau.getLastedContent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de convertir un String en Mouvement
|
||||
* (Le String est celui récupéré dans le channel)
|
||||
* @param String s
|
||||
* @return Mouvement
|
||||
*/
|
||||
public Mouvement conversionMouvement(String s){
|
||||
if (s != null) {
|
||||
if (s.equals("U") || s.equals("u")){
|
||||
return Mouvement.HAUT;
|
||||
}else if (s.equals("D") || s.equals("d")){
|
||||
return Mouvement.BAS;
|
||||
}else if (s.equals("L") || s.equals("l")){
|
||||
return Mouvement.GAUCHE;
|
||||
}else if (s.equals("R") || s.equals("r")){
|
||||
return Mouvement.DROITE;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String conversionString(Mouvement mouvement){
|
||||
if (mouvement == Mouvement.HAUT) {
|
||||
return "D";
|
||||
} else if (mouvement == Mouvement.BAS) {
|
||||
return "U";
|
||||
} else if (mouvement == Mouvement.GAUCHE) {
|
||||
return "R";
|
||||
} else if (mouvement == Mouvement.DROITE) {
|
||||
return "L";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette méthode est commune à toutes les sous-classes de personnages
|
||||
* Elle permet de jouer. Ici, on bouge le personnage en fonction du String
|
||||
* reçu dans le Channel, converti en Mouvement.
|
||||
* @param map
|
||||
* @return boolean qui indique si le Personnage est vivant ou pas.
|
||||
*/
|
||||
@Override
|
||||
public boolean round(Map map, String channel){
|
||||
Mouvement mouvement;
|
||||
|
||||
System.out.println("Attente de l'autre joueur.");
|
||||
while ((mouvement = conversionMouvement(recupererMessage())) == null) {
|
||||
reseau.reconnexion(this.channel);
|
||||
try { Thread.sleep(500);
|
||||
} catch (InterruptedException e) { e.printStackTrace(); }
|
||||
}
|
||||
|
||||
this.moveSnake(mouvement);
|
||||
|
||||
int[] coordinate=this.getHeadCoordinate();
|
||||
if (map.isGameOver(coordinate) || this.applyEffects(map.getEffect(coordinate))){
|
||||
return true;
|
||||
}
|
||||
|
||||
map.deleteItems(coordinate);
|
||||
this.increaseRound();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user