Skip to content

Commit 839ef14

Browse files
BOOM Space Invaders + TIMEJUMP
1 parent cab48fb commit 839ef14

File tree

7 files changed

+158
-9
lines changed

7 files changed

+158
-9
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Project exclude paths
2+
/out/

src/frame/InputHandler.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package frame;
22

3+
import game.Game;
4+
35
import java.util.HashMap;
46
import java.util.Map;
57

@@ -10,7 +12,7 @@ public class InputHandler implements KeyListener {
1012

1113
private Map<Integer, Boolean> pressedKeys;
1214

13-
public InputHandler() {
15+
public InputHandler(Game game) {
1416
pressedKeys = new HashMap<>();
1517
}
1618

@@ -21,6 +23,8 @@ public void keyTyped(KeyEvent e) {
2123

2224
@Override
2325
public void keyPressed(KeyEvent e) {
26+
27+
System.out.print(e.getKeyCode());
2428
pressedKeys.put(e.getKeyCode(), true);
2529
}
2630

src/frame/Window.java

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class Window extends JFrame {
1919
public Window() {
2020
this.setResizable(false);
2121
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
22+
this.setTitle("POF - Space Invaders");
2223

2324
this.setVisible(true);
2425
Insets i = this.getInsets();

src/game/Game.java

+55-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package game;
22

33
import frame.InputHandler;
4+
import game.enitties.Bullet;
5+
import game.enitties.Enemy;
6+
7+
import java.util.ArrayList;
8+
import java.util.List;
49

510
import java.awt.*;
611
import java.awt.event.KeyEvent;
@@ -10,9 +15,22 @@ public class Game {
1015
private InputHandler ih;
1116
private Player p;
1217

18+
private List<Enemy> enemies;
19+
private List<Bullet> bullets;
20+
21+
private int lives = 10;
22+
1323
public Game(Window w) {
14-
p = new Player();
15-
ih = new InputHandler();
24+
p = new Player(this);
25+
ih = new InputHandler(this);
26+
27+
enemies = new ArrayList<>();
28+
for(int i = 0; i < 10; i++) {
29+
enemies.add(new Enemy(this, frame.Window.width/10 * i + frame.Window.width / 20, (int) (32 + (Math.random() * 10))));
30+
enemies.add(new Enemy(this, frame.Window.width/10 * i, (int) (96 + (Math.random() * 10))));
31+
}
32+
33+
bullets = new ArrayList<>();
1634

1735
w.addKeyListener(ih);
1836
}
@@ -27,13 +45,47 @@ public void update(long dt) {
2745
p.setMX(mx);
2846
p.update(dt);
2947

30-
if(ih.isKeyPressed(KeyEvent.VK_SPACE)) {
48+
if(ih.isKeyPressed(32)) {
3149
p.shoot();
3250
}
3351

52+
53+
for(int i = 0; i < enemies.size(); i++) enemies.get(i).update(dt);
54+
for(int i = 0; i < bullets.size(); i++) bullets.get(i).update(dt);
3455
}
3556

3657
public void draw(Graphics g) {
3758
p.draw(g);
59+
for(int i = 0; i < enemies.size(); i++) enemies.get(i).draw(g);
60+
for(int i = 0; i < bullets.size(); i++) bullets.get(i).draw(g);
61+
62+
g.setColor(Color.WHITE);
63+
g.drawString("Lives: " + lives, 16, 32);
64+
}
65+
66+
public void spawnBullet(Bullet b) {
67+
bullets.add(b);
68+
}
69+
70+
public void removeEnemy(Enemy e) {
71+
enemies.remove(e);
72+
if(lives < 0 || enemies.size() == 0) {
73+
System.exit(0);
74+
}
75+
}
76+
77+
public void removeBullet(Bullet bullet) {
78+
bullets.remove(bullet);
79+
}
80+
81+
public List<Enemy> getEnemies() {
82+
return enemies;
83+
}
84+
85+
public void removeLive() {
86+
lives --;
87+
if(lives < 0 || enemies.size() == 0) {
88+
System.exit(0);
89+
}
3890
}
3991
}

src/game/Player.java

+15-2
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,41 @@
11
package game;
22

33
import frame.Window;
4+
import game.enitties.Bullet;
45
import game.enitties.Entity;
56

67
import java.awt.*;
78

89
public class Player extends Entity {
910

11+
private long lastShoot = 750;
12+
private long shootCooldown = 750;
13+
1014
private float x = Window.width / 2;
1115
private int y = Window.height - 80;
1216

1317
private int mx = 0;
1418

19+
private Game game;
20+
21+
public Player(Game game) {
22+
this.game = game;
23+
}
24+
1525
public void setMX(int mx) {
1626
this.mx = mx;
1727
}
1828

1929
public void shoot() {
20-
30+
if(lastShoot >= shootCooldown) {
31+
lastShoot -= shootCooldown;
32+
game.spawnBullet(new Bullet(game, (int) (x - 16), y));
33+
}
2134
}
2235

2336
public void update(long dt) {
2437
x += mx * dt / 3.0f;
25-
System.out.println(mx + " " + dt);
38+
lastShoot += dt;
2639
}
2740

2841
public void draw(Graphics g) {

src/game/enitties/Bullet.java

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package game.enitties;
2+
3+
import game.Game;
4+
5+
import java.awt.*;
6+
7+
public class Bullet extends Entity {
8+
9+
private float x, y;
10+
private Game game;
11+
12+
public Bullet(Game game, int x, int y) {
13+
this.game = game;
14+
this.x = x;
15+
this.y = y;
16+
}
17+
18+
@Override
19+
public void update(long dt) {
20+
y -= dt / 5.0f;
21+
22+
if(y < 0) {
23+
game.removeBullet(this);
24+
}
25+
26+
for(Enemy e: game.getEnemies()) {
27+
if(calculateDistanceBetweenPoints(x, y, e.getX(), e.getY()) < 15 + 5) {
28+
game.removeBullet(this);
29+
game.removeEnemy(e);
30+
break;
31+
}
32+
}
33+
}
34+
35+
@Override
36+
public void draw(Graphics g) {
37+
g.setColor(Color.GREEN);
38+
g.fillOval((int)x - 4, (int)y - 4, 8, 8);
39+
}
40+
41+
public static double calculateDistanceBetweenPoints(double x1, double y1, double x2, double y2) {
42+
return Math.sqrt((y2 - y1) * (y2 - y1) + (x2 - x1) * (x2 - x1));
43+
}
44+
}

src/game/enitties/Enemy.java

+36-3
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,55 @@
11
package game.enitties;
22

3+
import frame.Window;
4+
import game.Game;
5+
36
import java.awt.*;
47

58
public class Enemy extends Entity {
69

7-
private int x, y;
10+
private int mx = -1;
11+
private float x, y;
12+
13+
private Game game;
814

9-
public Enemy(int x, int y) {
15+
public Enemy(Game game, int x, int y) {
16+
this.game = game;
1017

18+
this.x = x;
19+
this.y = y;
1120
}
1221

1322
@Override
1423
public void update(long dt) {
15-
24+
x += mx * dt / 4.5f;
25+
26+
if(x <= 16) {
27+
y += 15;
28+
mx = 1;
29+
x = 17;
30+
} else if(x >= Window.width - 16){
31+
y += 15;
32+
mx = -1;
33+
x = Window.width - 16;
34+
}
35+
36+
if(y > Window.height - 10) {
37+
game.removeEnemy(this);
38+
game.removeLive();
39+
}
1640
}
1741

1842
@Override
1943
public void draw(Graphics g) {
44+
g.setColor(Color.RED);
45+
g.fillOval((int)x - 16, (int)y - 16, 32, 32);
46+
}
47+
48+
public float getX() {
49+
return x;
50+
}
2051

52+
public float getY() {
53+
return y;
2154
}
2255
}

0 commit comments

Comments
 (0)