You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.3 KiB
110 lines
2.3 KiB
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.KeyEvent;
|
|
import java.awt.event.KeyListener;
|
|
|
|
|
|
public class player extends JPanel implements KeyListener, ActionListener {
|
|
private Image sprite;
|
|
private int x = 400;
|
|
private int y = 512;
|
|
private int spd = 1;
|
|
|
|
//Movement bools
|
|
private boolean leftPressed = false;
|
|
private boolean rightPressed = false;
|
|
private boolean upPressed = false;
|
|
private boolean downPressed = false;
|
|
private boolean shootPressed = false;
|
|
|
|
//Game loop timer
|
|
private Timer timer;
|
|
|
|
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();
|
|
}
|
|
private void updatePlayerPos() {
|
|
if (leftPressed) x -= spd;
|
|
if (rightPressed) x += spd;
|
|
if (upPressed) y -= spd;
|
|
if (downPressed) y += spd;
|
|
}
|
|
|
|
@Override
|
|
protected void paintComponent(Graphics g) {
|
|
super.paintComponent(g);
|
|
g.drawImage(sprite, x, y, this);
|
|
}
|
|
|
|
@Override
|
|
public void keyPressed(KeyEvent e) {
|
|
int key = e.getKeyCode();
|
|
switch (key) {
|
|
case KeyEvent.VK_LEFT:
|
|
case KeyEvent.VK_A:
|
|
leftPressed = true;
|
|
break;
|
|
case KeyEvent.VK_RIGHT:
|
|
case KeyEvent.VK_D:
|
|
rightPressed = true;
|
|
break;
|
|
case KeyEvent.VK_UP:
|
|
case KeyEvent.VK_W:
|
|
upPressed = true;
|
|
break;
|
|
case KeyEvent.VK_DOWN:
|
|
case KeyEvent.VK_S:
|
|
downPressed = true;
|
|
break;
|
|
case KeyEvent.VK_SPACE:
|
|
shootPressed = true;
|
|
break;
|
|
}
|
|
}
|
|
@Override
|
|
public void keyReleased(KeyEvent e) {
|
|
int key = e.getKeyCode();
|
|
switch (key) {
|
|
case KeyEvent.VK_LEFT:
|
|
case KeyEvent.VK_A:
|
|
leftPressed = false;
|
|
break;
|
|
case KeyEvent.VK_RIGHT:
|
|
case KeyEvent.VK_D:
|
|
rightPressed = false;
|
|
break;
|
|
case KeyEvent.VK_UP:
|
|
case KeyEvent.VK_W:
|
|
upPressed = false;
|
|
break;
|
|
case KeyEvent.VK_DOWN:
|
|
case KeyEvent.VK_S:
|
|
downPressed = false;
|
|
break;
|
|
case KeyEvent.VK_SPACE:
|
|
shootPressed = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void keyTyped(KeyEvent e) {
|
|
//UNUSED
|
|
}
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
updatePlayerPos();
|
|
repaint();
|
|
}
|
|
}
|
|
|