SAe1.1
SAe2.1
commentente
Arme.class
Arme.java
Case.class
Case.java
CaseBonus.class
CaseBonus.java
Controleur.class
Controleur.java
DonjonInfini.class
DonjonInfini.java
Heros.class
Heros.java
Monstre.class
Monstre.java
Or.class
Or.java
Potion.class
Potion.java
SAe2.1.tar
Sujet.pdf
VueCase.class
VueCase.java
VuePlateau.class
VuePlateau.java
226 lines
7.1 KiB
Java
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);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|