前言:
此刻各位老铁们对“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的贪吃蛇游戏的设计与实现