From ee4da0a718a03685426a51e33a2366030770e148 Mon Sep 17 00:00:00 2001 From: zlatax <64391879+zlatax@users.noreply.github.com> Date: Sat, 3 Apr 2021 20:42:08 +0900 Subject: [PATCH] loadEnvironment fixed, update conditions working perfectly --- project-1/src/APoint.java | 5 ++ project-1/src/Entity.java | 8 +++ project-1/src/Player.java | 10 ---- project-1/src/Point.java | 37 ------------ project-1/src/ShadowTreasure.java | 99 +++++++++++++++++++++---------- 5 files changed, 81 insertions(+), 78 deletions(-) delete mode 100644 project-1/src/Point.java diff --git a/project-1/src/APoint.java b/project-1/src/APoint.java index f2b4146..7003065 100644 --- a/project-1/src/APoint.java +++ b/project-1/src/APoint.java @@ -34,4 +34,9 @@ public class APoint { return new APoint(xd,yd); } + + @Override + public String toString() { + return "X: "+this.x+"\tY: "+this.y; + } } diff --git a/project-1/src/Entity.java b/project-1/src/Entity.java index a1d92a7..540f81b 100644 --- a/project-1/src/Entity.java +++ b/project-1/src/Entity.java @@ -12,6 +12,10 @@ public class Entity { this.pos = pos; } + public Image getImg() { + return img; + } + public APoint getPos() { return pos; } @@ -19,4 +23,8 @@ public class Entity { public void setPos(APoint pos) { this.pos = pos; } + +// @Override +// public String toString() { +// } } diff --git a/project-1/src/Player.java b/project-1/src/Player.java index 3df6e68..c8e2d37 100644 --- a/project-1/src/Player.java +++ b/project-1/src/Player.java @@ -1,8 +1,6 @@ import bagel.*; public class Player extends Entity{ - private Image image; - private APoint pos; private int energy; //displayed at position (20,760) in black font size 20 and font DejaVuSans-Bol(ttf file provided in res zip file) private static int stepsize = 10; @@ -11,14 +9,6 @@ public class Player extends Entity{ this.energy = energy; } - public Image getImage() { - return image; - } - - public APoint getPos() { - return pos; - } - public int getEnergy() { return energy; } diff --git a/project-1/src/Point.java b/project-1/src/Point.java deleted file mode 100644 index 47984c1..0000000 --- a/project-1/src/Point.java +++ /dev/null @@ -1,37 +0,0 @@ -import java.lang.Math; - -public class Point{ - private double x,y; - - public Point(double x, double y) { - this.x = x; - this.y = y; - } - - public double getX() { - return x; - } - - public void setX(double x) { - this.x = x; - } - - public double getY() { - return y; - } - - public void setY(double y) { - this.y = y; - } - - public double distanceTo(Point other) { - return Math.sqrt(Math.pow(this.x - other.getX(),2) + Math.pow((this.y - other.getY()) ,2)); - } - - public Point getDirection (Point other) { - double xd = (other.x-this.x)/distanceTo(other); - double yd = (other.y-this.getY())/distanceTo(other); - - return new Point(xd,yd); - } -} diff --git a/project-1/src/ShadowTreasure.java b/project-1/src/ShadowTreasure.java index 0b4b9e3..c2c9b90 100644 --- a/project-1/src/ShadowTreasure.java +++ b/project-1/src/ShadowTreasure.java @@ -1,17 +1,19 @@ import bagel.*; +import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import java.util.Scanner; -import java.lang.*; -import java.io.File; + /** * An example Bagel game. */ public class ShadowTreasure extends AbstractGame { + public static final String UTF8_BOM = "\uFEFF"; + // for rounding double number; use this to print the location of the player private static DecimalFormat df = new DecimalFormat("0.00"); @@ -27,8 +29,8 @@ public class ShadowTreasure extends AbstractGame { } public ShadowTreasure() throws IOException { - super(1000, 800, "ShadowTreasure"); - this.loadEnvironment("res/IO/environment.csv"); + super(1024, 768, "ShadowTreasure"); + this.loadEnvironment("test/test1/environment.csv"); // encoding includes 65279 char which fucks up the scanning part. // Add code to initialize other attributes as needed bg = new Image("res/images/background.png"); } @@ -39,43 +41,54 @@ public class ShadowTreasure extends AbstractGame { private void loadEnvironment(String filename){ // Code here to read from the file and set up the environment try { - Scanner scanner = new Scanner(new File(filename)); + Scanner scanner = new Scanner(new File(filename), "utf-8"); double xcoor, ycoor; - int level; + int level, counter=0; while (scanner.hasNextLine()) { - Scanner linescan = new Scanner(scanner.nextLine()); + String line = scanner.nextLine(); + if(counter==0 & line.startsWith(UTF8_BOM)) { + line = line.substring(1); //remove BOM char + counter++; + } + Scanner linescan = new Scanner(line); linescan.useDelimiter(","); String item = linescan.next(); - System.out.println("Next item: ("+item+")"); + switch (item.toLowerCase()) { case "player": xcoor = Double.parseDouble(linescan.next()); ycoor = Double.parseDouble(linescan.next()); level = Integer.parseInt(linescan.next()); - System.out.println("Player: ("+xcoor+","+ycoor+"), "+level); +// System.out.println("Player: ("+xcoor+","+ycoor+"), "+level); player = new Player("res/images/player.png", new APoint(xcoor, ycoor), level); break; case "zombie": xcoor = Double.parseDouble(linescan.next()); ycoor = Double.parseDouble(linescan.next()); - System.out.println("Zombie: ("+xcoor+","+ycoor+")"); +// System.out.println("Zombie: ("+xcoor+","+ycoor+")"); zombie = new Zombie("res/Images/Zombie.png", new APoint(xcoor, ycoor)); break; - case "zandwich": + case "sandwich": xcoor = Double.parseDouble(linescan.next()); ycoor = Double.parseDouble(linescan.next()); - System.out.println("Sandwich: ("+xcoor+","+ycoor+")"); +// System.out.println("Sandwich: ("+xcoor+","+ycoor+")"); sandwich = new Sandwich("res/Images/Sandwich.png", new APoint(xcoor, ycoor)); break; + default: + throw new IllegalStateException("Unexpected value: " + item.toLowerCase()); } linescan.close(); } scanner.close(); + + System.out.println("player: "+player.getPos().toString()); + System.out.println("zombie: "+zombie.getPos().toString()); + System.out.println("sandwich: "+sandwich.getPos().toString()); } catch(FileNotFoundException e) { System.out.println("File was not found!\n"+e); } catch(Exception e) { - System.out.println("There is an unexpected error!\n"+e); + System.out.println("There is an unexpected error! "+e+"\n"+e.getStackTrace()[0].getLineNumber()); } } @@ -84,27 +97,51 @@ public class ShadowTreasure extends AbstractGame { */ @Override public void update(Input input) { - bg.draw(0,0); - deja.drawString("Energy",20,760); -// deja.drawString(String.format("energy: %d",player.getEnergy()),20,760); - // Logic to update the game, as per specification must go here - if(player.getPos().distanceTo(zombie.getPos()) < 50) { - player.addEnergy(-3); - System.exit(0); - } else if(player.getPos().distanceTo(sandwich.getPos())<50) { - player.addEnergy(5); - sandwich = null; + bg.drawFromTopLeft(0,0); + deja.drawString(String.format("energy: %d",player.getEnergy()),20,760); + + if(count>10) { + // Logic to update the game, as per specification must go here + if (player.getPos().distanceTo(zombie.getPos()) < 50) { + player.addEnergy(-3); + System.exit(0); + } else if (sandwich != null && player.getPos().distanceTo(sandwich.getPos()) < 50) { + player.addEnergy(5); + sandwich = null; + } // after user reaches sandwich, the object does ot exist therefore we need to rethink ocndiiton + if (player.getEnergy() >= 3) { + APoint dir = player.getPos().getDirection(zombie.getPos()); + player.getPos().setX(player.getPos().getX() + dir.getX() * player.getStepsize()); + player.getPos().setY(player.getPos().getY() + dir.getY() * player.getStepsize()); + } else { + APoint dir = player.getPos().getDirection(sandwich.getPos()); + player.getPos().setX(player.getPos().getX() + dir.getX() * player.getStepsize()); + player.getPos().setY(player.getPos().getY() + dir.getY() * player.getStepsize()); + } + count=0; } - if(player.getEnergy() >= 3) { - APoint dir = player.getPos().getDirection(zombie.getPos()); - player.getPos().setX(player.getPos().getX()+dir.getX()*player.getStepsize()); - player.getPos().setY(player.getPos().getY()+dir.getY()*player.getStepsize()); - } else { - APoint dir = player.getPos().getDirection(sandwich.getPos()); - player.getPos().setX(player.getPos().getX()+dir.getX()*player.getStepsize()); - player.getPos().setY(player.getPos().getY()+dir.getY()*player.getStepsize()); + count++; + + // Keyboard input + if(input.wasPressed(Keys.ESCAPE)) { + Window.close(); } + // constant info on window + + player.getImg().draw(player.getPos().getX(),player.getPos().getY()); + zombie.getImg().draw(zombie.getPos().getX(),zombie.getPos().getY()); + if(sandwich!=null) { + sandwich.getImg().draw(sandwich.getPos().getX(),sandwich.getPos().getY()); + } + + } + + private static String removeUTF8BOM(String string) { + if (string.startsWith(UTF8_BOM)) { + string = string.substring(1); + } + return string; } -- GitLab