Compare commits

..

No commits in common. "develop" and "v1.2" have entirely different histories.

4 changed files with 29 additions and 24 deletions

View File

@ -2,7 +2,7 @@
My advanced Hello World program is a version of the old game Snake.
## Features
- normal playing experience of Snake but hardware-accelerated
- normal playing experience of Snake
- 5 different fruits that can be eaten to enlarge the Snake
- theoretically Start- and Endscreen, currently mostly unused
- theoretically visual display whether a result is good or bad, commented out for now as it does not appear to work as expected
@ -23,4 +23,4 @@ My advanced Hello World program is a version of the old game Snake.
- as the name suggests, defines the visual appearance before and after games
## JAR of the final version
If you follow <a href="https://github.com/delvh/Snake/releases">**this link**</a> and click on release "Snake - Rattlesnake version", you can download the runnable JAR of how the project currently looks like.
If you follow <a href="https://github.com/delvh/Snake/releases">**this link**</a> and click on release "Snake - almost finished", you can download the runnable JAR of how the completed project should look like. Unfortunately due to poor Version-Control-skills, the original code got lost and had to be rewritten, however it should resemble the executed code closely

View File

@ -28,7 +28,7 @@ public class Snake implements Updateable {
* @author Leon Hofmeister
* @since Snake 1.0
*/
public enum Direction {
public static enum Direction {
/**
* Use if the snake should head left.
*/
@ -53,7 +53,7 @@ public class Snake implements Updateable {
private static Endscreen endscreen;
private Direction direction = Direction.RIGHT;
private int length;
private final List<Rectangle> tiles = new ArrayList<>();
private List<Rectangle> tiles = new ArrayList<>();
private static final int TILE_SIZE = 10;
@ -78,7 +78,7 @@ public class Snake implements Updateable {
* @since Snake 1.0
*/
public void addLength(int additional) {
final Rectangle last = tiles.get(tiles.size() - 1);
Rectangle last = tiles.get(tiles.size() - 1);
for (int i = 0; i < additional; i++)
tiles.add(last);
length += additional;
@ -96,9 +96,9 @@ public class Snake implements Updateable {
* @since Snake 1.1
*/
private void gameOver() {
Main.getGame().close();
endscreen = new Endscreen(length);
endscreen.setVisible(true);
Main.getGame().close();
}
@Override

View File

@ -1,7 +1,6 @@
package dev.lh.ui;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
@ -21,7 +20,7 @@ public class Endscreen extends JDialog {
private static final long serialVersionUID = -4457484397259161063L;
// private static final int goodOrBadResult = 200;
private static final int goodOrBadResult = 200;
private final JPanel contentPanel = new JPanel();
private final int score;
@ -50,10 +49,9 @@ public class Endscreen extends JDialog {
lblDeinPunktestand.setFont(new Font("Times New Roman", Font.PLAIN, 25));
contentPanel.add(lblDeinPunktestand, BorderLayout.NORTH);
// final Image resultImage = Toolkit.getDefaultToolkit()
// .getImage(this.getClass().getResource(score < goodOrBadResult ?
// "/Try_Again.jpg" : "/1211548-200.png"));
// resultImage.flush();
final Image resultImage = Toolkit.getDefaultToolkit()
.getImage(this.getClass().getResource(score < goodOrBadResult ? "/Try_Again.jpg" : "/1211548-200.png"));
resultImage.flush();
}
/**

View File

@ -4,7 +4,9 @@ import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import dev.lh.Main;
@ -24,7 +26,9 @@ public class StartScreen extends JFrame {
/**
* Closes the application.
*/
public static void close() { System.exit(0); }
public static void close() {
System.exit(0);
}
/**
* Launches Snake.
@ -32,22 +36,25 @@ public class StartScreen extends JFrame {
* @param args the program arguments
* @since Snake 1.0
*/
public static void main(String[] args) { EventQueue.invokeLater(StartScreen::new); }
public static void main(String[] args) {
EventQueue.invokeLater(StartScreen::new);
}
/**
* Create the frame.
*/
public StartScreen() {
setTitle("Snake - Startscreen");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 550, 550);
final JPanel contentPane = new JPanel();
JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
final JButton buPlay = new JButton("Start Game");
JButton buPlay = new JButton("Start Game");
buPlay.setBounds(158, 197, 190, 131);
buPlay.setText("Play Again");
buPlay.setMnemonic(KeyEvent.VK_ENTER);
buPlay.setFont(new Font("Times New Roman", Font.PLAIN, 16));
buPlay.addActionListener(a -> {