GameSprint1Done, little bug. When aiming right down not possible to hit with button 1 and 3 :S

This commit is contained in:
Remco
2015-05-26 22:14:44 +02:00
parent 2af16890d4
commit 3bc4f55f5a
18 changed files with 515 additions and 84 deletions
+107
View File
@@ -0,0 +1,107 @@
package model.drawObjects;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
public class Bullet extends DrawObject {
private double speed,lengthOfBullet;
public Line2D bullet;
private Color c;
public Bullet(double speed,Color c,double lengthOfBullet,int index,Line2D path) {
super();
this.speed = speed;
this.lengthOfBullet = lengthOfBullet;
this.c = c;
double beginX,beginY,endX,endY;
beginX = path.getX2();
beginY = path.getY2();
endX = beginX;
endY = beginY;
//the 8 richtingen van de octagon
switch(index){
case 0:
endY = beginY - lengthOfBullet;
break;
case 1:
endX = beginX + lengthOfBullet;
endY = beginY - lengthOfBullet;
break;
case 2:
endX = beginX + lengthOfBullet;
break;
case 3:
endX = beginX + lengthOfBullet;
endY = beginY + lengthOfBullet;
break;
case 4:
endY = beginY + lengthOfBullet;
break;
case 5:
endX = beginX - lengthOfBullet;
endY = beginY + lengthOfBullet;
break;
case 6:
endX = beginX - lengthOfBullet;
break;
case 7:
endX = beginX - lengthOfBullet;
endY = beginY - lengthOfBullet;
break;
}
bullet = new Line2D.Double(beginX, beginY, endX, endY);
// System.out.println("Index: "+index);
// System.out.println("X difference: "+(bullet.getX2()-bullet.getX1()));
// System.out.println("Y difference: "+(bullet.getY2()-bullet.getY1()));
}
@Override
public void draw(Graphics2D g2) {
g2.setPaint(c);
g2.draw(bullet);
}
@Override
public void update() {
double x1,x2,y1,y2,yDifference,xDifference;
x1 = bullet.getX1();
x2 = bullet.getX2();
y1 = bullet.getY1();
y2 = bullet.getY2();
yDifference = y2 - y1;
xDifference = x2 - x1;
if(yDifference < 0.0){
y1 -= speed;
y2 = y1-lengthOfBullet;
}else if(yDifference > 0.0){
y1 += speed;
y2 = y1+lengthOfBullet;
}
if(xDifference < 0.0){
x1 -= speed;
x2 = x1-lengthOfBullet;
}else if(xDifference > 0.0){
x1 += speed;
x2 = x1+lengthOfBullet;
}
bullet.setLine(x1, y1, x2, y2);
}
public Color getColor() {
return c;
}
public void setColor(Color c) {
this.c = c;
}
}
+8 -6
View File
@@ -2,19 +2,21 @@ package model.drawObjects;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
public abstract class DrawObject {
protected Point2D middlePoint;
protected AffineTransform transform;
protected int index = 0,width,height;
public DrawObject(int x, int y) {
middlePoint = new Point2D.Double(x, y);
protected AffineTransform transform;
protected double width,height;
protected int index = 0;
public DrawObject() {
transform = new AffineTransform();
}
public void setIndex(int index){
this.index = index;
}
public abstract void draw(Graphics2D g2);
public abstract void update();
}
+82
View File
@@ -0,0 +1,82 @@
package model.drawObjects;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
public class Enemy extends Person{
private Color color;
private Ellipse2D.Double circle;
private Point2D beginPoint;
private Dimension size;
private double xSpeed,ySpeed;
/**
*
* @param path, the path the player is walking on.
* @param c, the color of the enemy
* @param size, the size of the enemy
* @param stepsToFinishTheMiddle, the speed to finish the middle octagon
*/
public Enemy(Line2D path,Color c,int size,double stepsToFinishTheMiddle) {
super(path.getX1()-size/2,path.getY1()-size/2);
beginPoint = new Point2D.Double(middlePoint.getX(),middlePoint.getY());
this.size = new Dimension(size,size);
color = c;
circle = new Ellipse2D.Double(middlePoint.getX(),middlePoint.getY(),this.size.width,this.size.height);
index = 0;
xSpeed = (path.getX2() - circle.getCenterX())/stepsToFinishTheMiddle;
ySpeed = (path.getY2() - circle.getCenterY())/stepsToFinishTheMiddle;
}
@Override
public void draw(Graphics2D g2) {
g2.setPaint(color);
g2.fill(circle);
}
private void moveTowardsPlayer()
{
double newX, newY;
newX = index*xSpeed+beginPoint.getX();
newY = index*ySpeed+beginPoint.getY();
index++;
middlePoint.setLocation(newX, newY);
circle.setFrame(middlePoint, size);
}
@Override
public void update() {
moveTowardsPlayer();
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public Ellipse2D.Double getCircle() {
return circle;
}
public void setCircle(Ellipse2D.Double circle) {
this.circle = circle;
}
public boolean hit(Bullet bullet){
if(color.equals(bullet.getColor()) && circle.getBounds2D().intersectsLine(bullet.bullet)){
return true;
}
return false;
}
}
+13
View File
@@ -0,0 +1,13 @@
package model.drawObjects;
import java.awt.geom.Point2D;
public abstract class Person extends DrawObject {
protected Point2D middlePoint;
public Person(double x, double y) {
super();
middlePoint = new Point2D.Double(x, y);
}
}
+41 -6
View File
@@ -2,28 +2,63 @@ package model.drawObjects;
import image.Images;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Player extends DrawObject {
import model.gameState.PlayState;
import model.objects.PlayArea;
public class Player extends Person {
private BufferedImage img;
private PlayArea path ;
public List<Bullet> bullets;
public Player(int x, int y){
public Player(int x, int y,PlayArea paths){
super(x,y);
img = Images.getImage(Images.ImageType.player);
this.path = paths;
img = Images.getImage(Images.ImageType.player2);
width = img.getWidth();
height = img.getHeight();
bullets = new ArrayList<Bullet>();
}
public void draw(Graphics2D g2){//
g2.drawImage(img, transform, null);
g2.drawImage(img, transform, null);
g2.setStroke(new BasicStroke(5));
for(Bullet b : bullets){
b.draw(g2);
}
}
public void update(){
transform = new AffineTransform();
transform.rotate(Math.toRadians(index*45),middlePoint.getX(),middlePoint.getY());
transform.translate(middlePoint.getX() - width/2, middlePoint.getY() - height*2);
transform.translate(middlePoint.getX() - width/2, middlePoint.getY() - height);
for(Bullet b : bullets){
b.update();
}
Iterator<Bullet> i = bullets.iterator();
while(i.hasNext()){
if(!PlayState.borderRect.intersectsLine(i.next().bullet)){
i.remove();
}
}
}
public void addBullet(Color c){
System.out.println(index);
bullets.add(new Bullet(10, c, 10, index,path.paths.get(index)));
}
public void removeBullet(Bullet bullet){
bullets.remove(bullet);
}
}