Session: Scheduling. just a treat: a small sprite game
This commit is contained in:
82
Game-1/src/Game/Board.java
Normal file
82
Game-1/src/Game/Board.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package Game;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
import javax.swing.Timer;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
|
||||
public class Board extends JPanel implements ActionListener {
|
||||
|
||||
private Timer timer;
|
||||
private SpaceShip spaceShip;
|
||||
private final int DELAY = 10;
|
||||
|
||||
public Board() {
|
||||
|
||||
initBoard();
|
||||
}
|
||||
|
||||
private void initBoard() {
|
||||
|
||||
addKeyListener(new TAdapter());
|
||||
setBackground(Color.black);
|
||||
setFocusable(true);
|
||||
|
||||
spaceShip = new SpaceShip();
|
||||
|
||||
timer = new Timer(DELAY, this);
|
||||
timer.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
||||
doDrawing(g);
|
||||
|
||||
Toolkit.getDefaultToolkit().sync();
|
||||
}
|
||||
|
||||
private void doDrawing(Graphics g) {
|
||||
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
|
||||
g2d.drawImage(spaceShip.getImage(), spaceShip.getX(),
|
||||
spaceShip.getY(), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
step();
|
||||
}
|
||||
|
||||
private void step() {
|
||||
|
||||
spaceShip.move();
|
||||
|
||||
repaint(spaceShip.getX()-1, spaceShip.getY()-1,
|
||||
spaceShip.getWidth()+2, spaceShip.getHeight()+2);
|
||||
}
|
||||
|
||||
private class TAdapter extends KeyAdapter {
|
||||
|
||||
@Override
|
||||
public void keyReleased(KeyEvent e) {
|
||||
spaceShip.keyReleased(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyPressed(KeyEvent e) {
|
||||
spaceShip.keyPressed(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
104
Game-1/src/Game/SpaceShip.java
Normal file
104
Game-1/src/Game/SpaceShip.java
Normal file
@@ -0,0 +1,104 @@
|
||||
package Game;
|
||||
|
||||
import java.awt.Image;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
public class SpaceShip {
|
||||
|
||||
private int dx;
|
||||
private int dy;
|
||||
private int x = 40;
|
||||
private int y = 60;
|
||||
private int w;
|
||||
private int h;
|
||||
private Image image;
|
||||
|
||||
public SpaceShip() {
|
||||
|
||||
loadImage();
|
||||
}
|
||||
|
||||
private void loadImage() {
|
||||
|
||||
ImageIcon ii = new ImageIcon("src/resources/spaceship.png");
|
||||
image = ii.getImage();
|
||||
|
||||
w = image.getWidth(null);
|
||||
h = image.getHeight(null);
|
||||
}
|
||||
|
||||
public void move() {
|
||||
|
||||
x += dx;
|
||||
y += dy;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
public int getWidth() {
|
||||
|
||||
return w;
|
||||
}
|
||||
|
||||
public int getHeight() {
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
public Image getImage() {
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
public void keyPressed(KeyEvent e) {
|
||||
|
||||
int key = e.getKeyCode();
|
||||
|
||||
if (key == KeyEvent.VK_LEFT) {
|
||||
dx = -2;
|
||||
}
|
||||
|
||||
if (key == KeyEvent.VK_RIGHT) {
|
||||
dx = 2;
|
||||
}
|
||||
|
||||
if (key == KeyEvent.VK_UP) {
|
||||
dy = -2;
|
||||
}
|
||||
|
||||
if (key == KeyEvent.VK_DOWN) {
|
||||
dy = 2;
|
||||
}
|
||||
}
|
||||
|
||||
public void keyReleased(KeyEvent e) {
|
||||
|
||||
int key = e.getKeyCode();
|
||||
|
||||
if (key == KeyEvent.VK_LEFT) {
|
||||
dx = 0;
|
||||
}
|
||||
|
||||
if (key == KeyEvent.VK_RIGHT) {
|
||||
dx = 0;
|
||||
}
|
||||
|
||||
if (key == KeyEvent.VK_UP) {
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
if (key == KeyEvent.VK_DOWN) {
|
||||
dy = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
33
Game-1/src/Game/TheGame.java
Normal file
33
Game-1/src/Game/TheGame.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package Game;
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import javax.swing.JFrame;
|
||||
|
||||
public class TheGame extends JFrame {
|
||||
|
||||
public TheGame() {
|
||||
|
||||
initUI();
|
||||
}
|
||||
|
||||
private void initUI() {
|
||||
|
||||
add(new Board());
|
||||
|
||||
setTitle("Moving sprite");
|
||||
setSize(800, 800);
|
||||
|
||||
setLocationRelativeTo(null);
|
||||
setResizable(false);
|
||||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
EventQueue.invokeLater(() -> {
|
||||
TheGame ex = new TheGame();
|
||||
ex.setVisible(true);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
BIN
Game-1/src/resources/spaceship.png
Normal file
BIN
Game-1/src/resources/spaceship.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Reference in New Issue
Block a user