diff --git a/Snake/.classpath b/Snake/.classpath new file mode 100644 index 0000000..e461bea --- /dev/null +++ b/Snake/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/Snake/.gitignore b/Snake/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/Snake/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/Snake/.project b/Snake/.project new file mode 100644 index 0000000..919eb8f --- /dev/null +++ b/Snake/.project @@ -0,0 +1,17 @@ + + + Snake + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Snake/.settings/org.eclipse.jdt.core.prefs b/Snake/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/Snake/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Snake/src/dev/lh/snake/Food.java b/Snake/src/dev/lh/snake/Food.java new file mode 100644 index 0000000..c380bf4 --- /dev/null +++ b/Snake/src/dev/lh/snake/Food.java @@ -0,0 +1,21 @@ +package dev.lh.snake; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Point; + +public class Food { + + private Point position; + + public Food(int x, int y) { + position = new Point(x,y); + } + + public void render(Graphics g) { + g.setColor(Color.yellow); + g.fillRect(position.x, position.y, 16, 16); + } + + +} diff --git a/Snake/src/dev/lh/snake/GameWindow.java b/Snake/src/dev/lh/snake/GameWindow.java new file mode 100644 index 0000000..0fb25fa --- /dev/null +++ b/Snake/src/dev/lh/snake/GameWindow.java @@ -0,0 +1,98 @@ +package dev.lh.snake; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Toolkit; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.Timer; + +import dev.lh.snake.Snake; + +public class GameWindow extends JFrame { + + /** + * + */ + private static final long serialVersionUID = 1L; + Toolkit tk = Toolkit.getDefaultToolkit(); + int xSize = ((int) tk.getScreenSize().getWidth()); + int ySize = ((int) tk.getScreenSize().getHeight()); + + public GameWindow(int width, int height, String title) { + super(title); + setLocationRelativeTo(null); + Dimension size = new Dimension(width, height); + setPreferredSize(size); + setMinimumSize(size); + setMaximumSize(size); + setResizable(false); + setDefaultCloseOperation(EXIT_ON_CLOSE); + + Snake s = new Snake(3); + + add(new JPanel() { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + g.setColor(Color.black); + g.fillRect(0, 0, width, height); + s.render(g); + } + }); + + addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + super.keyPressed(e); + switch (e.getKeyCode()) { + case KeyEvent.VK_W: + s.setRichtung(Direction.Up); + break; + case KeyEvent.VK_A: + s.setRichtung(Direction.Left); + break; + case KeyEvent.VK_S: + s.setRichtung(Direction.Down); + break; + case KeyEvent.VK_D: + s.setRichtung(Direction.Right); + break; + case KeyEvent.VK_UP: + s.setRichtung(Direction.Up); + break; + case KeyEvent.VK_LEFT: + s.setRichtung(Direction.Left); + break; + case KeyEvent.VK_DOWN: + s.setRichtung(Direction.Down); + break; + case KeyEvent.VK_RIGHT: + s.setRichtung(Direction.Right); + break; + + }// switch + }// keypressed + });// keylistener + + Timer timer = new Timer (200, (evt)->{ + s.tick(); + repaint(); + }); + timer.start(); + + setVisible(true); + + } +}// Konstruktor \ No newline at end of file diff --git a/Snake/src/dev/lh/snake/Handler.java b/Snake/src/dev/lh/snake/Handler.java new file mode 100644 index 0000000..db7b371 --- /dev/null +++ b/Snake/src/dev/lh/snake/Handler.java @@ -0,0 +1,15 @@ +package dev.lh.snake; + +import java.util.ArrayList; +import java.util.List; + +public class Handler { + + List targets; + + public Handler() { + targets = new ArrayList<>(); + targets.add(new Snake(3)); + } + +} diff --git a/Snake/src/dev/lh/snake/Main.java b/Snake/src/dev/lh/snake/Main.java new file mode 100644 index 0000000..7a6b3cd --- /dev/null +++ b/Snake/src/dev/lh/snake/Main.java @@ -0,0 +1,13 @@ +package dev.lh.snake; + +import dev.lh.snake.GameWindow; + +public class Main { + + public static void main(String[] args) { + + GameWindow game = new GameWindow(640, 480, "Snake"); + game.setVisible(true); + } + +} diff --git a/Snake/src/dev/lh/snake/Snake.java b/Snake/src/dev/lh/snake/Snake.java new file mode 100644 index 0000000..6c00f4e --- /dev/null +++ b/Snake/src/dev/lh/snake/Snake.java @@ -0,0 +1,76 @@ +package dev.lh.snake; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Point; + +public class Snake implements Updateable { + + static enum Direction{ + Left, Right, Up, Down; + } + private Direction Richtung; + private int length; + private Point[] tiles; + + public Snake(int length) { + this.length = length; + tiles =new Point[length]; + Richtung = Direction.Left; + + for(int i = 0; i