jancoow пре 10 година
родитељ
комит
9cbc90f267
3 измењених фајлова са 74 додато и 2 уклоњено
  1. 1 1
      src/model/objects/Player.java
  2. 49 0
      src/model/objects/ShootingLine.java
  3. 24 1
      src/model/state/PlayState.java

+ 1 - 1
src/model/objects/Player.java

@@ -23,7 +23,7 @@ public class Player extends DrawObject {
 	}
 	
 	public void update(){
-		if(System.currentTimeMillis() - lastMovement > 100){
+		if(System.currentTimeMillis() - lastMovement > 200){
 			image = spriteimage.getSubimage(38, 0, 40, 54);
 			frame = 0;
 		}else{

+ 49 - 0
src/model/objects/ShootingLine.java

@@ -0,0 +1,49 @@
+package model.objects;
+
+import java.awt.Graphics2D;
+import java.awt.Shape;
+import java.awt.geom.Path2D;
+
+public class ShootingLine {
+	private Path2D.Double line;
+	private int startx,starty, length;
+
+	public ShootingLine(int startx, int starty){
+		line = new Path2D.Double();
+		this.startx = startx;
+		this.starty = starty;
+	}
+
+	public void setLength(int length){
+		line = new Path2D.Double();
+		line.moveTo(startx, starty);
+		int tempy = starty;
+		for(int i = 0; i < length; i++){
+			line.curveTo(startx + 10, tempy- 10, startx - 10, tempy - 20, startx, tempy-30);
+			tempy -= 30;
+		}
+		this.length = length;
+	}
+	
+	public void paint(Graphics2D g2d)
+	{
+		g2d.draw(line);
+		g2d.drawLine(startx, getMaxHeight(), startx+8, getMaxHeight()+15);
+		g2d.drawLine(startx, getMaxHeight(), startx-8, getMaxHeight()+15);
+		
+	}
+	
+	public int getLength(){
+		return length;
+	}
+	
+	public Path2D getLine(){
+		return line;
+	}
+	
+	public int getMaxHeight(){
+		return starty - length * 30;
+	}
+	
+
+}

+ 24 - 1
src/model/state/PlayState.java

@@ -2,22 +2,27 @@ package model.state;
 
 import java.awt.Graphics2D;
 import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+import java.util.Iterator;
 
 import main.Window;
 import model.GameStateManager;
-import model.objects.DrawObject;
 import model.objects.Player;
+import model.objects.ShootingLine;
 import resources.image.Images;
 import resources.image.Images.ImageType;
 
 public class PlayState extends State{
 	
 	Player player;
+	ArrayList<ShootingLine> lines;
+	
 	
 	public PlayState(GameStateManager gsm) {
 		super("play", gsm);
 		
 		player = new Player(Images.getImage(ImageType.PLAYER1), 40, 550);
+		lines = new ArrayList<ShootingLine>();
 	}
 
 	/* INIT AND EXIT */
@@ -45,12 +50,26 @@ public class PlayState extends State{
 				player.setX(32);
 			}
 		player.update();
+		Iterator<ShootingLine> i = lines.iterator();
+		while(i.hasNext()){
+			ShootingLine l = i.next();
+			if(l.getMaxHeight() < 0){
+				i.remove();
+			}else{
+				l.setLength(l.getLength() +1);
+			}
+		}
 	}
 
 	@Override
 	public void paint(Graphics2D g2d) {	
 		g2d.drawString("Press ESC to stop the game", Window.WIDTH/2, Window.HEIGHT/2);
 		g2d.drawImage(Images.getImage(ImageType.BACKGROUND),null,0,0);
+		
+
+		for(ShootingLine l:lines){
+			l.paint(g2d);
+		}
 		player.paint(g2d);
 	}
 
@@ -66,6 +85,10 @@ public class PlayState extends State{
 		case KeyEvent.VK_LEFT:
 			player.setX(player.getX()-10);
 			break;
+		case KeyEvent.VK_SPACE:
+			if(lines.size() == 0){
+				lines.add(new ShootingLine((int)player.getX()+player.getWidth()/2, 600));
+			}
 		}
 	}
 	@Override