Ajout de creature

- Tout les x s une creature apparait
- Déplacement de celle ci
main
ZIRTR0X 4 years ago
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();
}
}

@ -13,6 +13,7 @@ import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.util.Duration;
import model.Case;
import model.GameLoop;
import model.Map;
import java.io.IOException;
@ -28,6 +29,7 @@ public class GamePlayController implements Initializable {
@FXML public ImageView persoImageView;
@FXML public AnchorPane levelRoot;
@FXML public ImageView de;
@FXML public ImageView creatureImageView = new ImageView();
PersoController persoController = new PersoController();
Case caseActuelle;
@ -40,14 +42,20 @@ public class GamePlayController implements Initializable {
public void initialize(URL url, ResourceBundle resourceBundle) {
String id = levelRoot.getId();
if(id.equals("1")){
levelRoot.getChildren().addAll(mapController.mapInitialisation(1), persoController.playerInitialisation(1,2, mapController.getMap()));
levelRoot.getChildren().addAll(mapController.mapInitialisation(1), persoController.playerInitialisation(1,2, mapController.getMap()),creatureImageView);
persoController.setActualCase(mapController.getStartCase());
GameLoop loop = new GameLoop(1, mapController.getMap(), creatureImageView);
loop.start();
}
else if(id.equals("2")){
GameLoop loop = new GameLoop(2, mapController.getMap(), creatureImageView);
loop.start();
levelRoot.getChildren().addAll(mapController.mapInitialisation(2), persoController.playerInitialisation(2,2, mapController.getMap()));
persoController.setActualCase(mapController.getStartCase());
}
else{
GameLoop loop = new GameLoop(2, mapController.getMap(), creatureImageView);
loop.start();
levelRoot.getChildren().addAll(mapController.mapInitialisation(3), persoController.playerInitialisation(3,2, mapController.getMap()));
persoController.setActualCase(mapController.getStartCase());
}

@ -37,6 +37,7 @@ public class MapController implements Initializable {
private final Image w = new Image("/image/terrain/chemin.png");
@Override
public void initialize(java.net.URL location, java.util.ResourceBundle resources) {
@ -45,7 +46,6 @@ public class MapController implements Initializable {
public void createMap(int difficulty) {
int[][] coordFirstDifficultyMap = {{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}};
//int[][] coordFirstDifficultyMap = {{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,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}};
if (difficulty == 1) {
int j = 1;
for(int[] i : coordFirstDifficultyMap){

@ -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;
}
}

@ -30,9 +30,6 @@ public class Main extends Application {
primaryStage.setScene(new Scene(root, 900, 600));
primaryStage.setResizable(false);
primaryStage.show();
//boucle de lecture
GameLoop loop = new GameLoop();
loop.start();
//début musique
ArrayList<Musique> musiqueListe = new ArrayList<Musique>();

@ -1,19 +1,40 @@
package model;
import controller.CreatureController;
import javafx.fxml.FXML;
import javafx.scene.layout.AnchorPane;
import javafx.scene.image.ImageView;
public class GameLoop {
private Thread timer;
private int lv;
private Map map;
private CreatureController c;
@FXML public ImageView creatureImageView;
public GameLoop(int lv, Map map, ImageView creatureImageView){
this.lv = lv;
this.map = map;
this.creatureImageView = creatureImageView;
}
public void start() {
System.out.println("GameLoop.start()");
c = new CreatureController(lv,map, creatureImageView);
timer = new Thread("timer") {
public void run() {
int nbMinutes = 1;
int nbMinutes = 10;
int i = 0;
while(true) {
if(i == 0) {
//action
try {
c.playerInitialisation();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Timer = " + i);
i = 10 * nbMinutes;
i = 60 * nbMinutes;
try {
timer.sleep(1000);
} catch (InterruptedException e) {

@ -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…
Cancel
Save