SAe/SAe2.1/Controleur.java
2023-05-19 17:13:41 +02:00

226 lines
7.1 KiB
Java

import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.event.*;
public class Controleur extends JFrame implements KeyListener {
private Case[][] tableauCase;
private VuePlateau plateau;
private int xHeros;
private int yHeros;
private int points;
public Controleur() {
this.xHeros = 1;
this.yHeros = 1;
this.points = 0;
this.tableauCase = new Case[3][3];
VueCase[][] tabCase = new VueCase[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == this.xHeros && j == this.yHeros) {
this.tableauCase[i][j] = new Heros(i, j);
tabCase[i][j] = new VueCase(tableauCase[i][j]);
tabCase[i][j].setLocation(i * 200, j * 200);
tabCase[i][j].setSize(200, 200);
this.add(tabCase[i][j]);
} else {
Case c = new Case(i, j, "temp");
this.tableauCase[i][j] = c.newRandomCase(i, j);
tabCase[i][j] = new VueCase(tableauCase[i][j]);
tabCase[i][j].setLocation(i * 200, j * 200);
tabCase[i][j].setSize(200, 200);
this.add(tabCase[i][j]);
}
}
}
this.plateau = new VuePlateau(tabCase);
this.add(this.plateau);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
this.addKeyListener(this);
}
private void rencontre(int xNew, int yNew) {
int tempX = xHeros;
int tempY = yHeros;
int tempZ;
if (!this.tableauCase[xHeros][yHeros].rencontrer(this.tableauCase[xNew][yNew])) {
if (this.tableauCase[xHeros][yHeros].getArme().getValue() > 0) {
if (this.tableauCase[xHeros][yHeros].getArme().getValue() > this.tableauCase[xNew][yNew].getPv()) {
tempZ=this.tableauCase[xNew][yNew].getPv();
this.tableauCase[xHeros][yHeros].setArme(this.tableauCase[xHeros][yHeros].getArme().getValue()-tempZ);
this.tableauCase[xNew][yNew] = new Or(this.tableauCase[xNew][yNew].getPv() ,xNew ,yNew );
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
} else {
this.tableauCase[xNew][yNew].setPv(this.tableauCase[xNew][yNew].getPv() - this.tableauCase[xHeros][yHeros].getArme().getValue());
this.tableauCase[xHeros][yHeros].setArme(0);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
}
}
} else {
if (this.tableauCase[xNew][yNew].type.equals("or")) {
this.points += this.tableauCase[xNew][yNew].getValue();
this.plateau.upPoint(this.tableauCase[xNew][yNew].getValue());
this.tableauCase[xNew][yNew] = this.tableauCase[xHeros][yHeros];
this.tableauCase[xHeros][yHeros] = new Case(xHeros, yHeros, "temp").newRandomCase(xHeros, yHeros);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
xHeros = xNew;
yHeros = yNew;
}
if (this.tableauCase[xNew][yNew].type.equals("arme")) {
if (this.tableauCase[xHeros][yHeros].getArme().getValue() < this.tableauCase[xNew][yNew].getValue()) {
this.tableauCase[xHeros][yHeros].setArme(this.tableauCase[xNew][yNew].getValue());
this.points += this.tableauCase[xNew][yNew].getValue();
this.plateau.upPoint(this.tableauCase[xNew][yNew].getValue());
this.tableauCase[xNew][yNew] = this.tableauCase[xHeros][yHeros];
this.tableauCase[xHeros][yHeros] = new Case(xHeros, yHeros, "temp").newRandomCase(xHeros, yHeros);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
xHeros = xNew;
yHeros = yNew;
} else {
this.points += this.tableauCase[xNew][yNew].getValue();
this.plateau.upPoint(this.tableauCase[xNew][yNew].getValue());
this.tableauCase[xNew][yNew] = this.tableauCase[xHeros][yHeros];
this.tableauCase[xHeros][yHeros] = new Case(xHeros, yHeros, "temp").newRandomCase(xHeros, yHeros);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
xHeros = xNew;
yHeros = yNew;
}
}
if (this.tableauCase[xNew][yNew].type.equals("potion")) {
this.points += this.tableauCase[xNew][yNew].getValue();
this.plateau.upPoint(this.tableauCase[xNew][yNew].getValue());
this.tableauCase[xNew][yNew] = this.tableauCase[xHeros][yHeros];
this.tableauCase[xHeros][yHeros] = new Case(xHeros, yHeros, "temp").newRandomCase(xHeros, yHeros);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
xHeros = xNew;
yHeros = yNew;
}
if (this.tableauCase[xNew][yNew].type.equals("monstre")) {
this.tableauCase[xHeros][yHeros].setPv(this.tableauCase[xHeros][yHeros].getPv()-this.tableauCase[xNew][yNew].getPv());
if (this.tableauCase[xHeros][yHeros].getPv() <= 0) {
System.out.println("GameOver, votre score final est de : " + this.points);
this.dispose();
} else {
this.points += this.tableauCase[xNew][yNew].getValue();
this.plateau.upPoint(this.tableauCase[xNew][yNew].getValue());
this.tableauCase[xNew][yNew] = this.tableauCase[xHeros][yHeros];
this.tableauCase[xHeros][yHeros] = new Case(xHeros, yHeros, "temp").newRandomCase(xHeros, yHeros);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
xHeros = xNew;
yHeros = yNew;
}
}
}
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
int tempX = xHeros;
int tempY = yHeros;
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
tempX = xHeros;
tempY = yHeros;
if (tempY + 1 > 2) {
System.out.println("Impossible d'aller plus bas.");
} else {
this.rencontre(tempX, tempY + 1);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
}
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
tempX = xHeros;
tempY = yHeros;
if (tempY - 1 < 0) {
System.out.println("Impossible d'aller plus haut.");
} else {
this.rencontre(tempX, tempY - 1);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
}
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
tempX = xHeros;
tempY = yHeros;
if (tempX - 1 < 0) {
System.out.println("Impossible d'aller plus à gauche.");
} else {
this.rencontre(tempX - 1, tempY);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
this.plateau.update(this.tableauCase[i][j], i, j);
}
}
}
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
tempX = xHeros;
tempY = yHeros;
if (tempX + 1 > 2) {
System.out.println("Impossible d'aller plus à droite.");
} else {
this.rencontre(tempX + 1, tempY);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
plateau.update(this.tableauCase[i][j], i, j);
}
}
}
}
}
}