From 83068d57706a04d5d4cd5bbb6181b5ed4a2d5796 Mon Sep 17 00:00:00 2001 From: GammelJan Date: Mon, 6 Apr 2020 17:09:00 +0200 Subject: [PATCH] Archer shooting Arrow - !! Archer moves diagonal !! --- .../dungeoncrawler/control/Controller.java | 34 ++++++- core/src/com/dungeoncrawler/model/Entity.java | 31 ++++--- .../dungeoncrawler/model/entities/Player.java | 2 +- core/src/com/dungeoncrawler/view/Map.java | 1 - core/src/com/dungeoncrawler/view/View.java | 90 ++++++++++++++++++- 5 files changed, 142 insertions(+), 16 deletions(-) diff --git a/core/src/com/dungeoncrawler/control/Controller.java b/core/src/com/dungeoncrawler/control/Controller.java index 3986e0c..0cece61 100644 --- a/core/src/com/dungeoncrawler/control/Controller.java +++ b/core/src/com/dungeoncrawler/control/Controller.java @@ -45,9 +45,31 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ t.scheduleTask(new Timer.Task() { @Override public void run() { - a.rdmMove(); + if(p.getxPos() == a.getxPos()){ + if(p.getyPos() < a.getyPos()){ + a.attack(0); //unten + v.arrow(a,0); + } + if(p.getyPos() > a.getyPos()){ + a.attack(1); //oben + v.arrow(a,1); + } + } + else if(p.getyPos() == a.getyPos()){ + if(p.getxPos() < a.getxPos()){ + a.attack(2); //links + v.arrow(a,2); + } + if(p.getxPos() > a.getxPos()){ + a.attack(3); //rechts + v.arrow(a,3); + } + } + else{ + a.rdmMove(); + } } - },0,0.1f); + },0,0.5f); } @Override @@ -64,18 +86,22 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public boolean keyDown(int keycode) { if(keycode == Input.Keys.LEFT){ p.setMovementX(-3); + p.move(); } if(keycode == Input.Keys.RIGHT){ p.setMovementX(3); + p.move(); } if(keycode == Input.Keys.UP){ p.setMovementY(3); + p.move(); } if(keycode == Input.Keys.DOWN){ p.setMovementY(-3); + p.move(); } if(keycode == Input.Keys.W){ @@ -87,21 +113,25 @@ public class Controller extends ApplicationAdapter implements InputProcessor{ public boolean keyUp(int keycode) { if(keycode == Input.Keys.LEFT){ p.setMovementX(0); + p.move(); v.tlinksstop(); } if(keycode == Input.Keys.RIGHT){ p.setMovementX(0); + p.move(); v.trechtsstop(); } if(keycode == Input.Keys.DOWN){ p.setMovementY(0); + p.move(); v.tuntenstop(); } if(keycode == Input.Keys.UP){ p.setMovementY(0); + p.move(); v.tobenstop(); } return true; diff --git a/core/src/com/dungeoncrawler/model/Entity.java b/core/src/com/dungeoncrawler/model/Entity.java index 07d13e1..1a3feee 100644 --- a/core/src/com/dungeoncrawler/model/Entity.java +++ b/core/src/com/dungeoncrawler/model/Entity.java @@ -22,7 +22,11 @@ public abstract class Entity { - public void attack(){ + public void attack(int i){ + if(i == 0){System.out.println("UNTEN");} + if(i == 1){System.out.println("OBEN");} + if(i == 2){System.out.println("LINKS");} + if(i == 3){System.out.println("RECHTS");} } public void update(){ @@ -37,23 +41,30 @@ public abstract class Entity { } public void rdmMove(){ - switch((int) (Math.random() * 5)){ case 0: //left - setMovementX(-3); - move(); + for(int i = 0; i<=32;i++){ + setMovementX(-1); + move(); + } break; case 1: //right - setMovementX(3); - move(); + for(int i = 0; i<=32;i++){ + setMovementX(1); + move(); + } break; case 2: //up - setMovementY(3); - move(); + for(int i = 0; i<=32;i++){ + setMovementY(1); + move(); + } break; case 3: //down - setMovementY(-3); - move(); + for(int i = 0; i<=32;i++){ + setMovementY(-1); + move(); + } break; } } diff --git a/core/src/com/dungeoncrawler/model/entities/Player.java b/core/src/com/dungeoncrawler/model/entities/Player.java index 98181f4..5f12843 100644 --- a/core/src/com/dungeoncrawler/model/entities/Player.java +++ b/core/src/com/dungeoncrawler/model/entities/Player.java @@ -14,7 +14,7 @@ import com.dungeoncrawler.model.Entity; public class Player extends Entity { public Player() { - super(0, 0, 1); + super(200, 200, 1); this.maxhp = 5*lvl; this.hp = this.maxhp; diff --git a/core/src/com/dungeoncrawler/view/Map.java b/core/src/com/dungeoncrawler/view/Map.java index cf09838..2fd734c 100644 --- a/core/src/com/dungeoncrawler/view/Map.java +++ b/core/src/com/dungeoncrawler/view/Map.java @@ -14,7 +14,6 @@ import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapTileLayer; import com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell; import com.badlogic.gdx.maps.tiled.tiles.StaticTiledMapTile; -import com.badlogic.gdx.utils.Timer; /** * * @author jonathan diff --git a/core/src/com/dungeoncrawler/view/View.java b/core/src/com/dungeoncrawler/view/View.java index 766a266..f6b74ac 100644 --- a/core/src/com/dungeoncrawler/view/View.java +++ b/core/src/com/dungeoncrawler/view/View.java @@ -25,6 +25,13 @@ public class View { Timer toben; Timer tlinks; Timer trechts; + Texture arrow; + Sprite Arrow; + Timer tArrowLeft = new Timer(); + Timer tArrowRight = new Timer(); + Timer tArrowUp = new Timer(); + Timer tArrowDown = new Timer(); + int ArrowTravel = 0; public View() { b = new Texture("Button.png"); @@ -34,7 +41,8 @@ public class View { button = new Sprite(b); title = new Sprite(t); archer = new Sprite(a); - + arrow = new Texture("Archer.png"); + Arrow = new Sprite(arrow); float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); float wc = w/2; @@ -130,6 +138,54 @@ public class View { } }, 0,1/5f); trechts.stop(); + tArrowLeft.scheduleTask(new Timer.Task() { + @Override + public void run() { + Arrow.setX(Arrow.getX() - 3); + ArrowTravel++; + if(ArrowTravel >= 300){ + ArrowTravel = 0; + tArrowLeft.stop(); + } + } + }, 0,1/50f); + tArrowLeft.stop(); + tArrowRight.scheduleTask(new Timer.Task() { + @Override + public void run() { + Arrow.setX(Arrow.getX() + 3); + ArrowTravel++; + if(ArrowTravel >= 300){ + ArrowTravel = 0; + tArrowLeft.stop(); + } + } + }, 0,1/40f); + tArrowRight.stop(); + tArrowUp.scheduleTask(new Timer.Task() { + @Override + public void run() { + Arrow.setY(Arrow.getY() + 3); + ArrowTravel++; + if(ArrowTravel >= 300){ + ArrowTravel = 0; + tArrowLeft.stop(); + } + } + }, 0,1/50f); + tArrowUp.stop(); + tArrowDown.scheduleTask(new Timer.Task() { + @Override + public void run() { + Arrow.setY(Arrow.getY() - 3); + ArrowTravel++; + if(ArrowTravel >= 300){ + ArrowTravel = 0; + tArrowLeft.stop(); + } + } + }, 0,1/50f); + tArrowDown.stop(); } @@ -169,10 +225,40 @@ public class View { button.draw(batch); player.draw(batch); archer.draw(batch); + if(ArrowTravel > 0){ + Arrow.draw(batch); + } batch.end(); } - + public void arrow(Archer a, int i){ + switch(i){ + case 0: + Arrow.setX((float) a.getxPos()); + Arrow.setY((float) a.getyPos()); + tArrowDown.start(); + break; + case 1: + Arrow.setX((float) a.getxPos()); + Arrow.setY((float) a.getyPos()); + tArrowUp.start(); + break; + case 2: + for(int n = 0; n < 50; n++){ + Arrow.setX((float) a.getxPos()); + Arrow.setY((float) a.getyPos()); + tArrowLeft.start(); + } + break; + case 3: + Arrow.setX((float) a.getxPos()); + Arrow.setY((float) a.getyPos()); + tArrowRight.start(); + break; + } + + + } public void tuntenstop(){ tunten.stop();