Collision checking for outer bounds works apparentlly solely on Windows, commented out for now #1
@ -7,6 +7,7 @@ import java.awt.Rectangle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import dev.lh.ui.Endscreen;
|
||||
import dev.lh.ui.GameWindow;
|
||||
|
||||
/**
|
||||
@ -65,7 +66,7 @@ public class Snake implements Updateable {
|
||||
*/
|
||||
public Snake(int length) {
|
||||
this.length = length;
|
||||
Richtung = Direction.Left;
|
||||
Richtung = Direction.Right;
|
||||
|
||||
for (int i = 0; i < length; i++)
|
||||
tiles.add(new Point(320 - 50 * i, 240));
|
||||
@ -98,24 +99,49 @@ public class Snake implements Updateable {
|
||||
cur = tiles.get(i);
|
||||
tiles.set(i, (Point) next.clone());
|
||||
next = cur;
|
||||
} // for
|
||||
// if(tiles.get(0).x<=0||tiles.get(0).x>=)
|
||||
}
|
||||
|
||||
// case if the snake is outside of the screen or touches itself
|
||||
if (!Main.getGame().getBounds().contains(tiles.get(0)) || checkSelfCollision()) gameOver();
|
||||
|
||||
// case if snake eats food
|
||||
if (foodFactory.checkCollision(new Rectangle(tiles.get(0).x, tiles.get(0).y, snakeSize, snakeSize))) {
|
||||
addLength(foodFactory.getAdditionalLength());
|
||||
GameWindow game = Main.getGame();
|
||||
game.newFood();
|
||||
}
|
||||
}
|
||||
|
||||
}// End tick
|
||||
/**
|
||||
*
|
||||
* @since Snake 1.1
|
||||
*/
|
||||
private void gameOver() {
|
||||
Endscreen endscreen = new Endscreen(length);
|
||||
endscreen.setVisible(true);
|
||||
Main.getGame().close();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return whether the snake collides with itself
|
||||
* @since Snake 1.1
|
||||
*/
|
||||
private boolean checkSelfCollision() {
|
||||
Point headIndex = tiles.get(0);
|
||||
Rectangle head = new Rectangle(headIndex.x, headIndex.y, snakeSize, snakeSize);
|
||||
for (int index = 1; index < tiles.size(); index++) {
|
||||
Point bodyIndex = tiles.get(index);
|
||||
if (head.contains(new Rectangle(bodyIndex.x, bodyIndex.y, snakeSize, snakeSize))) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Graphics g) {
|
||||
g.setColor(Color.green);
|
||||
|
||||
for (int i = 0; i < length; i++)
|
||||
g.fillRect(tiles.get(i).x, tiles.get(i).y, snakeSize, snakeSize);
|
||||
|
||||
}// End render
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the current {@link Direction} of the snake
|
||||
|
@ -4,9 +4,7 @@ import java.awt.BorderLayout;
|
||||
import java.awt.Font;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
@ -28,15 +26,14 @@ public class Endscreen extends JDialog {
|
||||
|
||||
private final JPanel contentPanel = new JPanel();
|
||||
private static int score = 0;
|
||||
private final int goodOrBadResult = 250;
|
||||
|
||||
/**
|
||||
* Create the dialog.
|
||||
*
|
||||
* @param score1 the highscore to set
|
||||
* @param score the highscore to set
|
||||
*/
|
||||
public Endscreen(int score1) {
|
||||
setScore(score1);
|
||||
public Endscreen(int score) {
|
||||
Endscreen.score = score;
|
||||
try {
|
||||
// readInHighscoresPoints();
|
||||
// readInHighscoresPlayers();
|
||||
@ -85,7 +82,8 @@ public class Endscreen extends JDialog {
|
||||
btnNewButton.addActionListener(e -> { Main.startGame(); setVisible(false); dispose(); });
|
||||
// BLOß NICHT RAUSWERFEN
|
||||
btnNewButton.setIconTextGap(5);
|
||||
btnNewButton.setIcon(new ImageIcon(ClassLoader.getSystemResource("/com/sun/javafx/webkit/prism/resources/mediaPlayDisabled.png")));
|
||||
// btnNewButton.setIcon(new
|
||||
// ImageIcon(ClassLoader.getSystemResource("/com/sun/javafx/webkit/prism/resources/mediaPlayDisabled.png")));
|
||||
// Endscreen.class.getResource("/com/sun/javafx/webkit/prism/resources/mediaPlayDisabled.png")));
|
||||
btnNewButton.setFont(new Font("Times New Roman", Font.PLAIN, 15));
|
||||
btnNewButton.setBounds(85, 512, 243, 100);
|
||||
@ -149,22 +147,24 @@ public class Endscreen extends JDialog {
|
||||
// lblYourName.setBounds(10, 355, 82, 29);
|
||||
// contentPanel.add(lblYourName);
|
||||
|
||||
JCheckBox chckbxNewCheckBox = new JCheckBox("");
|
||||
JLabel lblDasIstEin = new JLabel("Das ist ein hervorragender Wert!");
|
||||
lblDasIstEin.setFont(new Font("Times New Roman", Font.PLAIN, 15));
|
||||
if (score1 >= goodOrBadResult) {
|
||||
chckbxNewCheckBox.setIcon(new ImageIcon(ClassLoader.getSystemResource("/dev/lh/snake/1211548-200.png")));
|
||||
chckbxNewCheckBox.setBounds(300, 200, 200, 200);
|
||||
lblDasIstEin.setBounds(10, 100, 212, 50);
|
||||
} else {
|
||||
chckbxNewCheckBox.setIcon(new ImageIcon(ClassLoader.getSystemResource("/dev/lh/snake/Try_Again.jpg")));
|
||||
chckbxNewCheckBox.setBounds(300, 200, 250, 210);
|
||||
lblDasIstEin.setText("Das kannst du aber noch verbessern!");
|
||||
lblDasIstEin.setBounds(10, 100, 240, 50);
|
||||
contentPanel.add(lblDasIstEin);
|
||||
}
|
||||
contentPanel.add(chckbxNewCheckBox);
|
||||
contentPanel.add(lblDasIstEin);
|
||||
// JCheckBox chckbxNewCheckBox = new JCheckBox("");
|
||||
// JLabel lblDasIstEin = new JLabel("Das ist ein hervorragender Wert!");
|
||||
// lblDasIstEin.setFont(new Font("Times New Roman", Font.PLAIN, 15));
|
||||
// if (score >= goodOrBadResult) {
|
||||
// chckbxNewCheckBox.setIcon(new
|
||||
// ImageIcon(ClassLoader.getSystemResource("/dev/lh/snake/1211548-200.png")));
|
||||
// chckbxNewCheckBox.setBounds(300, 200, 200, 200);
|
||||
// lblDasIstEin.setBounds(10, 100, 212, 50);
|
||||
// } else {
|
||||
// chckbxNewCheckBox.setIcon(new
|
||||
// ImageIcon(ClassLoader.getSystemResource("/dev/lh/snake/Try_Again.jpg")));
|
||||
// chckbxNewCheckBox.setBounds(300, 200, 250, 210);
|
||||
// lblDasIstEin.setText("Das kannst du aber noch verbessern!");
|
||||
// lblDasIstEin.setBounds(10, 100, 240, 50);
|
||||
// contentPanel.add(lblDasIstEin);
|
||||
// }
|
||||
// contentPanel.add(chckbxNewCheckBox);
|
||||
// contentPanel.add(lblDasIstEin);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ public class GameWindow extends JFrame {
|
||||
*/
|
||||
public void newFood() {
|
||||
foodFactory.generateFood();
|
||||
foodFactory.generateFoodLocation(super.getWidth(), super.getHeight());
|
||||
foodFactory.generateFoodLocation(getWidth(), getHeight());
|
||||
repaint();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user