commit a1aa8a006f59a854cb0d991aa21d44a442ce7c77 Author: Aaron Johnon Date: Tue Aug 27 02:05:05 2024 -0500 A wild TANK GAME appears! diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..998090c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.class +*.swp + diff --git a/README.md b/README.md new file mode 100644 index 0000000..c706efa --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +#Tank Game +Blow up the other tanks, except they don't exist yet. + diff --git a/main.java b/main.java new file mode 100644 index 0000000..d8ba178 --- /dev/null +++ b/main.java @@ -0,0 +1,27 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + + +public class main { + public static void main(String[] args) { + System.out.println("I like birds."); + JFrame mainframe = new JFrame(); + mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + mainframe.setResizable(false); + mainframe.setTitle("Tank Game"); + mainframe.setLocationRelativeTo(null); + mainframe.setSize(800, 600); + + //JLabel label = new JLabel("Label test!", JLabel.CENTER); + //mainframe.add(label); + + player playerPanel = new player(); + mainframe.add(playerPanel); + playerPanel.requestFocusInWindow(); + + mainframe.setVisible(true); + } +} + diff --git a/player.java b/player.java new file mode 100644 index 0000000..08f6516 --- /dev/null +++ b/player.java @@ -0,0 +1,109 @@ +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(); + } +} +