Я работал над этим целый день, учась по ходу дела. Это мой первый довольно сложный фрагмент кода.
Это простая игра-змейка с рекордами и довольно рабочим меню. целый день смотрел обучающие материалы и собирал это вместе.
В игре есть проблема с showGameOverDialog: кажется, что она запускается случайным образом, независимо от того, что игра в данный момент делает, даже в меню, а также когда собираю яблоко (смеется).
Я знаю, что это не так уж и важно, но может ли кто-нибудь мне помочь с этим?
хочу этого быть моим маленьким хобби и иметь много идей по его продолжению.
Заранее спасибо
Я работал над этим целый день, учась по ходу дела. Это мой первый довольно сложный фрагмент кода. Это простая игра-змейка с рекордами и довольно рабочим меню. целый день смотрел обучающие материалы и собирал это вместе. В игре есть проблема с showGameOverDialog: кажется, что она запускается случайным образом, независимо от того, что игра в данный момент делает, даже в меню, а также когда собираю яблоко (смеется). Я знаю, что это не так уж и важно, но может ли кто-нибудь мне помочь с этим? хочу этого быть моим маленьким хобби и иметь много идей по его продолжению. Заранее спасибо :) [code]import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.*; import java.util.ArrayList; import java.util.List;
public SnakeGame() { setTitle("Snake Game"); setSize(800, 800); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cardLayout = new CardLayout(); mainPanel = new JPanel(cardLayout);
gamePanel = new GamePanel(this); mainMenuPanel = new MainMenuPanel(this); highScorePanel = new HighScorePanel(this); optionsPanel = new OptionsPanel(this);
class GamePanel extends JPanel implements ActionListener {
private static final int TILE_SIZE = 25; private static final int BOARD_WIDTH = 30; private static final int BOARD_HEIGHT = 30; private static final int DELAY = 140; private static final String HIGHSCORE_FILE = "highscore.txt";
private final List snake = new ArrayList(); private Point food; private char direction = 'R'; private Timer timer; private int score = 0; private int highScore = 0; private SnakeGame frame;
public GamePanel(SnakeGame frame) { this.frame = frame; setPreferredSize(new Dimension(TILE_SIZE * BOARD_WIDTH, TILE_SIZE * BOARD_HEIGHT)); setBackground(Color.BLACK); setFocusable(true); loadHighScore(); initGame(); addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_LEFT && direction != 'R') { direction = 'L'; } else if (key == KeyEvent.VK_RIGHT && direction != 'L') { direction = 'R'; } else if (key == KeyEvent.VK_UP && direction != 'D') { direction = 'U'; } else if (key == KeyEvent.VK_DOWN && direction != 'U') { direction = 'D'; } } }); timer = new Timer(DELAY, this); timer.start(); }
@Override public void actionPerformed(ActionEvent e) { moveSnake(); checkCollision(); repaint(); }
private void moveSnake() { Point head = new Point(snake.get(0)); switch (direction) { case 'L': head.x--; break; case 'R': head.x++; break; case 'U': head.y--; break; case 'D': head.y++; break; } snake.add(0, head); snake.remove(snake.size() - 1); }
private void checkCollision() { Point head = snake.get(0); if (head.equals(food)) { snake.add(food); placeFood(); score++; if (score > highScore) { highScore = score; saveHighScore(); } }
Я работаю над AI Hex Game, который использует алгоритм обрезки альфа-бета, и в рамках оценки состояния доски мне нужно рассчитать расстояние между двумя ячейками ( u и v ) на доске. Более подробную информацию об этом расчете расстояния можно найти в...
Я работаю над AI Hex Game Game, который использует алгоритм обрезки альфа-беты, и как часть оценки состояния доски. Проблема. u и v ) на графике. Я полагаю, что это несколько похоже на алгоритм BFS, DFS или Dijkstra - но реализуется рекурсивно. 1) :...
Я работаю над AI Hex Game Game, который использует алгоритм обрезки альфа-беты, и как часть оценки состояния доски. Проблема. u и v ) на графике. Я полагаю, что это несколько похоже на алгоритм BFS, DFS или Dijkstra - но реализуется рекурсивно. 1) :...
Я работаю над AI Hex Game Game, который использует алгоритм обрезки альфа-беты, и как часть оценки состояния доски. Проблема. u и v ) на графике. Я полагаю, что это несколько похоже на алгоритм BFS, DFS или Dijkstra - но реализуется рекурсивно. 1) :...
Я работаю над AI Hex Game Game, который использует алгоритм обрезки альфа-беты, и как часть оценки состояния доски. Проблема. u и v ) на графике. Я полагаю, что это несколько похоже на алгоритм BFS, DFS или Dijkstra - но реализуется рекурсивно. 1) :...