From c158ed733a7841366011f108d1afcd3122db7cbc Mon Sep 17 00:00:00 2001 From: GammelJan Date: Tue, 7 Apr 2020 22:00:43 +0200 Subject: [PATCH 1/3] perfect --- core/assets/archer.png | Bin 756 -> 1003 bytes .../dungeoncrawler/control/Controller.java | 58 +++++++++++------- core/src/com/dungeoncrawler/model/Entity.java | 16 +++++ core/src/com/dungeoncrawler/view/View.java | 53 +++++++++++----- 4 files changed, 88 insertions(+), 39 deletions(-) diff --git a/core/assets/archer.png b/core/assets/archer.png index a2a0506e9540c29d936467a0333aada5432226c7..f1c0712b084263fce5ce8a8a55b7b742c01df95e 100644 GIT binary patch delta 950 zcmeyu`kGy_Gr-TCmrII^fq{Y7)59f*fq@aoWN_eM1Cn23SMHmrs8rt_B6G{}h@x}p zCIziW8lgH(t(U?wt{!}HNk8M#ge5yHxYn_<+l#H{(>u4zY6n--1NM%|izhGYp7LY= zk_$@5njhEg+5LS-H9N;zso=8*SQcbWo9L-_q$V+xXP;7of>Vd0l3}oas(A4SnfUJ? zK7Q3Zw|UR`zm{xM7M*06?_qPir2eqdJ%xEUx0IaweIzh!qR6A-M}^IL9)C`h-h66) zF14L?o}_8f%*sa^8zbH&?re`d8qm4CGr4P3;Jyjvkq`GAja+LQ@qFH&)`yF>O?ql| zR#0VQi^wGb#l?+USsMhFhbkX+Y5OKD_b>7Ie6{I5>$D^+#RA&7PJV3ufAD?Y*-KZJ z)Xx_2W2n{N_ScY$rM$81^0xi`xw~tbe#~#wUi*6e_J*7OmuAQ6ma*{UF^gZ1^}WZe zSKhEtJ=RFY{nKR;FVzQsd-knlaLH@@XS#j+IXgf32AR^WHOw+HOv$OI;=Wguuh_o5 z{(Q-=-;B;IMN^*t-5&)EdbT8QcNd005bV`fs(1(#;w-PUU^Rr~;BD?62;;d;e|Nh^c7WsNhzg58dxaHv* zJ+BJx#9r-K$9Tb5GQNI#nmE(8BWAa!Em{*hgX8>y#H*XmunBCHIDh`>m(83T3K;5p zrZjy|zxv1Guk?Bb<@Gn#v9Dvwx-P&F$)&*3!eAf6Xk^xt&FJ*Gn^)nt^!h5PTTDMB z7^c2E9cnKv!1U^i8N-~efEwlr-|p!%F|7H|#NgYo?#68+-EevBi-Hvg4~Hne zoq7Mp%wNgp0@CO6OE)~!FBFRUnadEvw4ji~?afqGHv7*#91Mr&7b#4$`?&dB=YJ-N zf6K0Sn@C)%k!H~5JvOWMO7;iib6pGue-87Wo~2&9tx}Mo&Hl>=mzdYaXV35|RX>kp T6k`H9l!3w1)z4*}Q$iB}(?5ko delta 701 zcmV;u0z&=k2lNFYiBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^pPPVf2CF& z>>%Qhp*mR*6>*d*7QsSkE41oha_JW|X-HCB90k{cgCC1k2N!2u9b5%L@B_rj(Mi!o zO8j3^Xc6PVaX;SOd)&PPgl3hgW?%wPHOojR;$kkpDh6K>fPg-P5SEy!Co_v#c#f}o z`1pDk<5}M4{v7>E!DN6>B%Wise_;`C5YKE{I_G`j2rEkp@j3ChK^G)`?i4sjut%v2DX8V>y9Sx0hc?#(3371k|X(P z3dJJuen#Jv2L^9}(3;y@dmpC{K$f~%z5xynfw2;0uY0_^x4XB0&$Rpd0qdA@ao&p7 z@Bjb+24YJ`L;(K){{a7>E4`r z0t*Wrk}t=Mlj{K|e*nx$L_t(o!|j*J5`-WOL|@|n|EvqQA#=eh4x%_q!ojZcX8D>X z!~mT#m<_UlT|C)f?)|QGfM0;}nX(Hv{_u4xlBK?N$N?xhI{QGC5d`IKi7H z#1VdILhC(ufCETf6H*y493_RV)lqZR&XkDN*D2_ouJwl$V`g!x{Pu~6ivO||KL#EH zj{#2uk$u1vSOX2L@js(|dJW*`aR!p2%R#Q952!(EqgF00000NkvXXu0mjf*Bds> diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 5e0f610..5067fc7 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -31,17 +31,18 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ @Override public void create(){ - a = new Archer(200,200,200); + e = new Entity[5]; batch = new SpriteBatch(); v = new MainMenu(); p = new Player(); d = new Dungeon(p); dg = new DungeonGenerator(); dg.ichWillSpielen(); - e = new Entity[5]; Gdx.input.setInputProcessor(this); t = new Timer(); + a = new Archer(0,0,0); + t.scheduleTask(new Timer.Task() { @Override public void run() { @@ -55,41 +56,51 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ },0,0.1f); } - public void newEntity(Entity ent, int x, int y, int lvl){ - for(int i = 0; i < e.length ; i++){ - if(e[i] == null){ - switch(ent.getId()){ - case 0: - e[i] = new Archer(x,y,lvl); - m.newEntity(i,ent,x,y); - i = 10; - break; - case 1: - e[i] = new Swordsman(x,y,lvl); - m.newEntity(i,ent,x,y); - i = 10; - break; - } - - } - } - } @Override public void render(){ + //PASSIERT IN MAINMENU if(v != null){ v.render(batch, p , e); } - if(v == null){ - m.render(batch, p, a); + //PASSIERT IN GAMESCREEN (view) + if(m != null){ + //ENTITIES + + + + //RENDER + m.render(batch, p, e); + } } + @Override public void dispose () { batch.dispose(); } + public void newEntity(Entity ent, int x, int y, int lvl){ + for(int i = 0; i < e.length ; i++){ + if(e[i] == null){ + switch(ent.getId()){ + case 0: + e[i] = new Archer(x,y,lvl); + m.newEntity(i,ent,x,y); + i = 10; + break; + case 1: + e[i] = new Swordsman(x,y,lvl); + m.newEntity(i,ent,x,y); + i = 10; + break; + } + + } + } + } + @Override public boolean keyDown(int keycode) { if(keycode == Input.Keys.LEFT){ @@ -134,6 +145,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ else if(v.click() == 0){ v = null; m = new View(); + newEntity(a, 200, 200, 200); System.out.println("NICE"); } } diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 7747d27..eb3b2be 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -59,6 +59,22 @@ public abstract class Entity { } } + public int direction(){ + if(movementX == -3){ + return 3; + } + if(movementX == 3){ + return 1; + } + if(movementY == 3){ + return 0; + } + if(movementY == -3){ + return 2; + } + return -1; + } + public int getxPos() { return xPos; diff --git a/core/src/com/dungeoncrawler/view/View.java b/core/src/com/dungeoncrawler/view/View.java index 9611f49..a3b7ea2 100644 --- a/core/src/com/dungeoncrawler/view/View.java +++ b/core/src/com/dungeoncrawler/view/View.java @@ -26,6 +26,8 @@ public class View { //ENTITIES Texture[] entityTextures; Sprite[] entitySprites; + TextureRegion[][] archerRegions; + Texture archerTexture; //MAP Map tm; @@ -49,6 +51,9 @@ public class View { //ENTITIES entityTextures = new Texture[5]; entitySprites = new Sprite[5]; + archerTexture = new Texture("archer.png"); + archerRegions = TextureRegion.split(archerTexture, 64, 64); + //MAP @@ -72,9 +77,11 @@ public class View { } - public void render (SpriteBatch batch, Player p, Archer a) { + public void render (SpriteBatch batch, Player p, Entity[] e) { Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + + //PLAYER player.setX(player.getX()+ p.getMovementX()); player.setY(player.getY()+ p.getMovementY()); @@ -92,6 +99,7 @@ public class View { player.setRegion(regions[0][2]); } + //MAP tmr.setView(camera); tmr.render(); camera.zoom = 1000f; @@ -99,22 +107,35 @@ public class View { batch.setProjectionMatrix(camera.combined); + + + //BATCH batch.begin(); player.draw(batch); - if(entitySprites[0] != null){ - entitySprites[0].draw(batch); - } - if(entitySprites[1] != null){ - entitySprites[1].draw(batch); - } - if(entitySprites[2] != null){ - entitySprites[2].draw(batch); - } - if(entitySprites[3] != null){ - entitySprites[3].draw(batch); - } - if(entitySprites[4] != null){ - entitySprites[4].draw(batch); + for(int i = 0; i < e.length; i++){ + + if(entitySprites[i] != null){ + entitySprites[i].setX(e[i].getxPos()); + entitySprites[i].setY(e[i].getyPos()); + switch(e[i].direction()){ + case -1: + break; + case 0: + entitySprites[i].setRegion(archerRegions[0][0]); + break; + case 1: + entitySprites[i].setRegion(archerRegions[0][1]); + break; + case 2: + entitySprites[i].setRegion(archerRegions[0][2]); + break; + case 3: + entitySprites[i].setRegion(archerRegions[0][3]); + break; + + } + entitySprites[i].draw(batch); + } } batch.end(); } @@ -123,7 +144,7 @@ public class View { public void newEntity(int i,Entity e, int x, int y){ if(e.getId() == 0){ entityTextures[i] = new Texture("archer.png"); - entitySprites[i] = new Sprite(entityTextures[i]); + entitySprites[i] = new Sprite(archerRegions[0][2]); entitySprites[i].setX(x); entitySprites[i].setY(y); } From ad8449cac6e3f99a6113674dbbb054d90050e7f9 Mon Sep 17 00:00:00 2001 From: bfz Date: Wed, 8 Apr 2020 13:42:50 +0200 Subject: [PATCH 2/3] ki for archer kinda works but works better for swordsman --- .../dungeoncrawler/control/Controller.java | 11 ++- core/src/com/dungeoncrawler/model/Entity.java | 92 +++++++++++++++---- core/src/com/dungeoncrawler/view/View.java | 28 ++++++ 3 files changed, 109 insertions(+), 22 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 5067fc7..578cdbc 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -49,7 +49,11 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ for(int i = 0; i< e.length; i++){ if(e[i] == null){} else{ - e[i].rdmMove(); + e[i].rdmMove(p.getxPos(), p.getyPos()); + m.setPlayerSpriteX(p.getxPos()); + m.setPlayerSpriteY(p.getyPos()); + m.setEntitySpriteX(i,p.getxPos()); + m.setEntitySpriteY(i,p.getxPos()); } } } @@ -66,7 +70,8 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ //PASSIERT IN GAMESCREEN (view) if(m != null){ //ENTITIES - + p.setxPos(m.getPlayerSpriteX()); + p.setyPos(m.getPlayerSpriteY()); //RENDER @@ -145,7 +150,7 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ else if(v.click() == 0){ v = null; m = new View(); - newEntity(a, 200, 200, 200); + newEntity(a, 0, 0, 0); System.out.println("NICE"); } } diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index eb3b2be..e7e8c55 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -3,17 +3,17 @@ package com.dungeoncrawler.model; public abstract class Entity { - protected int xPos; - protected int yPos; + protected float xPos; + protected float yPos; protected int hp; protected int maxhp; protected int dmg; protected int lvl; - protected int movementX; - protected int movementY; + protected float movementX; + protected float movementY; protected int id; - public Entity(int xPos, int yPos, int lvl){ + public Entity(int xPos, float yPos, int lvl){ this.xPos = xPos; this.yPos = yPos; this.lvl = lvl; @@ -35,10 +35,63 @@ public abstract class Entity { public void move(){ xPos = xPos + movementX; yPos = yPos + movementY; + movementX = 0; + movementY = 0; } - public void rdmMove(){ - + public void rdmMove(float xPlayer, float yPlayer){ + if(xPlayer == xPos){ + if(yPlayer == yPos){} + else if(yPlayer > yPos){movementY = 1f;} + else if(yPlayer < yPos){movementY = -1f;} + } + else if(yPlayer == yPos){ + if(xPlayer == xPos){} + else if(xPlayer > xPos){movementX = -1f;} + else if(xPlayer < xPos){movementX = 1f;} + } + ///// + else if(xPlayer > xPos){ + if(yPlayer > yPos){ //archer ist im Quadrant III + if((yPos - yPlayer) > (xPos - xPlayer)){ + movementX = 1f; + } + else{ + movementY = 1f; + } + } + else if(yPlayer < yPos){ //archer ist im Quadrant IV + if((yPos - yPlayer) > (xPlayer - xPos)){ + movementX = 1f; + } + else{ + movementY = -1f; + } + } + } + else if(xPlayer < xPos){ + if(yPlayer < yPos){ //archer ist im Quadrant II + if((yPlayer - yPos) > (xPlayer - xPos)){ + movementX = -1f; + } + else{ + movementY = 1f; + } + } + else if(yPlayer > yPos){ //archer ist im Quadrant I + if((yPlayer - yPos) > (xPos - xPlayer)){ + movementX = -1; + } + else{ + movementY = -1; + } + } + } + + move(); + + + /* switch((int) (Math.random() * 5)){ case 0: //left setMovementX(-3); @@ -57,38 +110,39 @@ public abstract class Entity { move(); break; } + */ } public int direction(){ - if(movementX == -3){ + if(movementX < 0){ return 3; } - if(movementX == 3){ + else if(movementX < 3){ return 1; } - if(movementY == 3){ + else if(movementY > 3){ return 0; } - if(movementY == -3){ + else if(movementY < -3){ return 2; } return -1; } - public int getxPos() { + public float getxPos() { return xPos; } - public void setxPos(int xPos) { + public void setxPos(float xPos) { this.xPos = xPos; } - public int getyPos() { + public float getyPos() { return yPos; } - public void setyPos(int yPos) { + public void setyPos(float yPos) { this.yPos = yPos; } @@ -124,19 +178,19 @@ public abstract class Entity { this.lvl = lvl; } - public int getMovementX(){ + public float getMovementX(){ return movementX; } - public void setMovementX(int movementX){ + public void setMovementX(float movementX){ this.movementX = movementX; } - public int getMovementY(){ + public float getMovementY(){ return movementY; } - public void setMovementY(int movementY){ + public void setMovementY(float movementY){ this.movementY = movementY; } diff --git a/core/src/com/dungeoncrawler/view/View.java b/core/src/com/dungeoncrawler/view/View.java index a3b7ea2..0956e7e 100644 --- a/core/src/com/dungeoncrawler/view/View.java +++ b/core/src/com/dungeoncrawler/view/View.java @@ -23,6 +23,7 @@ public class View { TextureRegion[][] regions; + //ENTITIES Texture[] entityTextures; Sprite[] entitySprites; @@ -155,4 +156,31 @@ public class View { entitySprites[i].setY(y); } } + + public float getPlayerSpriteX(){ + return player.getX(); + } + public float getPlayerSpriteY(){ + return player.getY(); + } + public void setPlayerSpriteX(float x){ + player.setX(x); + } + public void setPlayerSpriteY(float y){ + player.setY(y); + } + + public float getEntitySpriteX(int i){ + return entitySprites[i].getX(); + } + public float getEntitySpriteY(int i){ + return entitySprites[i].getY(); + } + public void setEntitySpriteX(int i,float x){ + entitySprites[i].setX(x); + } + public void setEntitySpriteY(int i,float y){ + entitySprites[i].setY(y); + } + } From 5637c70d6fd4e92bb0253dcb21fb64d5bdbb471f Mon Sep 17 00:00:00 2001 From: GammelJan Date: Wed, 8 Apr 2020 23:37:54 +0200 Subject: [PATCH 3/3] ICH WILL SPIELEN --- core/src/com/dungeoncrawler/model/Entity.java | 25 +++++++++---------- core/src/com/dungeoncrawler/view/Hud.java | 17 +++++++++++++ 2 files changed, 29 insertions(+), 13 deletions(-) create mode 100644 core/src/com/dungeoncrawler/view/Hud.java diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index e7e8c55..765d36b 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -42,22 +42,21 @@ public abstract class Entity { public void rdmMove(float xPlayer, float yPlayer){ if(xPlayer == xPos){ if(yPlayer == yPos){} - else if(yPlayer > yPos){movementY = 1f;} - else if(yPlayer < yPos){movementY = -1f;} + else if(yPlayer > yPos){movementY = -1f;} + else if(yPlayer < yPos){movementY = 1f;} } else if(yPlayer == yPos){ if(xPlayer == xPos){} - else if(xPlayer > xPos){movementX = -1f;} - else if(xPlayer < xPos){movementX = 1f;} + else if(xPlayer > xPos){movementX = 1f;} + else if(xPlayer < xPos){movementX = -1f;} } - ///// else if(xPlayer > xPos){ if(yPlayer > yPos){ //archer ist im Quadrant III if((yPos - yPlayer) > (xPos - xPlayer)){ - movementX = 1f; + movementY = 1f; } else{ - movementY = 1f; + movementX = 1f; } } else if(yPlayer < yPos){ //archer ist im Quadrant IV @@ -80,10 +79,10 @@ public abstract class Entity { } else if(yPlayer > yPos){ //archer ist im Quadrant I if((yPlayer - yPos) > (xPos - xPlayer)){ - movementX = -1; + movementY = -1; } else{ - movementY = -1; + movementX = -1; } } } @@ -114,16 +113,16 @@ public abstract class Entity { } public int direction(){ - if(movementX < 0){ + if(movementX < 0f){ return 3; } - else if(movementX < 3){ + else if(movementX < 3f){ return 1; } - else if(movementY > 3){ + else if(movementY > 3f){ return 0; } - else if(movementY < -3){ + else if(movementY < -3f){ return 2; } return -1; diff --git a/core/src/com/dungeoncrawler/view/Hud.java b/core/src/com/dungeoncrawler/view/Hud.java new file mode 100644 index 0000000..38e7dc1 --- /dev/null +++ b/core/src/com/dungeoncrawler/view/Hud.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.dungeoncrawler.view; + +import com.dungeoncrawler.model.entities.Player; +/** + * + * @author Jan + */ +public class Hud { + + public Hud(Player p){} + +}