Jeu.java 4.33 KiB
package jeu;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import entity.Character;
import engine.Game;
import environnement.Coordonnees;
import loaders.CharacterLoader;
public class Jeu implements Game{
private static Coordonnees coordSol = new Coordonnees(200,700); //coordonnees du sol (en realite juste Z nous interesse)
static Character gameCharacter;
private static Map<String,Boolean> directionJeu;
static CharacterLoader gameCharacterLoader;
String characterSkinPath; // jsp si c'est le jeu qui doit gerer ca, au pire vous pouvez changer
final String beginPath;
String movement;
int numberOfMovement;
int nbIterationPerFrame = 100;
int nbBeforeFramechgt = nbIterationPerFrame;
public Jeu(String source) {
BufferedReader helpReader;
String fn = "Frames_perso";
URL url = Jeu.class.getClassLoader().getResource(fn);
assert url != null;
beginPath = url.toString().substring(6)+"/";
movement = "Character_idle";
numberOfMovement = 1;
characterSkinPath = beginPath + movement + numberOfMovement + ".png"; // path premiere frame
/*A = new ArrayList<Double>();
n = 0;*/
gameCharacterLoader = new CharacterLoader(characterSkinPath,new Character(new Coordonnees(200, 300), 2000, 1,600000));
gameCharacter = gameCharacterLoader.getGameCharacter();
try {
helpReader = new BufferedReader(new FileReader(source));
String line;
while ((line = helpReader.readLine()) != null) {
System.out.println(line);
}
helpReader.close();
} catch (IOException e) {
System.out.println("Help not available");
}
directionJeu = new HashMap<>();
directionJeu.put("Right", false);
directionJeu.put("Left", false);
directionJeu.put("Jump", false);
}
@Override
public void evolve(HashMap<String,Boolean> command) { // command est sous la forme list de Boolean qui represente les touches préssées. Voir Controller pour la compositions de cet list.
/*System.out.println("Execute "+command);
System.out.println(gameCharacter.getCoord().getX());
System.out.println(gameCharacter.getCoord().getZ());*/
/*double comX,comZ;
int a = 1;
comX = 0;
comZ = 0;*/
directionJeu.replace("Right", command.get("Right"));
directionJeu.replace("Left", command.get("Left"));
directionJeu.replace("Jump", command.get("Jump"));
/*Boolean Right = command.get("Right");
boolean Left = command.get("Left");
boolean Jump = command.get("Jump");
if (Right && Left){}
else if (Right) {
comX = gameCharacter.getVitesseMax();
}
else if (Left) {
comX = -gameCharacter.getVitesseMax();
}
if (Jump) {
if (gameCharacter.getCoord().getZ() < coordSol.getZ())a = 0;
else if (gameCharacter.getVitesseActuZ() == 0){comZ = gameCharacter.getImpulsionSaut();/*A.add(gameCharacter.getCoord().getZ());n++;/}
}
else {
if (gameCharacter.getCoord().getZ() < coordSol.getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer
a = 0;
}
else{
a = 1;
}
}*/
gameCharacter.evolveCharacter();
if ((nbIterationPerFrame-nbBeforeFramechgt) == nbIterationPerFrame) { // timer pour changer de frame
numberOfMovement = numberOfMovement%2 + 1;
nbBeforeFramechgt = nbIterationPerFrame;
}
else nbBeforeFramechgt--;
characterSkinPath = beginPath + movement + numberOfMovement + ".png";
gameCharacterLoader.setSkinPath(characterSkinPath);
gameCharacterLoader.refreshImage();
}
@Override
public boolean isFinished() {
// le jeu n'est jamais fini
/*if (n >= 10){
System.out.println(A.toString());
return true;
}*/
return false;
}
public static Coordonnees getCoordSol(){
return coordSol;
}
public static Map<String, Boolean> getDirectionJeu() {
return directionJeu;
}
}