parent
1e90037d1f
commit
791c63993f
@ -0,0 +1,293 @@
|
||||
package controller;
|
||||
|
||||
import javafx.animation.KeyFrame;
|
||||
import javafx.animation.Timeline;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.util.Duration;
|
||||
import model.Case;
|
||||
import model.Creature;
|
||||
import model.Map;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class CreatureController {
|
||||
private int lv;
|
||||
//private final Image dog1 = new Image("/image/creature/dog1.2.png");
|
||||
private Creature creature;
|
||||
@FXML public ImageView creatureImageView;
|
||||
@FXML public AnchorPane levelRoot;
|
||||
private Map map;
|
||||
private MapCreatureController mapCreatureController;
|
||||
private Case caseCreatureStart;
|
||||
private Thread Creature;
|
||||
private String imagePath;
|
||||
private Case caseActuelle;
|
||||
private Case caseAncienne;
|
||||
private Image imagePerso1;
|
||||
private Image imagePerso2;
|
||||
private Image imagePerso3;
|
||||
private Image imagePerso4;
|
||||
private Image imagePerso5;
|
||||
private Image imagePerso6;
|
||||
private Image imagePerso7;
|
||||
private Image imagePerso8;
|
||||
private Image imagePerso9;
|
||||
private Image imagePerso10;
|
||||
private Image imagePerso11;
|
||||
private Image imagePerso12;
|
||||
|
||||
public CreatureController(int lv,Map map, ImageView creatureImageView) {
|
||||
this.lv = lv;
|
||||
this.map = map;
|
||||
this.creatureImageView = creatureImageView;
|
||||
}
|
||||
public void createCreature(int animal) {
|
||||
if(animal == 1) {
|
||||
this.creature = new Creature(1,"/image/creature/dog1.",0,0 );
|
||||
//creatureImageView.setImage(dog1);
|
||||
}
|
||||
if(animal == 2) {
|
||||
this.creature = new Creature(2,"/image/personnage/Perso1.",0,0 );
|
||||
}
|
||||
if(animal == 3) {
|
||||
this.creature = new Creature(2,"/image/personnage/Perso2.",0,0 );
|
||||
}
|
||||
if(animal == 4) {
|
||||
this.creature = new Creature(2,"/image/personnage/Perso3.",0,0 );
|
||||
}
|
||||
}
|
||||
|
||||
public void playerInitialisation() throws InterruptedException {
|
||||
mapCreatureController = new MapCreatureController(lv, map);
|
||||
mapCreatureController.creerMapCreature();
|
||||
int max = 4;
|
||||
int min = 1;
|
||||
double a = Math.random() * ( max - min );
|
||||
int numCreature = (int) Math.round(a) + min;
|
||||
System.out.println(numCreature);
|
||||
createCreature(numCreature);
|
||||
|
||||
caseCreatureStart = mapCreatureController.getStartCase();
|
||||
creature.setCoordX(caseCreatureStart.getCoordX());
|
||||
creature.setCoordY(caseCreatureStart.getCoordY());
|
||||
caseActuelle = caseCreatureStart;
|
||||
|
||||
imagePath = getPath();
|
||||
String pathStart = imagePath + "2.png";
|
||||
creatureImageView.setImage(new Image(pathStart));
|
||||
creatureImageView.setId("persoImageView");
|
||||
creatureImageView.setFitWidth(35);
|
||||
creatureImageView.setFitHeight(35);
|
||||
System.out.println("X :" + getX());
|
||||
creatureImageView.setLayoutX(getX()*map.getSizeTile()-5);
|
||||
creatureImageView.setLayoutY(getY()*map.getSizeTile()-5);
|
||||
//levelRoot.getChildren().addAll(creatureImageView);
|
||||
|
||||
Creature = new Thread("Creature") {
|
||||
public void run() {
|
||||
for (int i = 0; i < mapCreatureController.getSizeListeCase()-1; i++) {
|
||||
try {
|
||||
movePlayerNextCase();
|
||||
Creature.sleep(800);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Creature.start();
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void movePlayerNextCase() throws InterruptedException {
|
||||
caseAncienne = caseActuelle;
|
||||
System.out.println(caseActuelle);
|
||||
caseActuelle = mapCreatureController.getNextCase(caseActuelle);
|
||||
Timeline timelines = new Timeline();
|
||||
timelines.setCycleCount(1);
|
||||
int time1 = 100;
|
||||
int time2 = 200;
|
||||
int time3 = 300;
|
||||
int time4 = 400;
|
||||
int time5 = 500;
|
||||
int time6 = 600;
|
||||
int time7 = 700;
|
||||
int time8 = 800;
|
||||
int avancementCase = 4;
|
||||
int tempsattente = 00;
|
||||
//animation déplacement vers la droite
|
||||
if(caseActuelle.getCoordX() > caseAncienne.getCoordX()){
|
||||
System.out.println(imagePath + "7.png");
|
||||
imagePerso7 = new Image(imagePath + "7.png");
|
||||
imagePerso8 = new Image(imagePath + "8.png");
|
||||
imagePerso9 = new Image(imagePath + "9.png");
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> {
|
||||
creatureImageView.setImage(imagePerso8);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
|
||||
creatureImageView.setImage(imagePerso7);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
|
||||
creatureImageView.setImage(imagePerso9);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
|
||||
creatureImageView.setImage(imagePerso7);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
|
||||
creatureImageView.setImage(imagePerso9);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
|
||||
creatureImageView.setImage(imagePerso7);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
|
||||
creatureImageView.setImage(imagePerso9);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
|
||||
creatureImageView.setImage(imagePerso8);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()+avancementCase);
|
||||
}));
|
||||
timelines.play();
|
||||
}
|
||||
//animation déplacement vers la gauche
|
||||
if(caseActuelle.getCoordX() < caseAncienne.getCoordX()){
|
||||
imagePerso4 = new Image(imagePath + "4.png");
|
||||
imagePerso5 = new Image(imagePath + "5.png");
|
||||
imagePerso6 = new Image(imagePath + "6.png");
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> {
|
||||
creatureImageView.setImage(imagePerso5);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
|
||||
creatureImageView.setImage(imagePerso4);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
|
||||
creatureImageView.setImage(imagePerso6);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
|
||||
creatureImageView.setImage(imagePerso4);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
|
||||
creatureImageView.setImage(imagePerso6);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
|
||||
creatureImageView.setImage(imagePerso4);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
|
||||
creatureImageView.setImage(imagePerso6);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
|
||||
creatureImageView.setImage(imagePerso5);
|
||||
creatureImageView.setLayoutX(creatureImageView.getLayoutX()-avancementCase);
|
||||
}));
|
||||
timelines.play();
|
||||
}
|
||||
//animation déplacement vers le haut
|
||||
if(caseActuelle.getCoordY() < caseAncienne.getCoordY()){
|
||||
imagePerso10 = new Image(imagePath + "10.png");
|
||||
imagePerso11 = new Image(imagePath + "11.png");
|
||||
imagePerso12 = new Image(imagePath + "12.png");
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> {
|
||||
creatureImageView.setImage(imagePerso11);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
|
||||
creatureImageView.setImage(imagePerso10);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
|
||||
creatureImageView.setImage(imagePerso12);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
|
||||
creatureImageView.setImage(imagePerso10);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
|
||||
creatureImageView.setImage(imagePerso12);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
|
||||
creatureImageView.setImage(imagePerso10);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
|
||||
creatureImageView.setImage(imagePerso12);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
|
||||
creatureImageView.setImage(imagePerso11);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()-avancementCase);
|
||||
}));
|
||||
timelines.play();
|
||||
}
|
||||
//animation déplacement vers le bas
|
||||
if(caseActuelle.getCoordY() > caseAncienne.getCoordY()){
|
||||
imagePerso1 = new Image(imagePath + "1.png");
|
||||
imagePerso2 = new Image(imagePath + "2.png");
|
||||
imagePerso3 = new Image(imagePath + "3.png");
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> {
|
||||
creatureImageView.setImage(imagePerso2);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
|
||||
creatureImageView.setImage(imagePerso1);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
|
||||
creatureImageView.setImage(imagePerso3);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
|
||||
creatureImageView.setImage(imagePerso1);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
|
||||
creatureImageView.setImage(imagePerso3);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
|
||||
creatureImageView.setImage(imagePerso1);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
|
||||
creatureImageView.setImage(imagePerso3);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
|
||||
creatureImageView.setImage(imagePerso2);
|
||||
creatureImageView.setLayoutY(creatureImageView.getLayoutY()+avancementCase);
|
||||
}));
|
||||
timelines.play();
|
||||
}
|
||||
}
|
||||
public String getPath(){
|
||||
return creature.getImage();
|
||||
}
|
||||
public int getX(){
|
||||
return creature.getCoordX();
|
||||
|
||||
}
|
||||
|
||||
public int getY(){
|
||||
return creature.getCoordY();
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package controller;
|
||||
|
||||
import model.Case;
|
||||
import model.Map;
|
||||
import model.MapCreature;
|
||||
|
||||
public class MapCreatureController {
|
||||
private int lv;
|
||||
private MapCreature mapCreature;
|
||||
private Map map;
|
||||
private int[][] coordList;
|
||||
public MapCreatureController(int lv, Map map) {
|
||||
this.lv = lv;
|
||||
this.map = map;
|
||||
}
|
||||
public void creerMapCreature() {
|
||||
int[][] coordLv1 = {{0,-1},{0,0},{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},{8,0},{9,0},{9,-1}};
|
||||
//int[][] coordLv1 = {{1,0},{2,0},{3,0},{4,0},{5,0},{6,0},{7,0},{8,0},{9,0}};
|
||||
//int[][] coordLv1 = {{0,24},{1,24},{2,24},{3,24},{4,24},{5,24},{5,23},{5,22},{5,21},{5,20},{5,19},{5,18},{6,18},{7,18},{8,18},{9,18},{10,18},{11,18},{12,18},{12,17},{12,16},{12,15},{12,14},{12,13},{12,12},{11,12},{10,12},{9,12},{8,12},{7,12},{6,12},{5,12},{4,12},{3,12},{3,11},{3,10},{3,9},{3,8},{3,7},{3,6},{3,5},{3,4},{3,3},{4,3},{5,3},{6,3},{7,3},{8,3},{9,3},{10,3},{11,3},{12,3},{13,3},{14,3},{15,3},{16,3},{17,3},{18,3},{19,3},{19,4},{19,5},{19,6},{19,7},{19,8},{19,9},{19,10},{20,10},{21,10},{22,10},{23,10},{24,10},{24,11},{24,12},{24,13},{24,14},{24,15},{24,16},{24,17},{24,18},{24,19},{24,20},{24,21},{24,22},{24,23},{24,24},{25,24},{26,24},{27,24},{28,24},{29,24}};
|
||||
|
||||
|
||||
mapCreature = new MapCreature(map.getSizeTile(), map.getSizeMap());
|
||||
|
||||
if(lv == 1) {
|
||||
int j = 1;
|
||||
coordList = coordLv1;
|
||||
for(int[] i : coordList){
|
||||
boolean bool = j == 1;
|
||||
System.out.println("Taille case creature :" +coordList.length);
|
||||
Case case1 = new Case(j, i[0], i [1], bool, false, map);
|
||||
mapCreature.addCase(case1);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
if(lv == 2) {
|
||||
|
||||
}
|
||||
if(lv == 3) {
|
||||
|
||||
}
|
||||
}
|
||||
public MapCreature getMap(){
|
||||
return this.mapCreature;
|
||||
}
|
||||
|
||||
public Case getNextCase(Case c){
|
||||
return mapCreature.getNextCase(c);
|
||||
}
|
||||
|
||||
public Case getStartCase(){
|
||||
return mapCreature.getStartCase();
|
||||
}
|
||||
|
||||
public int getSizeListeCase(){
|
||||
return coordList.length;
|
||||
}
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class MapCreature {
|
||||
private final int sizeTile;
|
||||
private final int sizeMap;
|
||||
private final ArrayList<Case> map = new ArrayList<>();
|
||||
private int coordStartX;
|
||||
private int coordStartY;
|
||||
|
||||
public MapCreature(int sizeTile, int sizeMap) {
|
||||
this.coordStartX = getCoordStartX();
|
||||
this.coordStartY = getCoordStartY();
|
||||
this.sizeTile = sizeTile;
|
||||
this.sizeMap = sizeMap;
|
||||
}
|
||||
|
||||
public void addCase(Case c) {
|
||||
this.map.add(c);
|
||||
if(c.isStart){
|
||||
setCoordStartX(c.coordX);
|
||||
setCoordStartY(c.coordY);
|
||||
}
|
||||
}
|
||||
public void removeCase(Case c) {
|
||||
this.map.remove(c);
|
||||
}
|
||||
public ArrayList<Case> getMap() {
|
||||
return this.map;
|
||||
}
|
||||
public int getSizeTile() {
|
||||
return this.sizeTile;
|
||||
}
|
||||
public int getSizeMap() {
|
||||
return this.sizeMap;
|
||||
}
|
||||
public int getCoordStartX(){
|
||||
return coordStartX;
|
||||
}
|
||||
public void setCoordStartX(int x){
|
||||
this.coordStartX = x;
|
||||
}
|
||||
public int getCoordStartY(){
|
||||
return coordStartY;
|
||||
}
|
||||
public void setCoordStartY(int y){
|
||||
this.coordStartY = y;
|
||||
}
|
||||
|
||||
public Case getNextCase(Case c){
|
||||
int i;
|
||||
int j;
|
||||
for(i = 0; i < this.map.size(); i++){
|
||||
if(c == this.map.get(i)){
|
||||
j=i+1;
|
||||
System.out.println("i : "+i+" j : "+j);
|
||||
return this.map.get(j);
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
public Case getStartCase(){
|
||||
for(Case c : this.map){
|
||||
if(c.isStart){
|
||||
System.out.println(c);
|
||||
return c;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue