Java怎么实现贪吃蛇游戏


要实现贪吃蛇游戏,可以使用Java语言编写。下面是一个简单的示例代码:

import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.FontMetrics;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.ImageIcon;import javax.swing.JPanel;import javax.swing.Timer;public class GameBoard extends JPanel implements ActionListener {private final int B_WIDTH = 300;private final int B_HEIGHT = 300;private final int DOT_SIZE = 10;private final int ALL_DOTS = 900;private final int RAND_POS = 29;private final int DELAY = 140;private final int x[] = new int[ALL_DOTS];private final int y[] = new int[ALL_DOTS];private int dots;private int apple_x;private int apple_y;private boolean leftDirection = false;private boolean rightDirection = true;private boolean upDirection = false;private boolean downDirection = false;private boolean inGame = true;private Timer timer;private Image ball;private Image apple;private Image head;public GameBoard() {initBoard();}private void initBoard() {addKeyListener(new TAdapter());setBackground(Color.black);setFocusable(true);setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT));loadImages();initGame();}private void loadImages() {ImageIcon iid = new ImageIcon("src/resources/dot.png");ball = iid.getImage();ImageIcon iia = new ImageIcon("src/resources/apple.png");apple = iia.getImage();ImageIcon iih = new ImageIcon("src/resources/head.png");head = iih.getImage();}private void initGame() {dots = 3;for (int z = 0; z < dots; z++) {x[z] = 50 - z * 10;y[z] = 50;}locateApple();timer = new Timer(DELAY, this);timer.start();}@Overridepublic void paintComponent(Graphics g) {super.paintComponent(g);doDrawing(g);}private void doDrawing(Graphics g) {if (inGame) {g.drawImage(apple, apple_x, apple_y, this);for (int z = 0; z < dots; z++) {if (z == 0) {g.drawImage(head, x[z], y[z], this);} else {g.drawImage(ball, x[z], y[z], this);}}Toolkit.getDefaultToolkit().sync();} else {gameOver(g);}}private void gameOver(Graphics g) {String msg = "Game Over";Font small = new Font("Helvetica", Font.BOLD, 14);FontMetrics metr = getFontMetrics(small);g.setColor(Color.white);g.setFont(small);g.drawString(msg, (B_WIDTH - metr.stringWidth(msg)) / 2, B_HEIGHT / 2);}private void checkApple() {if ((x[0] == apple_x) && (y[0] == apple_y)) {dots++;locateApple();}}private void move() {for (int z = dots; z > 0; z--) {x[z] = x[(z - 1)];y[z] = y[(z - 1)];}if (leftDirection) {x[0] -= DOT_SIZE;}if (rightDirection) {x[0] += DOT_SIZE;}if (upDirection) {y[0] -= DOT_SIZE;}if (downDirection) {y[0] += DOT_SIZE;}}private void checkCollision() {for (int z = dots; z > 0; z--) {if ((z > 4) && (x[0] == x[z]) && (y[0] == y[z])) {inGame = false;}}if (y[0] >= B_HEIGHT) {inGame = false;}if (y[0] < 0) {inGame = false;}if (x[0] >= B_WIDTH) {inGame = false;}if (x[0] < 0) {inGame = false;}if (!inGame) {timer.stop();}}


上一篇:java怎么获取昨天的日期

下一篇:c语言创建链表的方法是什么


Java
Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索