From 0fff33bfc2e7a3193d82d0ef950b4fdc493c5a00 Mon Sep 17 00:00:00 2001 From: Brugneaux Louis <louis.brugneaux3@etu.univ-lorraine.fr> Date: Tue, 13 Dec 2022 21:19:31 +0100 Subject: [PATCH] =?UTF-8?q?Nouvelle=20map=20avec=20obstacles=20bien=20cr?= =?UTF-8?q?=C3=A9=C3=A9s=20mais=20bug=20avec=20les=20monstres?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/entity/Monster.java | 7 +-- MAVENProject/src/main/java/jeu/Jeu.java | 13 +++--- .../src/main/java/loaders/LoadSave.java | 8 +++- .../src/main/java/map/LevelManager.java | 42 +++++++++++++----- MAVENProject/src/main/java/start/Main.java | 3 +- .../main/resources/Obstacles/level_one2.png | Bin 1092 -> 0 bytes .../resources/Obstacles/level_one_monster.png | Bin 0 -> 916 bytes 7 files changed, 53 insertions(+), 20 deletions(-) delete mode 100644 MAVENProject/src/main/resources/Obstacles/level_one2.png create mode 100644 MAVENProject/src/main/resources/Obstacles/level_one_monster.png diff --git a/MAVENProject/src/main/java/entity/Monster.java b/MAVENProject/src/main/java/entity/Monster.java index f1916d4..57c8bbd 100644 --- a/MAVENProject/src/main/java/entity/Monster.java +++ b/MAVENProject/src/main/java/entity/Monster.java @@ -9,6 +9,7 @@ import jeu.Jeu; import map.Obstacle; import static jeu.Jeu.getGameCharacter; +import static jeu.Jeu.getObstacleTable; import java.util.ArrayList; import java.util.HashMap; @@ -51,7 +52,7 @@ public class Monster extends Entity{ public void collisionGestion(){ //recupere la liste des obstacles dans le voisinage - List<Obstacle> listeObstaclesInVoisinage = obstacleInVoisinage(); + List<Obstacle> listeObstaclesInVoisinage = getObstacleTable(); //stocke l'obstacle avec lequel il y a eu collision HashMap<Obstacle,PositionCollision> collisionsPresentes = new HashMap<Obstacle,PositionCollision>(); @@ -62,7 +63,7 @@ public class Monster extends Entity{ //on set alpha a 0 (on le suppose dans les airs) alpha = 0; - + obstacleBeneath = Jeu.getSol(); //on parcourt pour tester si il est sur un block for (int i=0;i<collisionsPresentes.size();i++){ //si on trouve on sort de la boucle (pas besoin d'aller plus loin) @@ -126,7 +127,7 @@ public class Monster extends Entity{ deplacements(); collisionGestion(); // ca merde attaque(); - updateVoisinage(); + //updateVoisinage(); this.setHitBox(new HitBox(this.getCoord(),entityHEIGHT,entityWIDTH)); updateNbFrameInvincible(); diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java index fec86ac..b34ee78 100644 --- a/MAVENProject/src/main/java/jeu/Jeu.java +++ b/MAVENProject/src/main/java/jeu/Jeu.java @@ -61,7 +61,7 @@ public class Jeu implements Game{ private boolean characterAttacking = false; //boolean necessaire pour rendre l'animation d'attaque prioritaire - public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,850),56,1000000)); + public static Obstacle sol = new Obstacle(new HitBox(new Coordonnees(200,1092),56,1000000)); public static List<Obstacle> obstacleTable = new ArrayList<>(); private static List<Monster> monsterList = new ArrayList<>(); @@ -69,7 +69,7 @@ public class Jeu implements Game{ private static List<Coffre> coffreTable = new ArrayList<>(); public final static int TILES_DEFAULT_SIZE=32; - public final static float SCALE=1.25f; + public final static float SCALE=1.75f; public final static int TILES_IN_WIDTH = 60; public final static int TILES_IN_HEIGHT = 20; public final static int TILES_SIZE = (int) (TILES_DEFAULT_SIZE*SCALE); @@ -89,7 +89,8 @@ public class Jeu implements Game{ /*A = new ArrayList<Double>(); n = 0;*/ - LevelManager levelManager = new LevelManager(); + levelManager = new LevelManager(); + levelManager.generateObstacleTable(); @@ -114,10 +115,12 @@ public class Jeu implements Game{ //faut supp la pour table obstacles - obstacleTable= levelManager.generateObstacleTable(); - obstacleTable.add(sol); + obstacleTable= levelManager.getListeObstacle(); + obstacleTable.add(sol); + monsterList= levelManager.getListeMonster(); + /*obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(300,550),32,128))); obstacleTable.add(new Obstacle(new HitBox(new Coordonnees(800, 625),150,50))); diff --git a/MAVENProject/src/main/java/loaders/LoadSave.java b/MAVENProject/src/main/java/loaders/LoadSave.java index ad63e2a..ef79cd1 100644 --- a/MAVENProject/src/main/java/loaders/LoadSave.java +++ b/MAVENProject/src/main/java/loaders/LoadSave.java @@ -14,7 +14,7 @@ public class LoadSave { public static final String LEVEL_SPRITES = "Obstacles/Map_sprites.png"; - public static final String LEVEL_ONE = "Obstacles/level_one.png"; + public static final String LEVEL_ONE = "Obstacles/level_one_monster.png"; public static BufferedImage GetSpriteAtlas(String fileName) { BufferedImage img = null; @@ -58,6 +58,12 @@ public class LoadSave { value = 12; if (131<=value && value <= 150) value = 11; + //MOnstres à pied + if (151<=value && value <= 170) + value = 13; + //Bat + if (171<=value && value <= 190) + value = 14; lvlData[j][i] = value; } return lvlData; diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java index 241c8d8..46c084e 100644 --- a/MAVENProject/src/main/java/map/LevelManager.java +++ b/MAVENProject/src/main/java/map/LevelManager.java @@ -5,6 +5,8 @@ import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; +import entity.Bat; +import entity.Monster; import environnement.Coordonnees; import environnement.HitBox; import jeu.Jeu; @@ -17,6 +19,8 @@ public class LevelManager { private Painter painter; private BufferedImage[] levelSprite; private Level levelOne; + private List<Obstacle> listeObstacle= new ArrayList<>(); + private List<Monster> listeMonster= new ArrayList<>(); public LevelManager() { importOutsideSprites(); @@ -42,8 +46,8 @@ public class LevelManager { }*/ } - public List<Obstacle> generateObstacleTable() { - List<Obstacle> liste = new ArrayList<>(); + public void generateObstacleTable() { + for (int j = 0; j < Jeu.TILES_IN_HEIGHT; j++) for (int i = 0; i < Jeu.TILES_IN_WIDTH; i++) { int index = levelOne.getSpriteIndex(i, j); @@ -51,35 +55,53 @@ public class LevelManager { //Index selon la couleur associée au bloc if (index==0) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); } if (index==1) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); } if (index==2) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), 2*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-2*Jeu.TILES_SIZE/2), 2*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE))); } if (index==3) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), 1*Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+2*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE))); } if (index==5) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), 1*Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+3*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE))); } + //Coffres if (index==11) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), Jeu.TILES_SIZE, Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), Jeu.TILES_SIZE, Jeu.TILES_SIZE))); } if (index==25) { - liste.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i, Jeu.TILES_SIZE * j), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); + listeObstacle.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE))); + + } + //Monstres à pied + /*if (index==13) { + listeMonster.add(new Monster(new Coordonnees(Jeu.TILES_SIZE * i+30/2, Jeu.TILES_SIZE * j-62/2), 1000, 30, 60, 1,5)); } + //chauve-souris + if (index==14) { + listeMonster.add(new Bat(new Coordonnees(Jeu.TILES_SIZE * i+20/2, Jeu.TILES_SIZE * j-32/2), 1, 3)); + + }*/ } - return liste; + } + + public List<Obstacle> getListeObstacle() { + return listeObstacle; + } + + public List<Monster> getListeMonster() { + return listeMonster; } public void update() { diff --git a/MAVENProject/src/main/java/start/Main.java b/MAVENProject/src/main/java/start/Main.java index de5a3c5..e89553a 100644 --- a/MAVENProject/src/main/java/start/Main.java +++ b/MAVENProject/src/main/java/start/Main.java @@ -1,6 +1,7 @@ package start; import jeu.Painter; +import map.LevelManager; import spotify.MP3; import engine.GameEngineGraphical; @@ -18,7 +19,7 @@ public class Main { Jeu game = new Jeu("helpFilePacman.txt"); Painter painter = new Painter(); Controller controller = new Controller(); - + //pour la musique MP3 mp3 = new MP3("cyberPacMusic1bon.wav"); diff --git a/MAVENProject/src/main/resources/Obstacles/level_one2.png b/MAVENProject/src/main/resources/Obstacles/level_one2.png deleted file mode 100644 index cea31bb2c7c094fce1a6a9ac189959214952c777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1092 zcmeAS@N?(olHy`uVBq!ia0y~yV6b6eU=ZP8V_;yo$Q-B1z`(#*9OUlAu<o49O9lq! zf1WOmArbCV!@d2a9R+HWCu|VaoS{4+H9}SBn2bVNZy-~6gKhG27R4tFkrS8&1U9tE zD70`KY0KTg&~=<`GDB16FZb}>tBxO$?!W!FI`sYCRi3NF&)PKpe8M2~)w%yk!{1Af zbNXZ%J{WB6e3EnWoaY4P`aA7*vxR>gpRawV(Qo_rh0dRDSxj?bUM4Ndv@GGzvcKlK zJu>GO+{ym6`$nxz!td~$dNVzixp$3u<h*&hbD5YU{tMnd+q9)vqTxo=slJFbjqDr$ ziVEaCgJvu#(A}G4RCw{s;s|cXpj$I$e}5h{W#9Qlmu7GO$eq8m+0@1EU(ul`F_%+K z5e<h5nJqXPMU59SUpBiOT2ZhtEK{JhI5p~6gjkUK+OxNI&xpttvgcYVl5s;`jUi#n zllGl&V$Ux<;3<2OcgwoF7RmLA3zDC?Gqxm%H1FCfa&>X(q{A6)hkKLGz08#4=8}JJ z9yEn7J@DOGZa+CIt;M#NcQVY_u*`b$qF;}NR~jWg=*Ya;oGg{xXP#nLnyI)|XF-$C zJf^w;Cbh#N1r_HRHstIm{Cgqibejvm@$Z!P<%S;*X7!|{<%wVY%Nl%`Tjuw}r{Po1 zi5)f(E={#M{Mzj>lQq-yWr69OvO!-~?l!tLxmkYR{KxC+x;`})7YU1))^%S#@NlVA z-Oj0tw#01j?Vb8cHsIwf1uNe8+}V|1ChzwX*zx6mYEH+q`3{e>*S@vV+LBngXQ4pi z(?eUuR=LY3pJSc=&`<a1k@KapzSB?S>`G<i=F@rYUf}08dxP_$ncv@LtvSZ^NpeBd zvzUql%D;+rr+kvUqjuoOKc-E$v{p%N*za#P_m<!5ld9@`Gt^A3O<rwzSjJjSb@@pF z19QLUm*(DDb#?>)qA2N1n@7Idtj?xkCht~wXB&OyzU69ooG<gGX6|ll)$VnMHqS4~ zZMg4qve87&PN+-HVxHqmu@zrd6d$|ql+xZmbzOz-)ZHfY8y4}bj=lRo<nX(^d6zay zX?$6?X=CfH-8pX(zO)zmMIKfx%xs^&wLBm;d(q{4SMN8gdc{`#$(Xyh?wfSjVTNP; zvl5o2Hh+wmcBkpo_GSD=rfk1`j2*J)HZQngShlC}V)y+jk9UWkE{mT!=hP?hz2BB? zY&Q(u#kS&e`D>Y{<&zJcp3C{`>^I9(`SB0VU(*i}Q=k9t5?{pfz3s1N-4WUqHT}-5 zd6r@#*GfO~#A|NQW?RD?dE?lv$Y;F1Q@63+^Si_~iJ|Ax6%Uc6SEAkbymMUQJLBq( zHcji02k*>Z&FcCdJX^vt`q0y|t|wPHCruT#v3@W&@`9_OTANg9<7GYDsvnj$@@b`w zd@ELV>gImCDHPt%eSTJTtA2cwL5tGC6N}m3MD29voOt8se};g|yf?k~yZmNgU|{fc L^>bP0l+XkKNGJqr diff --git a/MAVENProject/src/main/resources/Obstacles/level_one_monster.png b/MAVENProject/src/main/resources/Obstacles/level_one_monster.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf6127863a90ac8f334fa6d15705d3b9f97528e GIT binary patch literal 916 zcmeAS@N?(olHy`uVBq!ia0y~yV6b6eU=ZP8V_;yo$Q-B1z`(#*9OUlAu<o49O9lpJ zKTj9OkO=qQ2*a{l4gzy^eYq<w9XzIV=;`k0z3sp#&SB0``Hk~WQW3LX0++|!Ydd^` z4sv%EGhYoj<-dArS=eWHq28|!*4Eaapa0))W`0sd^|#@aAg^Nr6MwfI+59be-;#*# z`FEp!tM?>-KRbDX{J(wCX^(fC|26JE`I+;4>bl9DckTEe`oH3TFV+xq>TJ(K6IajA zTdP!m#@Vq?H#yHM;$6}%?rI~=#iyesD|U8qL-=*ogBKO8d|d9n@QHuE|Hb8`jN&Kn z8>+(ZF&<@_`@PU%d+fPmPEo7pSn#~q79m~s>_f?-9rcOZAAb<$V0!#mTHsxGqRb-C zHM(l2oOY#7_X=tL-X1Pp^~Z4K8Fl-Vz(-o{8H-s07W9VdUT?89@MyniVfZ87<k7^L zHaux1JLB11Zp_MIQ2baZ>>;>hwX$J*$zisdV<r)|tjr8H%#V(<=$$F;!QB(Ydv^MV zQ`Tn`Z!t(4+UtG)dwC|?dVLl})AGf0mwcRg<Y=xrlUKX+GhbzigL9;AHhjEzf$>I! zvThtlj6%_-BVV~*$VJJNntxHBX~E3E$7T{BF*~YKc$UXueoMooD*|5^3Ew?efBDa6 zgMOYaQHNb(T2q~5{>^<6yPsL6->vT9olliwtfI-HyHuAv<o`Iu?f2H=>V}`O|9CFV ziZIW4Ht9BRn#ryE;b%JY!e{rgN1VPXvB24c=R~@K_tv@ygG!6%QfFQz^~t!jaxo+? zU3vKX(<yd(o18xT_v%#Yuf4tZ;?=gYLm>?5i_hxXPkhjE;YG4OZ`bM>OP`#b8TaSy zlVAE@b}HyH^7lTvy+g_QnqN`pr6qpND}Kb4<y4z5{wRJu@@%G}hq*NW$!V(&GOSN3 zKWe?~==9jL6-veVbz#o8J1QHC9Sfs{s?8!!cs(^b*7sXh;ohu!NowcyrR@63Tt)lN zwno=h>!^AbmwvK4!&m>Ke%X)EX${+ZE6hsN^51PRJM3WEV3}E4uUFNP@BJ(7!V&iW z3=CD=C!9Y>1T?OR*j?c^y}dfk%*pK7*$W5Ls;=u_-no0q?*PRm+!?NSb!8`SEH${j zTeDaE^`)~Z@AtgTeKEu5ltEzs?u{EJ-+p>!(z&dii)UZ0_Uf~oVkolFmG|-Mn1CaD ddh0G3i>K~-yKCpP1q=)f44$rjF6*2UngF&PqhtU8 literal 0 HcmV?d00001 -- GitLab