网站首页 > 文章中心 > 其它

java贪吃蛇代码思路

作者:小编 更新时间:2023-09-04 07:36:52 浏览量:451人看过

java 贪吃蛇思想

多思考才能收获.

Java 编写贪吃蛇游戏的大体思路是什么?

楼主没有看到蛇移动的本质,蛇虽然是分成很多块,但他们还是一个整体,每一块的移动都和上一块有关,所以不需要对每一块都进行判断.\x0d\x0a原理:\x0d\x0a把蛇身体的每一块看成一个对象(对象存储该块的坐标和相关信息),作为节点存储在线性链表中,再设置一个变量标志蛇的方向(通过按键可以改变).一般人都是让每一个节点等于他指向的下一个节点,并让头节点改变位置来实现转弯和移动,这个算法复杂度太高(O(n)),实际上只要做两步操作,插入一个头节点,删除一个尾节点就可以了,新插入的头节点位置根据蛇当前的方向决定 用一个数组将蛇头的行径记录下来,然后第二段的下一个方格设置为蛇头走过的方格,这样子蛇走过的路径都是前一段走过的,最后将跟着蛇头走了,比如\x0d\x0a蛇身的路径\x0d\x0a for(int i=snakeLength-1;i0;i--){\x0d\x0arows[i]=rows[i-1];//依次将蛇前面一段走过行的路段赋值给蛇的下一段\x0d\x0acols[i]=cols[i-1];//依次将蛇前面一段走过列的路段赋值给蛇的下一段\x0d\x0a}\x0d\x0afor(int i=1;i

java贪吃蛇代码注释求解

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Rectangle;

java贪吃蛇代码思路-图1

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.image.BufferedImage;

import java.util.ArrayList;

import java.util.List;

import javax.swing.JFrame;

java贪吃蛇代码思路-图2

public class InterFace extends JFrame {

/**

* WIDTH:宽

* HEIGHT:高

* SLEEPTIME:可以看作蛇运动的速度

*/

Snake snake;

Node node;

public InterFace() {

//创建"蛇"对象

snake = new Snake(this);

//创建"食物"对象

createNode();

this.setBounds(100, 100, WIDTH, HEIGHT);

//添加键盘监听器

this.addKeyListener(new KeyAdapter() {

public void keyPressed(KeyEvent arg0) {

System.out.println(arg0.getKeyCode());

switch (arg0.getKeyCode()) {

case KeyEvent.VK_LEFT:

snake.dir = L;

break;

case KeyEvent.VK_RIGHT:

snake.dir = R;

case KeyEvent.VK_UP:

snake.dir = U;

case KeyEvent.VK_DOWN:

snake.dir = D;

}

});

this.setTitle("贪吃蛇 0.1 By : Easy");

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

this.setVisible(true);

//启动线程,开始执行

new Thread(new ThreadUpadte()).start();

public void paint(Graphics g) {

//如果蛇碰撞(吃)到食物,则创建新食物

if (snake.hit(node)) {

g.drawImage(offersetImage, 0, 0, null);

class ThreadUpadte implements Runnable {

public void run() {

//无限重绘画面

while (true) {

try {

Thread.sleep(SLEEPTIME);

repaint(); //

} catch (InterruptedException e) {

e.printStackTrace();

* 创建食物

public void createNode() {

//随机食物的出现位置

Color color = Color.blue;

node = new Node(x, y, color);

public static void main(String args[]) {

new InterFace();

* 节点类(包括食物和蛇的身躯组成节点)

class Node {

Color color;

public Node(int x, int y, Color color) {

this(x, y);

this.color = color;

public Node(int x, int y) {

this.x = x;

this.y = y;

this.color = color.black;

public Rectangle getRect() {

return new Rectangle(x, y, width, height);

java贪吃蛇代码思路-图3

* 蛇

class Snake {

public ListNode nodes = new ArrayListNode();

InterFace interFace;

int dir=InterFace.R;

public Snake(InterFace interFace) {

this.interFace = interFace;

addNode();

* 是否碰撞到食物

* @return true 是 false 否

public boolean hit(Node node) {

//遍历整个蛇体是否与食物碰撞

for (int i = 0; i nodes.size(); i++) {

if (nodes.get(i).getRect().intersects(node.getRect())) {

return true;

return false;

move();

public void move() {

nodes.remove((nodes.size() - 1));

public synchronized void addNode() {

Node nodeTempNode = nodes.get(0);

//如果方向

switch (dir) {

case InterFace.L:

//判断是否会撞墙

nodes.add(0, new Node(nodeTempNode.x - nodeTempNode.width,

nodeTempNode.y));

case InterFace.R:

nodes.add(0, new Node(nodeTempNode.x + nodeTempNode.width,

case InterFace.U:

nodes.add(0, new Node(nodeTempNode.x, nodeTempNode.y - nodeTempNode.height));

case InterFace.D:

nodes.add(0, new Node(nodeTempNode.x, nodeTempNode.y + nodeTempNode.height));

高手帮忙解释一下JAVA 贪食蛇游戏中蛇的代码

public

class

Snake

implements

Data//蛇类实现了data接口

{

Snake()

array.add(new

Point(10,

①.0));//

①.1));//

currentFlag

=UPFLAG

;//当前的运动方向设为向上

lifeFlag

=

true;//当前蛇的生命设为活着

void

move()//蛇的运动函数

tair

(Point)array.get(array.size()

-

①.);//得到蛇的尾巴

int

len

array.size()

for(int

i

len;

0;

i--)//这个for循环把蛇的每一个点都坐标偏移即运动了

Point

leftPoint

(Point)array.get(i);

rightPoint

(Point)array.get(i

+

①.);

rightPoint.x

leftPoint.x;

rightPoint.y

leftPoint.y;//每一个右边的点等于其左边的点,像蛇那样的一缩一张的运动

moveHeadLeft()//把蛇的头部转向左边

if(currentFlag

==

RIGHTFLAG

||

LEFTFLAG)//如果运动方向设为向左或向右则不执行

return;

point

(Point)(array.get(0));

//得到蛇头部

point.x

①.;//蛇头部横坐标减一,纵坐标不变

point.y

point.y;

if(point.x

LEFT)//如果蛇头部不能再左,就不执行

false;

LEFTFLAG;//将蛇运动方向改为左

怎么包装贪吃蛇项目

思路:

首先你要有一条贪吃蛇,哎,就是玩儿.

①先用Java敲一个贪吃蛇小游戏的程序.

知道思路以后,此时此刻呢按照我的详细步骤走,能少踩坑,别问我怎么知道的!!!

第一段:Java"敲一个"贪吃蛇小游戏

废话不多说,本篇主要讲从java项目到exe应用程序,Java项目的代码在我上传的资源当中——代码-greedy snack.zip

第二段:将项目打成jar包

如何打包成jar包?

①.) 打开项目

java -jar xxx.jar

复制代码

第三段:打包成为exe应用程序

这里首先你要有:

上面生成的jar包 greedy snack.jar

勾选,然后Next.

添加jar包

设置启动类

Next 配置JRE

Next 选择 Client VM

以上就是土嘎嘎小编为大家整理的java贪吃蛇代码思路相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章