diff --git a/Game-1/.classpath b/Game-1/.classpath
new file mode 100644
index 0000000..fb50116
--- /dev/null
+++ b/Game-1/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Game-1/.project b/Game-1/.project
new file mode 100644
index 0000000..b540d4f
--- /dev/null
+++ b/Game-1/.project
@@ -0,0 +1,17 @@
+
+
+ Game-1
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Game-1/bin/resources/spaceship.png b/Game-1/bin/resources/spaceship.png
new file mode 100644
index 0000000..2e387ae
Binary files /dev/null and b/Game-1/bin/resources/spaceship.png differ
diff --git a/Game-1/src/Game/Board.java b/Game-1/src/Game/Board.java
new file mode 100644
index 0000000..40dce1d
--- /dev/null
+++ b/Game-1/src/Game/Board.java
@@ -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);
+ }
+ }
+}
diff --git a/Game-1/src/Game/SpaceShip.java b/Game-1/src/Game/SpaceShip.java
new file mode 100644
index 0000000..8e39906
--- /dev/null
+++ b/Game-1/src/Game/SpaceShip.java
@@ -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;
+ }
+ }
+}
diff --git a/Game-1/src/Game/TheGame.java b/Game-1/src/Game/TheGame.java
new file mode 100644
index 0000000..e888d4f
--- /dev/null
+++ b/Game-1/src/Game/TheGame.java
@@ -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);
+ });
+ }
+
+}
diff --git a/Game-1/src/resources/spaceship.png b/Game-1/src/resources/spaceship.png
new file mode 100644
index 0000000..2e387ae
Binary files /dev/null and b/Game-1/src/resources/spaceship.png differ
diff --git a/Game-2/.classpath b/Game-2/.classpath
new file mode 100644
index 0000000..fb50116
--- /dev/null
+++ b/Game-2/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Game-2/.project b/Game-2/.project
new file mode 100644
index 0000000..cff63b0
--- /dev/null
+++ b/Game-2/.project
@@ -0,0 +1,17 @@
+
+
+ Game-2
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Game-2/bin/resources/spaceship.png b/Game-2/bin/resources/spaceship.png
new file mode 100644
index 0000000..2e387ae
Binary files /dev/null and b/Game-2/bin/resources/spaceship.png differ
diff --git a/Game-2/src/Game/Board.java b/Game-2/src/Game/Board.java
new file mode 100644
index 0000000..0b98272
--- /dev/null
+++ b/Game-2/src/Game/Board.java
@@ -0,0 +1,112 @@
+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 java.util.List;
+
+import javax.swing.Timer;
+import javax.swing.JPanel;
+
+
+public class Board extends JPanel implements ActionListener {
+
+ private final int ICRAFT_X = 40;
+ private final int ICRAFT_Y = 60;
+ private final int DELAY = 10;
+ private Timer timer;
+ private SpaceShip spaceShip;
+
+ public Board() {
+
+ initBoard();
+ }
+
+ private void initBoard() {
+
+ addKeyListener(new TAdapter());
+ setBackground(Color.BLACK);
+ setFocusable(true);
+
+ spaceShip = new SpaceShip(ICRAFT_X, ICRAFT_Y);
+
+ 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);
+
+ List missiles = spaceShip.getMissiles();
+
+ for (Missile missile : missiles) {
+
+ g2d.drawImage(missile.getImage(), missile.getX(),
+ missile.getY(), this);
+ }
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+
+ updateMissiles();
+ updateSpaceShip();
+
+ repaint();
+ }
+
+ private void updateMissiles() {
+
+ List missiles = spaceShip.getMissiles();
+
+ for (int i = 0; i < missiles.size(); i++) {
+
+ Missile missile = missiles.get(i);
+
+ if (missile.isVisible()) {
+
+ missile.move();
+ } else {
+
+ missiles.remove(i);
+ }
+ }
+ }
+
+ private void updateSpaceShip() {
+
+ spaceShip.move();
+ }
+
+ private class TAdapter extends KeyAdapter {
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ spaceShip.keyReleased(e);
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ spaceShip.keyPressed(e);
+ }
+ }
+}
+
diff --git a/Game-2/src/Game/Missile.java b/Game-2/src/Game/Missile.java
new file mode 100644
index 0000000..864d700
--- /dev/null
+++ b/Game-2/src/Game/Missile.java
@@ -0,0 +1,28 @@
+package Game;
+
+public class Missile extends Sprite {
+
+ private final int BOARD_WIDTH = 390;
+ private final int MISSILE_SPEED = 2;
+
+ public Missile(int x, int y) {
+ super(x, y);
+
+ initMissile();
+ }
+
+ private void initMissile() {
+
+ loadImage("src/resources/missile.png");
+ getImageDimensions();
+ }
+
+ public void move() {
+
+ x += MISSILE_SPEED;
+
+ if (x > BOARD_WIDTH) {
+ visible = false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Game-2/src/Game/SpaceShip.java b/Game-2/src/Game/SpaceShip.java
new file mode 100644
index 0000000..33188d4
--- /dev/null
+++ b/Game-2/src/Game/SpaceShip.java
@@ -0,0 +1,85 @@
+package Game;
+
+import java.awt.event.KeyEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SpaceShip extends Sprite {
+
+ private int dx;
+ private int dy;
+ private List missiles;
+
+ public SpaceShip(int x, int y) {
+ super(x, y);
+
+ initSpaceShip();
+ }
+
+ private void initSpaceShip() {
+
+ missiles = new ArrayList<>();
+
+ loadImage("src/resources/spaceship.png");
+ getImageDimensions();
+ }
+
+ public void move() {
+ x += dx;
+ y += dy;
+ }
+
+ public List getMissiles() {
+ return missiles;
+ }
+
+ public void keyPressed(KeyEvent e) {
+
+ int key = e.getKeyCode();
+
+ if (key == KeyEvent.VK_SPACE) {
+ fire();
+ }
+
+ if (key == KeyEvent.VK_LEFT) {
+ dx = -1;
+ }
+
+ if (key == KeyEvent.VK_RIGHT) {
+ dx = 1;
+ }
+
+ if (key == KeyEvent.VK_UP) {
+ dy = -1;
+ }
+
+ if (key == KeyEvent.VK_DOWN) {
+ dy = 1;
+ }
+ }
+
+ public void fire() {
+ missiles.add(new Missile(x + width, y + height / 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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Game-2/src/Game/Sprite.java b/Game-2/src/Game/Sprite.java
new file mode 100644
index 0000000..819792b
--- /dev/null
+++ b/Game-2/src/Game/Sprite.java
@@ -0,0 +1,54 @@
+package Game;
+
+import java.awt.Image;
+import javax.swing.ImageIcon;
+
+public class Sprite {
+
+ protected int x;
+ protected int y;
+ protected int width;
+ protected int height;
+ protected boolean visible;
+ protected Image image;
+
+ public Sprite(int x, int y) {
+
+ this.x = x;
+ this.y = y;
+ visible = true;
+ }
+
+ protected void loadImage(String imageName) {
+
+ ImageIcon ii = new ImageIcon(imageName);
+ image = ii.getImage();
+ }
+
+ protected void getImageDimensions() {
+
+ width = image.getWidth(null);
+ height = image.getHeight(null);
+ }
+
+ public Image getImage() {
+ return image;
+ }
+
+ public int getX() {
+ return x;
+ }
+
+ public int getY() {
+ return y;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public void setVisible(Boolean visible) {
+ this.visible = visible;
+ }
+}
+
diff --git a/Game-2/src/Game/TheGame.java b/Game-2/src/Game/TheGame.java
new file mode 100644
index 0000000..e888d4f
--- /dev/null
+++ b/Game-2/src/Game/TheGame.java
@@ -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);
+ });
+ }
+
+}
diff --git a/Game-2/src/resources/missile.png b/Game-2/src/resources/missile.png
new file mode 100644
index 0000000..0a6428a
Binary files /dev/null and b/Game-2/src/resources/missile.png differ
diff --git a/Game-2/src/resources/spaceship.png b/Game-2/src/resources/spaceship.png
new file mode 100644
index 0000000..2e387ae
Binary files /dev/null and b/Game-2/src/resources/spaceship.png differ