Remove some try statements and switches

This commit is contained in:
Kai S. K. Engelbart 2020-07-01 16:01:37 +02:00
parent a0b0c09e1d
commit 5651ea76b0
No known key found for this signature in database
GPG Key ID: 0A48559CA32CB48F
4 changed files with 92 additions and 100 deletions

View File

@ -1,5 +1,7 @@
package dev.lh; package dev.lh;
import static java.awt.Color.*;
import java.awt.*; import java.awt.*;
import java.util.Random; import java.util.Random;
@ -27,30 +29,56 @@ public class FoodFactory {
* @since Snake 1.0 * @since Snake 1.0
*/ */
public static enum Food { public static enum Food {
/** /**
* Use if white food is wanted. * Use if white food is wanted.
*/ */
white, white(
WHITE, 40
),
/** /**
* Use if yellow food is wanted. * Use if yellow food is wanted.
*/ */
yellow, yellow(
YELLOW, 15
),
/** /**
* Use if orange food is wanted. * Use if orange food is wanted.
*/ */
orange, orange(
ORANGE, 6
),
/** /**
* Use if red food is wanted. * Use if red food is wanted.
*/ */
red, red(
RED, 2
),
/** /**
* Use if blue food is wanted. * 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(); private static FoodFactory foodFactory = new FoodFactory();
@ -142,23 +170,7 @@ public class FoodFactory {
* @since Snake 1.0 * @since Snake 1.0
*/ */
public void colorOfFood(Graphics g) { public void colorOfFood(Graphics g) {
switch (nextFood) { g.setColor(nextFood.color);
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;
}
} }
/** /**
@ -172,12 +184,12 @@ public class FoodFactory {
/** /**
* @param snakeHead the the head of a {@link Snake} object * @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 * @since Snake 1.0
*/ */
public boolean checkCollision(Rectangle snakeHead) { public boolean checkCollision(Rectangle snakeHead) {
int s = rectangleSize * 5; int s = rectangleSize * 5;
Rectangle food = new Rectangle(pFood, new Dimension(s, s)); Rectangle food = new Rectangle(pFood, new Dimension(s, s));
return food.intersects(snakeHead); return food.intersects(snakeHead);
} }
@ -186,24 +198,6 @@ public class FoodFactory {
* @since Snake 1.0 * @since Snake 1.0
*/ */
public int getAdditionalLength() { public int getAdditionalLength() {
int snakeAdditionalLength = 0; return nextFood.lengthBonus;
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;
} }
} }

View File

@ -3,8 +3,8 @@ package dev.lh;
import java.awt.Graphics; import java.awt.Graphics;
/** /**
* This interface contains everything that needs to updated regularly.<br> * This interface contains everything that needs to be updated regularly.
* <br> * <p>
* Project: <strong>Snake</strong><br> * Project: <strong>Snake</strong><br>
* File: <strong>Updateable.java</strong><br> * File: <strong>Updateable.java</strong><br>
* Created: <strong>11 Mar 2020</strong><br> * Created: <strong>11 Mar 2020</strong><br>

View File

@ -20,9 +20,9 @@ public class Endscreen extends JDialog {
private static final long serialVersionUID = -4457484397259161063L; 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 JPanel contentPanel = new JPanel();
private final int score; private final int score;
/** /**
* Create the dialog. * Create the dialog.
@ -31,32 +31,33 @@ public class Endscreen extends JDialog {
*/ */
public Endscreen(int score) { public Endscreen(int score) {
this.score = 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"); JButton btnNewButton = new JButton("Play again");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); btnNewButton.setMnemonic(KeyEvent.VK_ENTER);
setBounds(100, 100, 700, 700); btnNewButton.addActionListener(e -> {
getContentPane().setLayout(new BorderLayout()); Main.startGame();
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); dispose();
contentPanel.setLayout(new BorderLayout(0, 0)); });
getContentPane().add(contentPanel, BorderLayout.CENTER); btnNewButton.setFont(new Font("Times New Roman", Font.PLAIN, 15));
contentPanel.add(btnNewButton, BorderLayout.SOUTH);
JButton btnNewButton = new JButton("Play again"); JLabel lblDeinPunktestand = new JLabel("Dein Punktestand: " + String.valueOf(score));
btnNewButton.setMnemonic(KeyEvent.VK_ENTER); lblDeinPunktestand.setFont(new Font("Times New Roman", Font.PLAIN, 25));
btnNewButton.addActionListener(e -> { Main.startGame(); dispose(); }); contentPanel.add(lblDeinPunktestand, BorderLayout.NORTH);
btnNewButton.setFont(new Font("Times New Roman", Font.PLAIN, 15));
contentPanel.add(btnNewButton, BorderLayout.SOUTH);
JLabel lblDeinPunktestand = new JLabel("Dein Punktestand: " + String.valueOf(score)); Image resultImage = Toolkit.getDefaultToolkit()
lblDeinPunktestand.setFont(new Font("Times New Roman", Font.PLAIN, 25)); .getImage(
contentPanel.add(lblDeinPunktestand, BorderLayout.NORTH); this.getClass()
.getResource((score < goodOrBadResult) ? "/Try_Again.jpg" : "/1211548-200.png")
Image resultImage = Toolkit.getDefaultToolkit() );
.getImage(this.getClass().getResource((score < goodOrBadResult) ? "/Try_Again.jpg" : "/1211548-200.png")); resultImage.flush();
resultImage.flush();
} catch (Exception e) {
e.printStackTrace();
}
} }
/** /**

View File

@ -21,13 +21,14 @@ import dev.lh.Main;
*/ */
public class StartScreen extends JFrame { public class StartScreen extends JFrame {
private static final long serialVersionUID = 6055940532003735543L; private static final long serialVersionUID = 6055940532003735543L;
private JPanel contentPane;
/** /**
* Closes the application. * Closes the application.
*/ */
public static void close() { System.exit(0); } public static void close() {
System.exit(0);
}
/** /**
* Launches Snake. * Launches Snake.
@ -43,31 +44,27 @@ public class StartScreen extends JFrame {
* Create the frame. * Create the frame.
*/ */
public StartScreen() { public StartScreen() {
try { setTitle("Snake - Startscreen");
// readInHighscores(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Snake - Startscreen"); setBounds(500, 200, 550, 550);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 550, 550);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JButton buPlay = new JButton("Start Game"); JPanel contentPane = new JPanel();
buPlay.setBounds(158, 197, 190, 131); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
buPlay.setText("Play Again"); setContentPane(contentPane);
buPlay.setMnemonic(KeyEvent.VK_ENTER);
buPlay.setFont(new Font("Times New Roman", Font.PLAIN, 16)); JButton buPlay = new JButton("Start Game");
buPlay.addActionListener(a -> { buPlay.setBounds(158, 197, 190, 131);
Main.startGame(); buPlay.setText("Play Again");
setVisible(false); buPlay.setMnemonic(KeyEvent.VK_ENTER);
dispose(); buPlay.setFont(new Font("Times New Roman", Font.PLAIN, 16));
System.gc(); buPlay.addActionListener(a -> {
}); Main.startGame();
contentPane.add(buPlay); setVisible(false);
contentPane.setLayout(null); dispose();
setVisible(true); System.gc();
} catch (Exception e) { });
e.printStackTrace(); contentPane.add(buPlay);
} contentPane.setLayout(null);
setVisible(true);
} }
} }