Skip to content
Snippets Groups Projects
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;
    }
    
}