Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider dc1604aa rédigé par Pierrick Lermite's avatar Pierrick Lermite
Parcourir les fichiers

Fire parfaitement fonctionnel

parent 54931a1c
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -22,7 +22,7 @@ public class Bomb{
public void explosion(Ground g) throws InterruptedException {
try {
int j = 1;
g.addFire(new Fire(x, y));
g.addFire(new Fire(x, y), g);
for(int i = 1; i <= 4; i++){
switch (i) {
case 1:
......@@ -32,7 +32,7 @@ public class Bomb{
break loop1;
}
if(!(g.getGrid()[x + j ][y] instanceof ImbreakableBlock)){
g.addFire(new Fire(x + j, y));
g.addFire(new Fire(x + j, y), g);
}
if (g.getGrid()[x + j ][y] instanceof OneLifeBlock ||
......@@ -50,7 +50,7 @@ public class Bomb{
}
if(!(g.getGrid()[x][y + j] instanceof ImbreakableBlock)){
g.addFire(new Fire(x, y + j));
g.addFire(new Fire(x, y + j), g);
}
if (g.getGrid()[x][y + j] instanceof OneLifeBlock ||
......@@ -68,7 +68,7 @@ public class Bomb{
}
if(!(g.getGrid()[x - j][y] instanceof ImbreakableBlock)){
g.addFire(new Fire(x - j, y));
g.addFire(new Fire(x - j, y), g);
}
if (g.getGrid()[x - j][y] instanceof OneLifeBlock ||
......@@ -85,7 +85,7 @@ public class Bomb{
break loop4;
}
if(!(g.getGrid()[x][y - j] instanceof ImbreakableBlock)){
g.addFire(new Fire(x, y - j));
g.addFire(new Fire(x, y - j), g);
}
if (g.getGrid()[x][y - j] instanceof OneLifeBlock ||
......@@ -98,6 +98,7 @@ public class Bomb{
}
}
p.decreseadBombLimit();
} catch(Exception e) {
System.out.println(e);
}
......
......@@ -2,36 +2,36 @@ package App.Display;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.ArrayList;
import App.Fire;
import App.Ground;
public class FireDisplay {
private Graphics2D g2;
private ArrayList<Fire> l_f;
private Graphics g;
private Ground ground;
private Fire[][] fires;
private int firesize;
private int blocksize;
public FireDisplay(ArrayList<Fire> fires, Graphics g){
this.l_f = fires;
public FireDisplay(Ground gr, Graphics g){
this.ground = gr;
this.fires = ground.getFireList();
this.g = g;
this.firesize = 60;
this.blocksize = 60;
}
public void draw(){
g2= (Graphics2D)g;
for(int i = 0; i < l_f.size() ; i++){
if(l_f.get(i) != null){
g2.setColor(Color.orange);
int x = l_f.get(i).getX() * blocksize;
int y = l_f.get(i).getY() * blocksize;
g2.fillRect(x, y, firesize, firesize);
Graphics2D[][] l_g = new Graphics2D[ground.getnbX()][ground.getnbY()];
for(int j = 0; j < ground.getnbY(); j++){
for (int i = 0; i < ground.getnbX(); i++){
if(fires[i][j] != null){
l_g[i][j] = (Graphics2D)g;
l_g[i][j].setColor(Color.orange);
l_g[i][j].fillRect(i * blocksize, j * blocksize, firesize, firesize);
}
}
}
}
}
}
......@@ -10,6 +10,8 @@ public class Fire {
private int i; // Coordonnée x sur la grille du terrain
private int j; // Coordonnée y sur la grille du terrain
private int power; // Puissance de l'explosion
private int timer;
private int stack;
/**
* Constructeur de la classe Fire.
......@@ -21,6 +23,8 @@ public class Fire {
this.i = i;
this.j = j;
this.power = 1;
this.timer = 1500;
this.stack = 1;
}
/**
......@@ -69,4 +73,18 @@ public class Fire {
public int getY(){
return j;
}
public int getTimer(){
return timer;
}
public int getstack(){
return stack;
}
public void addstack(){
stack += 1;
}
public void substack(){
stack -=1;
}
}
......@@ -160,7 +160,7 @@ public class GamePanel extends JPanel implements Runnable{
bombD.draw();
// Fire
FireDisplay fireD = new FireDisplay(game.getFireList(), g);
FireDisplay fireD = new FireDisplay(game,g);
fireD.draw();
//Joueur 1
......
......@@ -14,7 +14,7 @@ public class Ground {
public ArrayList<Bomb> bombs;
private ArrayList<Player> players;
private Item[][] gridItem;
private ArrayList<Fire> fires;
private Fire[][] fires;
/**
* Constructeur de la classe Ground.
......@@ -33,7 +33,8 @@ public class Ground {
players.add(new Player(795,675, "player2"));
bombs = new ArrayList<Bomb>();
this.gridItem = new Item[nbx][nby];
fires = new ArrayList<Fire>();
fires = new Fire[nbx][nby];
}
/**
......@@ -141,8 +142,10 @@ public class Ground {
* Applique les dégâts aux joueurs en contact avec le feu.
*/
public void testContactFire(){
for (int k = 0; k < fires.size() ; k++){
fires.get(k).ifContactPlayers(this);
for (int i = 0; i < nbx ; i++){
for (int j = 0; j < nby ; j++){
fires[i][j].ifContactPlayers(this);
}
}
}
......@@ -207,7 +210,7 @@ public class Ground {
* Retourne la liste des feux (explosions).
* @return La liste des feux.
*/
public ArrayList<Fire> getFireList(){
public Fire[][] getFireList(){
return fires;
}
......@@ -347,55 +350,40 @@ public class Ground {
}
/**
* Lance la disparition du feu après un délai.
* Ajoute le feu à la liste des feux.
* @param f Feu à ajouter.
* Ajoute une instance de Fire à la liste des explosions en cours.
* Imprime un message de confirmation avec les coordonnées de l'explosion ajoutée.
* Déclenche le processus de disparition de l'explosion après un certain délai.
*
* @param f Instance de Fire à ajouter à la liste des explosions.
*/
public void disappearFire(Fire f){
public void addFire(Fire f, Ground ground){
int x = f.getX();
int y = f.getY();
if (fires[x][y] != null){
fires[x][y].addstack();
}
else{
fires[x][y] = f;
}
System.out.println("FIRE ADDED AT " + f.getX() + " " + f.getY());
//Timer destruction
new Thread() {
@Override
public void run() {
try {
Thread.sleep(1500);
Thread.sleep(f.getTimer());
} catch (InterruptedException e) {
e.printStackTrace();
}
deleteFire(f);
if(fires[x][y].getstack() > 1){
fires[x][y].substack();
}
else{
fires[x][y] = null;
}
}
}.start();
}
/**
* Ajoute une instance de Fire à la liste des explosions en cours.
* Imprime un message de confirmation avec les coordonnées de l'explosion ajoutée.
* Déclenche le processus de disparition de l'explosion après un certain délai.
*
* @param f Instance de Fire à ajouter à la liste des explosions.
*/
public void addFire(Fire f){
fires.add(f);
System.out.println("FIRE ADDED AT " + f.getX() + " " + f.getY());
disappearFire(f);
}
/**
* Supprime une instance de Fire de la liste des explosions en cours.
* Recherche l'instance spécifiée par ses coordonnées x et y.
* Imprime un message de confirmation avec les coordonnées de l'explosion supprimée.
*
* @param f Instance de Fire à supprimer de la liste des explosions.
*/
public void deleteFire(Fire f){
int k = 0;
while (k >= 0){
if(fires.get(k) != null){
if(fires.get(k).getX() == f.getX() && fires.get(k).getY() == f.getY()){
System.out.println("FIRE REMOVE AT " + f.getX() + " " + f.getY());
fires.remove(k);
k--;
}
}
}
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter