117.info
人生若只如初见

Java实现贪吃蛇游戏的示例代码

下面是一个简单的Java实现贪吃蛇游戏的示例代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class SnakeGame extends JFrame implements KeyListener {
private static final int WIDTH = 300;
private static final int HEIGHT = 300;
private int snakeX;
private int snakeY;
private int appleX;
private int appleY;
private int direction;
public SnakeGame() {
setSize(WIDTH, HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
setResizable(false);
addKeyListener(this);
snakeX = WIDTH / 2;
snakeY = HEIGHT / 2;
appleX = (int) (Math.random() * WIDTH);
appleY = (int) (Math.random() * HEIGHT);
direction = 0;
startGameLoop();
}
private void startGameLoop() {
while (true) {
moveSnake();
checkCollision();
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void moveSnake() {
if (direction == 0) snakeX++;
if (direction == 1) snakeY++;
if (direction == 2) snakeX--;
if (direction == 3) snakeY--;
}
private void checkCollision() {
if (snakeX == appleX && snakeY == appleY) {
appleX = (int) (Math.random() * WIDTH);
appleY = (int) (Math.random() * HEIGHT);
}
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.RED);
g.fillRect(appleX, appleY, 10, 10);
g.setColor(Color.GREEN);
g.fillRect(snakeX, snakeY, 10, 10);
Toolkit.getDefaultToolkit().sync();
g.dispose();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_RIGHT && direction != 2) direction = 0;
if (key == KeyEvent.VK_DOWN && direction != 3) direction = 1;
if (key == KeyEvent.VK_LEFT && direction != 0) direction = 2;
if (key == KeyEvent.VK_UP && direction != 1) direction = 3;
}
@Override
public void keyReleased(KeyEvent e) {
}
public static void main(String[] args) {
new SnakeGame();
}
}

这段代码是一个简单的贪吃蛇游戏的实现,使用Java的Swing库进行绘制。

在构造函数中设置了窗口的大小、位置等属性,并初始化了贪吃蛇和苹果的位置以及当前运动方向。

startGameLoop()方法是游戏的主循环,不断地移动贪吃蛇、检查碰撞并重绘窗口。

moveSnake()方法根据当前的方向移动贪吃蛇的位置。

checkCollision()方法检查贪吃蛇是否与苹果碰撞,如果碰撞则重新生成苹果的位置。

paint()方法用于绘制窗口的内容,包括背景、苹果和贪吃蛇。

keyPressed()方法用于处理键盘按键事件,根据按键改变贪吃蛇的方向。

你可以将这段代码保存为SnakeGame.java文件,并使用Java编译器进行编译运行。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe59aAzsLBgBVAlM.html

推荐文章

  • java怎么实现多重继承效果

    在Java中,类是不支持多重继承的,即一个类不能直接继承多个父类。但是可以通过接口来实现类似多重继承的效果。接口是一种特殊的类,它只包含常量和抽象方法的定...

  • java创建线程的方式有哪些

    Java创建线程的方式有以下几种: 继承Thread类:定义一个继承自Thread类的子类,重写run()方法来定义线程的执行逻辑,然后创建该子类的实例并调用start()方法来启...

  • java怎么将线程停止又开始

    在Java中,可以使用Thread类的stop()和start()方法来停止和启动线程。
    要停止一个线程,可以调用stop()方法。但是这个方法已经被废弃,并且不推荐使用,因为...

  • java设计模式之代理模式怎么应用

    代理模式是一种结构型设计模式,它允许通过创建一个代理对象来控制对实际对象的访问。代理对象充当了实际对象的替代品,可以在调用实际对象的方法之前或之后添加...

  • PHP设计模式之工厂模式详解

    工厂模式是一种创建型设计模式,它提供了一种统一的方式来创建对象,而不用直接实例化对象。工厂模式可以隐藏对象创建的细节,客户端只需要调用工厂的方法就可以...

  • JS event使用方法详解

    JavaScript中的事件是指浏览器或用户执行某种动作时所触发的操作,如点击按钮、滚动页面等。使用事件可以为元素添加交互功能和响应用户操作。
    下面是一些常...

  • 发现SoundMan.exe病毒附删除方法

    SoundMan.exe是一个系统文件,它负责控制音频设备。如果您怀疑SoundMan.exe文件被感染了病毒,以下是一些可能的解决方法: 扫描您的计算机:运行一个强大的安全软...

  • C语言从编译到运行过程详解

    C语言从编译到运行的过程可以分为以下几个步骤: 预处理:预处理器根据源代码中的预处理指令,如#include、#define等,对源代码进行处理。预处理器会去掉注释、将...