Restructure

master
Aaron Johnon 1 year ago
parent 2830dcaf62
commit db5e684b28

@ -1,44 +1,97 @@
package entities;
import javax.swing.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import entities.PlayerBullet;
public class player extends JPanel implements KeyListener, ActionListener {
public class Player extends JPanel implements KeyListener, ActionListener {
private Image sprite;
private int x = 400;
private int y = 512;
private int spd = 1;
private int fdelay = 850; //Time in ms between shots
//Movement bools
private boolean leftPressed = false;
private boolean rightPressed = false;
private boolean upPressed = false;
private boolean downPressed = false;
//Cannon bools
private boolean shootPressed = false;
private boolean canShoot = true;
private List<PlayerBullet> bullets = new ArrayList<>();
//Game loop timer
private Timer timer;
private Timer gameTimer; //Game loop timer
private Timer shotTimer; //Player shot timer
public player() {
public Player() {
ImageIcon icon = new ImageIcon("spr/tank1.png");
sprite = icon.getImage();
setFocusable(true);
addKeyListener(this);
setPreferredSize(new Dimension(800, 600));
//Timer to set target framerate to 60 (~16ms/frame)
timer = new Timer(1000 / 60, this);
timer.start();
gameTimer = new Timer(1000 / 60, this);
gameTimer.start();
shotTimer = new Timer(fdelay, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canShoot = true; // Allow shooting again after fdelay milliseconds
shotTimer.stop(); // Stop the timer until the next shot
}
});
}
private void updatePlayerPos() {
private void updatePosition() {
if (leftPressed) x -= spd;
if (rightPressed) x += spd;
if (upPressed) y -= spd;
if (downPressed) y += spd;
//Update bullet positions
for (int i = 0; i < bullets.size(); i++) {
PlayerBullet bullet = bullets.get(i);
bullet.update();
if (bullet.getY() < -32) {
bullets.remove(i);
i--;
}
}
}
private void playSound(String soundFile) {
try {
Clip clip = AudioSystem.getClip();
clip.open(AudioSystem.getAudioInputStream(new File(soundFile)));
clip.start();
} catch (Exception e) {
System.out.println("Error playing sound: " + e.getMessage());
}
}
private void playerShoot() {
if (canShoot) {
PlayerBullet newBullet = new PlayerBullet(x + sprite.getWidth(null) / 2, y);
bullets.add(newBullet); //Add to bullets list
playSound("sound/shoot1.wav");
canShoot = false;
shotTimer.start();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
@ -102,7 +155,7 @@ public class player extends JPanel implements KeyListener, ActionListener {
}
public void actionPerformed(ActionEvent e) {
updatePlayerPos();
updatePosition();
repaint();
}
}

@ -0,0 +1,35 @@
package entities;
import javax.swing.*;
import java.awt.*;
public class PlayerBullet {
private int x, y;
private int spd = 5;
private Image sprite;
//Constructor
public PlayerBullet(int startX, int startY) {
this.x = startX;
this.y = startY;
ImageIcon icon = new ImageIcon("spr/bullet.png");
sprite = icon.getImage();
}
public void update() {
y -= spd;
}
public void draw(Graphics g) {
g.drawImage(sprite, x, y, null);
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}

@ -1,10 +1,14 @@
package main;
import entities.Player;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class main {
public class Main {
public static void main(String[] args) {
System.out.println("I like birds.");
JFrame mainframe = new JFrame();
@ -17,7 +21,7 @@ public class main {
//JLabel label = new JLabel("Label test!", JLabel.CENTER);
//mainframe.add(label);
player playerPanel = new player();
Player playerPanel = new Player();
mainframe.add(playerPanel);
playerPanel.requestFocusInWindow();

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Before

Width:  |  Height:  |  Size: 857 B

After

Width:  |  Height:  |  Size: 857 B

Loading…
Cancel
Save