diff --git a/src/main/dev/lh/FoodFactory.java b/src/main/dev/lh/FoodFactory.java index f7c0b23..68316c4 100755 --- a/src/main/dev/lh/FoodFactory.java +++ b/src/main/dev/lh/FoodFactory.java @@ -1,5 +1,7 @@ package dev.lh; +import static java.awt.Color.*; + import java.awt.*; import java.util.Random; @@ -27,30 +29,56 @@ public class FoodFactory { * @since Snake 1.0 */ public static enum Food { + /** * Use if white food is wanted. */ - white, + white( + WHITE, 40 + ), /** * Use if yellow food is wanted. */ - yellow, + yellow( + YELLOW, 15 + ), /** * Use if orange food is wanted. */ - orange, + orange( + ORANGE, 6 + ), /** * Use if red food is wanted. */ - red, + red( + RED, 2 + ), /** * Use if blue food is wanted. */ - blue + blue( + BLUE, 1 + ); + + /** + * The color of the food item. + */ + public final Color color; + + /** + * The length bonus of the food item. + */ + public final int lengthBonus; + + private Food(Color color, int lengthBonus) { + this.color = color; + this.lengthBonus = lengthBonus; + } } private static FoodFactory foodFactory = new FoodFactory(); @@ -142,23 +170,7 @@ public class FoodFactory { * @since Snake 1.0 */ public void colorOfFood(Graphics g) { - switch (nextFood) { - case white: - g.setColor(Color.white); - break; - case yellow: - g.setColor(Color.yellow); - break; - case orange: - g.setColor(Color.orange); - break; - case red: - g.setColor(Color.red); - break; - case blue: - g.setColor(Color.blue); - break; - } + g.setColor(nextFood.color); } /** @@ -172,12 +184,12 @@ public class FoodFactory { /** * @param snakeHead the the head of a {@link Snake} object - * @return true if the current food intersects with the snakehead + * @return true if the current food intersects with the snake head * @since Snake 1.0 */ public boolean checkCollision(Rectangle snakeHead) { - int s = rectangleSize * 5; - Rectangle food = new Rectangle(pFood, new Dimension(s, s)); + int s = rectangleSize * 5; + Rectangle food = new Rectangle(pFood, new Dimension(s, s)); return food.intersects(snakeHead); } @@ -186,24 +198,6 @@ public class FoodFactory { * @since Snake 1.0 */ public int getAdditionalLength() { - int snakeAdditionalLength = 0; - switch (nextFood) { - case white: - snakeAdditionalLength = 40; - break; - case yellow: - snakeAdditionalLength = 15; - break; - case orange: - snakeAdditionalLength = 6; - break; - case red: - snakeAdditionalLength = 2; - break; - case blue: - snakeAdditionalLength = 1; - break; - } - return snakeAdditionalLength; + return nextFood.lengthBonus; } } diff --git a/src/main/dev/lh/Updateable.java b/src/main/dev/lh/Updateable.java index f2f91c6..2174917 100755 --- a/src/main/dev/lh/Updateable.java +++ b/src/main/dev/lh/Updateable.java @@ -3,8 +3,8 @@ package dev.lh; import java.awt.Graphics; /** - * This interface contains everything that needs to updated regularly.
- *
+ * This interface contains everything that needs to be updated regularly. + *

* Project: Snake
* File: Updateable.java
* Created: 11 Mar 2020
diff --git a/src/main/dev/lh/ui/Endscreen.java b/src/main/dev/lh/ui/Endscreen.java index be5cb30..1087106 100644 --- a/src/main/dev/lh/ui/Endscreen.java +++ b/src/main/dev/lh/ui/Endscreen.java @@ -20,9 +20,9 @@ public class Endscreen extends JDialog { private static final long serialVersionUID = -4457484397259161063L; - private static final int goodOrBadResult = 200; - private final JPanel contentPanel = new JPanel(); - private final int score; + private static final int goodOrBadResult = 200; + private final JPanel contentPanel = new JPanel(); + private final int score; /** * Create the dialog. @@ -31,32 +31,33 @@ public class Endscreen extends JDialog { */ public Endscreen(int score) { this.score = score; - try { + setTitle("Endscreen"); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + setBounds(100, 100, 700, 700); + getContentPane().setLayout(new BorderLayout()); + contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); + contentPanel.setLayout(new BorderLayout(0, 0)); + getContentPane().add(contentPanel, BorderLayout.CENTER); - setTitle("Endscreen"); - setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); - setBounds(100, 100, 700, 700); - getContentPane().setLayout(new BorderLayout()); - contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); - contentPanel.setLayout(new BorderLayout(0, 0)); - getContentPane().add(contentPanel, BorderLayout.CENTER); + JButton btnNewButton = new JButton("Play again"); + btnNewButton.setMnemonic(KeyEvent.VK_ENTER); + btnNewButton.addActionListener(e -> { + Main.startGame(); + dispose(); + }); + btnNewButton.setFont(new Font("Times New Roman", Font.PLAIN, 15)); + contentPanel.add(btnNewButton, BorderLayout.SOUTH); - JButton btnNewButton = new JButton("Play again"); - btnNewButton.setMnemonic(KeyEvent.VK_ENTER); - btnNewButton.addActionListener(e -> { Main.startGame(); dispose(); }); - btnNewButton.setFont(new Font("Times New Roman", Font.PLAIN, 15)); - contentPanel.add(btnNewButton, BorderLayout.SOUTH); + JLabel lblDeinPunktestand = new JLabel("Dein Punktestand: " + String.valueOf(score)); + lblDeinPunktestand.setFont(new Font("Times New Roman", Font.PLAIN, 25)); + contentPanel.add(lblDeinPunktestand, BorderLayout.NORTH); - JLabel lblDeinPunktestand = new JLabel("Dein Punktestand: " + String.valueOf(score)); - lblDeinPunktestand.setFont(new Font("Times New Roman", Font.PLAIN, 25)); - contentPanel.add(lblDeinPunktestand, BorderLayout.NORTH); - - Image resultImage = Toolkit.getDefaultToolkit() - .getImage(this.getClass().getResource((score < goodOrBadResult) ? "/Try_Again.jpg" : "/1211548-200.png")); - resultImage.flush(); - } catch (Exception e) { - e.printStackTrace(); - } + Image resultImage = Toolkit.getDefaultToolkit() + .getImage( + this.getClass() + .getResource((score < goodOrBadResult) ? "/Try_Again.jpg" : "/1211548-200.png") + ); + resultImage.flush(); } /** diff --git a/src/main/dev/lh/ui/StartScreen.java b/src/main/dev/lh/ui/StartScreen.java index c8d3cb9..0b908d7 100755 --- a/src/main/dev/lh/ui/StartScreen.java +++ b/src/main/dev/lh/ui/StartScreen.java @@ -21,13 +21,14 @@ import dev.lh.Main; */ public class StartScreen extends JFrame { - private static final long serialVersionUID = 6055940532003735543L; - private JPanel contentPane; + private static final long serialVersionUID = 6055940532003735543L; /** * Closes the application. */ - public static void close() { System.exit(0); } + public static void close() { + System.exit(0); + } /** * Launches Snake. @@ -43,31 +44,27 @@ public class StartScreen extends JFrame { * Create the frame. */ public StartScreen() { - try { - // readInHighscores(); - setTitle("Snake - Startscreen"); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - setBounds(500, 200, 550, 550); - contentPane = new JPanel(); - contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); - setContentPane(contentPane); + setTitle("Snake - Startscreen"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(500, 200, 550, 550); - 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 -> { - Main.startGame(); - setVisible(false); - dispose(); - System.gc(); - }); - contentPane.add(buPlay); - contentPane.setLayout(null); - setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } + JPanel contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + setContentPane(contentPane); + + 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 -> { + Main.startGame(); + setVisible(false); + dispose(); + System.gc(); + }); + contentPane.add(buPlay); + contentPane.setLayout(null); + setVisible(true); } }