From 76c288cfec9d2a9d31cfa11a83d7943de3db5296 Mon Sep 17 00:00:00 2001 From: Remco Date: Fri, 5 Jun 2015 11:48:09 +0200 Subject: [PATCH] game logic fixed1.0 --- model/drawObjects/Enemy.java | 42 ++----- model/gameState/PlayState.java | 187 ++++++++++++++++---------------- model/gameState/TitleState.java | 4 +- 3 files changed, 107 insertions(+), 126 deletions(-) diff --git a/model/drawObjects/Enemy.java b/model/drawObjects/Enemy.java index a96c09b..0507b36 100644 --- a/model/drawObjects/Enemy.java +++ b/model/drawObjects/Enemy.java @@ -8,13 +8,11 @@ import model.objects.Path; public class Enemy extends DrawObject { - public static final int distanceToOctagon = 1000; - private final double secondsToEnd = 3; - private int length,timeToClick = 10,currentTimeToClick; + public static final double distanceToOctagon = 1000,secondsToEnd = 5.0; + private int length; private double lengthOf1Side,distanceFromStart;//lengthOf1Side wordt alleen gebruikt als de lijn een schuine lijn is. public Line2D enemy; private Color c; - private boolean clickable = false; private Path path; public Enemy(int pathID,int lengthOfEnemy,Color c,Path path){ @@ -66,7 +64,8 @@ public class Enemy extends DrawObject { endX += beginX; endY += beginY; - enemy = new Line2D.Double(beginX, beginY, endX, endY); + enemy = new Line2D.Double(beginX, beginY, endX, endY); +// System.out.println("Enemy added on path: "+pathID); } @Override @@ -77,11 +76,8 @@ public class Enemy extends DrawObject { @Override public void update(float factor) { - if(clickable){ - currentTimeToClick++; - } - distanceFromStart += (distanceToOctagon/(secondsToEnd*1000))*factor; + distanceFromStart += (distanceToOctagon/(secondsToEnd*1000))*factor; double x1,x2,y1,y2; x1 = enemy.getX1(); @@ -93,7 +89,7 @@ public class Enemy extends DrawObject { angleX = Math.cos(Math.toRadians(45))*distanceFromStart; angleY = Math.sin(Math.toRadians(45))*distanceFromStart; - System.out.println(Math.toRadians(45)*distanceFromStart); +// System.out.println(Math.toRadians(45)*distanceFromStart); System.out.println(angleX+" - "+angleY); switch(index){ @@ -161,29 +157,9 @@ public class Enemy extends DrawObject { public void setBullet(Line2D bullet) { this.enemy = bullet; - } - - public void clickable(){ - clickable = true; - } - - /** - * deze methode kijkt hoeveel frame je nog hebt om te klikken op het moment dat je bolletje in de hitzone zit - * @return - */ - public boolean finised(){ - if(currentTimeToClick >= timeToClick){ - return true; - } - return false; - } - - public boolean isClickable(){ - return clickable; - } - - public int getTimeLeftToClick() { - return currentTimeToClick; } + public double getDistanceFromStart() { + return distanceFromStart; + } } diff --git a/model/gameState/PlayState.java b/model/gameState/PlayState.java index d9570c1..0f86a3d 100644 --- a/model/gameState/PlayState.java +++ b/model/gameState/PlayState.java @@ -1,7 +1,5 @@ - package model.gameState; - import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; @@ -9,7 +7,6 @@ import java.awt.Stroke; import java.awt.geom.Rectangle2D; import java.util.Iterator; -import model.GameModel; import model.SongHandler; import model.drawObjects.Enemy; import model.drawObjects.Player; @@ -21,118 +18,124 @@ import control.GameStateManager; import control.button.ButtonEvent; import control.joystick.JoystickEvent; -public class PlayState extends GameState{ +public class PlayState extends GameState { - public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0, 1024, 1024); + public static final Rectangle2D borderRect = new Rectangle2D.Double(256, 0, + 1024, 1024); private PlayArea area; private InfoPanel infoPanel; - private Player player; - private Stroke stroke; - + private Player player; + private Stroke stroke; + public static int sizeOfEnemy = 40; - public static int currentScore = 0; + public static int currentScore = 0; public static int lifePoints = 100; - + private long oldProgress = 0; - + public PlayState(GameStateManager gsm, SongHandler sh) { - super(gsm,sh); - infoPanel = new InfoPanel(0, 0); - area = new PlayArea(256, 1024, 1024, 100); - for(int index = 0; index < 8; index++){ - addEnemy(index, GameModel.colors[index % 6]); - } - - player = new Player(1280-1024+1024/2, 1024/2); - stroke = new BasicStroke(sizeOfEnemy,BasicStroke.CAP_ROUND,BasicStroke.JOIN_ROUND); + super(gsm, sh); + infoPanel = new InfoPanel(0, 0); + area = new PlayArea(256, 1024, 1024, 125); + // for(int index = 0; index < 8; index++){ + // addEnemy(index, GameModel.colors[index % 6]); + // } + // + player = new Player(1280 - 1024 + 1024 / 2, 1024 / 2); + stroke = new BasicStroke(sizeOfEnemy, BasicStroke.CAP_ROUND, + BasicStroke.JOIN_ROUND); } @Override public void init() { sh.stop(); sh.play(); - -// System.out.println("Diff" + sh.getCurrentSongInstance().getDifficulty()); + + // System.out.println("Diff" + + // sh.getCurrentSongInstance().getDifficulty()); } @Override - public void update(float factor) { - player.update(factor); - for(Path path : area.paths){ - IteratorenemyIterator = path.getEnemysInPath().iterator(); - while(enemyIterator.hasNext()){ - Enemy e = enemyIterator.next(); - Rectangle2D hitArea = area.hitAreas[e.getIndex()]; - if(e.finised()){ - enemyIterator.remove(); - } - if(hitArea.intersectsLine(e.enemy) && !e.isClickable()){ - e.clickable(); - } - e.update(factor); - } - } - - infoPanel.updateIPanel(); - -// long progress = sh.getProgress() / 1000; -// -// for(ObjectInstance ob : sh.getCurrentSongInstance().getBetween(oldProgress, progress)) -// { -// Path p = area.paths.get(ob.getDirection()); -// p.addEnemy(ob.getColor(), ob.getDirection(), (int) ob.getLength()); -// } -// -// oldProgress = progress; - } - + public void update(float factor) { + player.update(factor); + for (Path path : area.paths) { - @Override - public void draw(Graphics2D g2) { - try{ - infoPanel.draw(g2); - g2.setClip(borderRect); - area.draw(g2); - - g2.setStroke(stroke); - for(Path p : area.paths){ - if(p.getEnemysInPath() != null){ - for(Enemy enemy : p.getEnemysInPath()){ - enemy.draw(g2); - } - } - } + Iterator enemyIterator = path.getEnemysInPath().iterator(); - if(player != null) - player.draw(g2); - }catch(Exception e){}; - - } - - + while (enemyIterator.hasNext()) { - @Override - public void buttonPressed(ButtonEvent e) { -// int index = player.getIndex(); - Path currentPath = area.paths.get(player.getIndex()); - if (!currentPath.getEnemysInPath().isEmpty()) { - Enemy ce = currentPath.getEnemysInPath().getFirst(); - if (ce.isClickable()) { - if (ce.getColor().equals(e.getButton().getColor())) { - currentScore += ce.getTimeLeftToClick(); - currentPath.getEnemysInPath().remove(ce); + Enemy e = enemyIterator.next(); + + if(e.getDistanceFromStart() > Enemy.distanceToOctagon+(sizeOfEnemy*1.5)){ + enemyIterator.remove(); } + + e.update(factor); } } + + infoPanel.updateIPanel(); + + long progress = (long) ((sh.getProgress() / 1000) + (Enemy.secondsToEnd * 1000)); + + for (ObjectInstance ob : sh.getCurrentSongInstance().getBetween( + oldProgress, progress)) { + Path p = area.paths.get(ob.getDirection()); + p.addEnemy(ob.getColor(), ob.getDirection(), (int) ob.getLength()); + } + + oldProgress = progress; } @Override - public void buttonReleased(ButtonEvent e) { + public void draw(Graphics2D g2) { + try { + infoPanel.draw(g2); + g2.setClip(borderRect); + area.draw(g2); + + g2.setStroke(stroke); + for (Path p : area.paths) { + if (p.getEnemysInPath() != null) { + for (Enemy enemy : p.getEnemysInPath()) { + enemy.draw(g2); + } + } + } + + if (player != null) + player.draw(g2); + } catch (Exception e) { + } + ; + } @Override - public void onJoystickMoved(JoystickEvent e) { - switch(e.getJoystick().getPos()){ + public void buttonPressed(ButtonEvent e) { + Iterator enemysInPath = area.paths.get(player.getIndex()).getEnemysInPath().iterator(); + while(enemysInPath.hasNext()){ + Enemy enemy = enemysInPath.next(); + if(enemy.getDistanceFromStart() > Enemy.distanceToOctagon || enemy.getDistanceFromStart() > Enemy.distanceToOctagon+sizeOfEnemy) + { + if(e.getButton().getColor().equals(enemy.getColor())) + { + currentScore += enemy.getDistanceFromStart() - Enemy.distanceToOctagon; + enemysInPath.remove(); + } + } + + } + + } + + @Override + public void buttonReleased(ButtonEvent e) { + } + + @Override + public void onJoystickMoved(JoystickEvent e) { + switch (e.getJoystick().getPos()) { case CENTER: break; case DOWN: @@ -159,14 +162,14 @@ public class PlayState extends GameState{ case UP_RIGHT: player.setIndex(1); break; - default: + default: break; } } - public void addEnemy(int pathID,Color color){ + public void addEnemy(int pathID, Color color) { Path path = area.paths.get(pathID); - Enemy e = new Enemy(pathID,1,color,path); - path.getEnemysInPath().addLast(e); - } + Enemy e = new Enemy(pathID, 1, color, path); + path.getEnemysInPath().addLast(e); + } } diff --git a/model/gameState/TitleState.java b/model/gameState/TitleState.java index 27f83c2..3708f8c 100644 --- a/model/gameState/TitleState.java +++ b/model/gameState/TitleState.java @@ -11,6 +11,7 @@ import java.awt.image.BufferedImage; import control.joystick.JoystickEvent; import model.SongHandler; import control.GameStateManager; +import control.GameStateManager.State; import control.button.ButtonEvent; public class TitleState extends GameState { @@ -73,7 +74,8 @@ public class TitleState extends GameState { switch(e.getButton().getButtonID()){ case 0: - gsm.next(); + //gsm.next(); + gsm.setState(State.PLAY_STATE); break; }