龙空技术网

拆解经典互联网游戏“贪吃蛇”的 Java 实现流程

毕小宝 28

前言:

此刻各位老铁们对“java方块游戏代码”大致比较着重,你们都想要知道一些“java方块游戏代码”的相关文章。那么小编同时在网摘上网罗了一些有关“java方块游戏代码””的相关内容,希望我们能喜欢,看官们快快来了解一下吧!

算法分析

(一)启动一个独立线程根据 direction 重绘面板实现蛇身移动效果,运行过程:

记录上次头部的坐标到 tempBody 中根据方向修改头部坐标重绘面板判断头部坐标与食物坐标的关系,如果重合则蛇身增加,同时生成新的食物坐标,积分累加判断与边缘的关系,如果重叠,则游戏结束判断与 body 的关系,如果重叠,则说明碰到自己,游戏结束休眠几十毫秒

(二)按键事件

方向键控制 direction ,只允许 90 度方向转换,不允许 180 度转换方向A 键控制开始游戏R 键控制重新开始游戏Esc 键控制退出游戏

(三)初始化

头部块食物块游戏区积分区tempBody 初始值与头部一致

(四)移动后重绘方法

绘制背景图绘制头部方块回事食物方块绘制得分修正将 body 中的数据替换到 tempBody 除了第一个以外的数据处,得到完整的蛇身坐标用 tempBody 修正 body 坐标数据,得到最终的数据遍历 body 绘制蛇身方块核心实现移动的代码

    //让蛇移动的线程	public void move() {		new Thread() {			public void run() {				while (true) {										//O 是方向					if (gameState == 1) {						//记录此次移动前的头部坐标						tempBody.get(0).x = head.x;						tempBody.get(0).y = head.y;												switch (direction) {						case south:							head.y = head.y + 10;							break;						case north:							head.y = head.y - 10;							break;						case east:							head.x = head.x + 10;							break;						case west:							head.x = head.x - 10;							break;						}												//重绘移动后的蛇身						repaint();												//吃到食物了						if (head.x == food.x && head.y == food.y) {							//身体长度加一个初始值为0的坐标							tempBody.add(new Point(0,0));							body.add(new Point(0,0));														//得分加 10							myScore = myScore + 10;							System.out.println("Get the food ,new score is:"+myScore);														//重新生成食物坐标							food.x = random.nextInt(60) * 10;							food.y = random.nextInt(56) * 10;														//重绘							repaint();						}												//碰到边缘						if (head.x < 0 || head.y < 0 || head.x == 600 || head.y == 560) {							gameState = -1;							repaint();							System.out.println("Game over because touch the edge.");							break;						}												//碰到自己了						for (int i = 0; i < body.size(); i++) {							if (head.x == body.get(i).x && head.y == body.get(i).y) {								gameState = -1;								repaint();								System.out.println("Game over because touch the body.");								break;							}						}					}										try {						Thread.sleep(140);					} catch (InterruptedException e) {						// TODO: handle exception					}				}			}		}.start();	}
使用说明创建一个 Java 工程,将 game 文件夹拷贝到 src 目录下。执行 GameFrame 类。

这是一个已经发布在Github 上的 Java 小应用,感兴趣的同学可以私信我获取链接。

标签: #java方块游戏代码 #java游戏程序 #java贪食蛇 #java贪吃蛇小游戏详解 #基于java的贪吃蛇游戏的设计与实现