Skip to content
Snippets Groups Projects
Commit 29815132 authored by Louis MALTERRE's avatar Louis MALTERRE
Browse files

animations d'attaque faites, y'a encore des trucs a retoucher surement mais actuellement ca marche

LM
parent 4cc33e53
Branches
No related tags found
No related merge requests found
...@@ -123,5 +123,8 @@ public class Character extends Entity{ ...@@ -123,5 +123,8 @@ public class Character extends Entity{
public double getEntityHEIGHT() { public double getEntityHEIGHT() {
return this.characterHEIGHT; return this.characterHEIGHT;
} }
public int getAlpha() {
return alpha;
}
} }
...@@ -8,6 +8,7 @@ import java.util.HashMap; ...@@ -8,6 +8,7 @@ import java.util.HashMap;
public class Controller implements GameController{ public class Controller implements GameController{
private boolean isRightPressed, isLeftPressed, isSpacePressed; private boolean isRightPressed, isLeftPressed, isSpacePressed;
private boolean isLeftCLickPressed;
private HashMap<String,Boolean> cmd = new HashMap<String,Boolean>(); private HashMap<String,Boolean> cmd = new HashMap<String,Boolean>();
/* /*
* commande en cours * commande en cours
...@@ -18,7 +19,8 @@ public class Controller implements GameController{ ...@@ -18,7 +19,8 @@ public class Controller implements GameController{
*/ */
public Controller() { public Controller() {
isRightPressed = false; isLeftPressed = false; isSpacePressed = false; isRightPressed = false; isLeftPressed = false; isSpacePressed = false; isLeftCLickPressed = false; // pour attaquer sur clique gauche
// pour l'instant faut appuyer sur Q mais c'est a changer
} }
/** /**
* getCommand retourne une liste de booleans sous la forme [isRightPressed, isLeftPressed, isSpacePressed] * getCommand retourne une liste de booleans sous la forme [isRightPressed, isLeftPressed, isSpacePressed]
...@@ -28,6 +30,7 @@ public class Controller implements GameController{ ...@@ -28,6 +30,7 @@ public class Controller implements GameController{
cmd.put("Right",isRightPressed); cmd.put("Right",isRightPressed);
cmd.put("Left",isLeftPressed); cmd.put("Left",isLeftPressed);
cmd.put("Jump",isSpacePressed); cmd.put("Jump",isSpacePressed);
cmd.put("Attack",isLeftCLickPressed);
return cmd; return cmd;
} }
@Override @Override
...@@ -39,6 +42,7 @@ public class Controller implements GameController{ ...@@ -39,6 +42,7 @@ public class Controller implements GameController{
case KeyEvent.VK_RIGHT -> isRightPressed = true; case KeyEvent.VK_RIGHT -> isRightPressed = true;
case KeyEvent.VK_LEFT -> isLeftPressed = true; case KeyEvent.VK_LEFT -> isLeftPressed = true;
case KeyEvent.VK_SPACE -> isSpacePressed = true; case KeyEvent.VK_SPACE -> isSpacePressed = true;
case KeyEvent.VK_Q -> isLeftCLickPressed = true;
} }
} }
@Override @Override
...@@ -47,6 +51,7 @@ public class Controller implements GameController{ ...@@ -47,6 +51,7 @@ public class Controller implements GameController{
case KeyEvent.VK_RIGHT -> isRightPressed = false; case KeyEvent.VK_RIGHT -> isRightPressed = false;
case KeyEvent.VK_LEFT -> isLeftPressed = false; case KeyEvent.VK_LEFT -> isLeftPressed = false;
case KeyEvent.VK_SPACE -> isSpacePressed = false; case KeyEvent.VK_SPACE -> isSpacePressed = false;
case KeyEvent.VK_Q -> isLeftCLickPressed = false;
} }
} }
@Override @Override
......
...@@ -4,7 +4,9 @@ import java.io.BufferedReader; ...@@ -4,7 +4,9 @@ import java.io.BufferedReader;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import entity.Character; import entity.Character;
...@@ -22,9 +24,12 @@ public class Jeu implements Game{ ...@@ -22,9 +24,12 @@ public class Jeu implements Game{
String characterSkinPath; // jsp si c'est le jeu qui doit gerer ca, au pire vous pouvez changer String characterSkinPath; // jsp si c'est le jeu qui doit gerer ca, au pire vous pouvez changer
final String beginPath; final String beginPath;
String movement; String movement;
String previousMovement;
int numberOfMovement; int numberOfMovement;
int nbIterationPerFrame = 100; int nbIterationPerFrame = 50;
int nbBeforeFramechgt = nbIterationPerFrame; int nbBeforeFramechgt = nbIterationPerFrame;
//private boolean characterNotMoving = true;
private boolean characterAttacking = false; //boolean necessaire pour rendre l'animation d'attaque prioritaire
public Jeu(String source) { public Jeu(String source) {
...@@ -35,6 +40,7 @@ public class Jeu implements Game{ ...@@ -35,6 +40,7 @@ public class Jeu implements Game{
assert url != null; assert url != null;
beginPath = url.toString().substring(6)+"/"; beginPath = url.toString().substring(6)+"/";
movement = "Character_idle"; movement = "Character_idle";
previousMovement = movement;
numberOfMovement = 1; numberOfMovement = 1;
characterSkinPath = beginPath + movement + numberOfMovement + ".png"; // path premiere frame characterSkinPath = beginPath + movement + numberOfMovement + ".png"; // path premiere frame
/*A = new ArrayList<Double>(); /*A = new ArrayList<Double>();
...@@ -52,58 +58,83 @@ public class Jeu implements Game{ ...@@ -52,58 +58,83 @@ public class Jeu implements Game{
System.out.println("Help not available"); System.out.println("Help not available");
} }
//on remplit la table de directions du jeu
directionJeu = new HashMap<>(); directionJeu = new HashMap<>();
directionJeu.put("Right", false); directionJeu.put("Right", false);
directionJeu.put("Left", false); directionJeu.put("Left", false);
directionJeu.put("Jump", false); directionJeu.put("Jump", false);
directionJeu.put("Attack",false);
//on remplit la map des frames
Map<String,List<String>> tempMap = gameCharacterLoader.getPathTable();
tempMap.put(movement,new ArrayList<String>());
tempMap.get(movement).add("1");
tempMap.get(movement).add("2");
tempMap.put("Character_attack",new ArrayList<String>());
tempMap.get("Character_attack").add("1");
tempMap.get("Character_attack").add("2");
tempMap.get("Character_attack").add("3");
gameCharacterLoader.setPathTable(tempMap);
} }
@Override @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. public void evolve(HashMap<String,Boolean> command) { // command est sous la forme map 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()); previousMovement = movement;
System.out.println(gameCharacter.getCoord().getZ());*/
/*double comX,comZ;
int a = 1;
comX = 0;
comZ = 0;*/
directionJeu.replace("Right", command.get("Right")); directionJeu.replace("Right", command.get("Right"));
directionJeu.replace("Left", command.get("Left")); directionJeu.replace("Left", command.get("Left"));
directionJeu.replace("Jump", command.get("Jump")); directionJeu.replace("Jump", command.get("Jump"));
/*Boolean Right = command.get("Right"); directionJeu.replace("Attack",command.get("Attack"));
Boolean Right = command.get("Right");
boolean Left = command.get("Left"); boolean Left = command.get("Left");
boolean Jump = command.get("Jump"); boolean Jump = command.get("Jump");
boolean Attack = command.get("Attack");
if (Right && Left){}
else if (Right) { //perso evolue dans le jeu
comX = gameCharacter.getVitesseMax(); gameCharacter.evolveCharacter();
}
else if (Left) { //animation du perso dans le jeu (definir la bonne frame a tel instant)
comX = -gameCharacter.getVitesseMax(); if (Attack) {
movement = "Character_attack";
characterAttacking = true;
} }
if (Jump) { if (!Right && !Left && (gameCharacter.getAlpha() == 1) && !characterAttacking){
if (gameCharacter.getCoord().getZ() < coordSol.getZ())a = 0; movement = "Character_idle";
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 //characterNotMoving = false;
a = 0;
} else{ // squelette pour futures implementations
else{ if (!characterAttacking){ //animation d'attaque prioritaire
a = 1; movement = "Character_idle"; //ca changera quand j'aurai les nouvelles frames
} }
}
}*/
gameCharacter.evolveCharacter(); //si on a change de mouvement, le jeu doit redemarrer a la premiere frame correspondante
if (previousMovement != movement){numberOfMovement = 1;nbBeforeFramechgt = nbIterationPerFrame;}
if (numberOfMovement == gameCharacterLoader.getPathTable().get(movement).size()){
//characterNotMoving = true;
if (movement == "Character_attack"){
characterAttacking = false;
}
}
if ((nbIterationPerFrame-nbBeforeFramechgt) == nbIterationPerFrame) { // timer pour changer de frame if ((nbIterationPerFrame-nbBeforeFramechgt) == nbIterationPerFrame) { // timer pour changer de frame
numberOfMovement = numberOfMovement%2 + 1; numberOfMovement = numberOfMovement%gameCharacterLoader.getPathTable().get(movement).size() + 1; //a revoir
nbBeforeFramechgt = nbIterationPerFrame; nbBeforeFramechgt = nbIterationPerFrame;
} }
else nbBeforeFramechgt--; else nbBeforeFramechgt--;
//actualisation de l'image a afficher
characterSkinPath = beginPath + movement + numberOfMovement + ".png"; characterSkinPath = beginPath + movement + numberOfMovement + ".png";
gameCharacterLoader.setSkinPath(characterSkinPath); gameCharacterLoader.setSkinPath(characterSkinPath);
gameCharacterLoader.refreshImage(); gameCharacterLoader.refreshImage();
......
...@@ -2,6 +2,10 @@ package loaders; ...@@ -2,6 +2,10 @@ package loaders;
import entity.Character; import entity.Character;
import java.awt.Image; import java.awt.Image;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
public class CharacterLoader { // classe qui cree le perso public class CharacterLoader { // classe qui cree le perso
...@@ -9,11 +13,14 @@ public class CharacterLoader { // classe qui cree le perso ...@@ -9,11 +13,14 @@ public class CharacterLoader { // classe qui cree le perso
private String skinPath; // chemin du skin a l'instant t du jeu private String skinPath; // chemin du skin a l'instant t du jeu
//private String nameImageOfSkin; // nom de l'image du skin (le truc fonctionne comme ca) //private String nameImageOfSkin; // nom de l'image du skin (le truc fonctionne comme ca)
private Image imageCharacter; private Image imageCharacter;
private Map<String,List<String>> pathTable; // objet utilise a revoir
public CharacterLoader(String path,Character charac){ public CharacterLoader(String path,Character charac){
gameCharacter = charac; gameCharacter = charac;
skinPath = path; skinPath = path;
imageCharacter = new ImageIcon(path).getImage(); imageCharacter = new ImageIcon(path).getImage();
pathTable = new HashMap<String,List<String>>();
} }
public void refreshImage(){ public void refreshImage(){
...@@ -37,5 +44,13 @@ public class CharacterLoader { // classe qui cree le perso ...@@ -37,5 +44,13 @@ public class CharacterLoader { // classe qui cree le perso
this.skinPath = skinPath; this.skinPath = skinPath;
} }
public Map<String, List<String>> getPathTable() {
return pathTable;
}
public void setPathTable(Map<String, List<String>> pathTable) {
this.pathTable = pathTable;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment