




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/文件名:SnakeMIDlet .javapackage snake;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class SnakeMIDlet extends MIDlet SnakeCanvas displayable = new SnakeCanvas(); public SnakeMIDlet() Display.getDisplay(this).setCurrent(displayable); public void startApp() public void pauseApp() public void destroyApp(boolean unconditional) /文件名:SnakeCanvas.javapackage snake;import java.util.*;import javax.microedition.lcdui.*;/* 贪吃蛇游戏*/public class SnakeCanvas extends Canvas implements Runnable /*存储贪吃蛇节点坐标,其中第二维下标为0的x坐标,第二维下标是1的y坐标*/ int snake = new int2002; /*已经使用的节点数量*/ int snakeNum; /*贪吃蛇运动方向,0向上,1向下,2向左,3向右*/ int direction; /*移动方向*/ /*向上*/ private final int DIRECTION_UP = 0; /*向下*/ private final int DIRECTION_DOWN = 1; /*向左*/ private final int DIRECTION_LEFT = 2; /*向右*/ private final int DIRECTION_RIGHT = 3; /*游戏区域宽度*/ int width; /*游戏区域高度*/ int height; /*蛇身单元宽度*/ private final byte SNAKEWIDTH = 4; /*是否处于暂停状态,true暂停*/ boolean isPaused = false; /*是否处于运行状态,true运行*/ boolean isRun = true; /*时间间隔*/ private final int SLEEP_TIME = 300; /*食物的X坐标*/ int foodX; /*食物的Y坐标*/ int foodY; /*食物的闪烁控制*/ boolean b = true; /*Random对象*/ Random random = new Random(); public SnakeCanvas() /初始化 init(); width = this.getWidth(); height = this.getHeight(); /启动线程 new Thread(this).start(); /* * 初始化开始数据 */ private void init() /初始化节点数量 snakeNum = 7; /初始化节点数据 for(int i = 0;i snakeNum;i+) snake0 = 100 - SNAKEWIDTH * i; snake1 = 40; /初始化移动方向 direction = DIRECTION_RIGHT; /初始化食物坐标 foodX = 100; foodY = 100; protected void paint(Graphics g) /清屏 g.setColor(0xffffff); g.fillRect(0,0,width,height); g.setColor(0); /绘制蛇身 for(int i = 0;i 0;i-) snake0 = snakei - 10; snake1 = snakei - 11; /第一个单元格移动 switch(direction) case DIRECTION_UP: snake01 = snake01 - SNAKEWIDTH; break; case DIRECTION_DOWN: snake01 = snake01 + SNAKEWIDTH; break; case DIRECTION_LEFT: snake00 = snake00 - SNAKEWIDTH; break; case DIRECTION_RIGHT: snake00 = snake00 + SNAKEWIDTH; break; /* * 吃掉食物,自身增长 */ private void eatFood() /判别蛇头是否和食物重叠 if(snake00 = foodX & snake01 = foodY) snakeNum+; generateFood(); /* * 产生食物 * 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合 */ private void generateFood() while(true) foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1) / SNAKEWIDTH * SNAKEWIDTH; boolean b = true; for(int i = 0;i snakeNum;i+) if(foodX = snake0 & snake1 = foodY) b = false; break; if(b) break; /* * 判断游戏是否结束 * 结束条件: * 1、蛇头超出边界 * 2、蛇头碰到自身 */ private boolean isGameOver() /边界判别 if(snake00 (width - SNAKEWIDTH) | snake01 (height - SNAKEWIDTH) return true; /碰到自身 for(int i = 4;i snakeNum;i+) if(snake00 = snake0 & snake01 = snake1) return true; return false; /* * 事件处理 */ public void keyPressed(int keyCode) int action = this.getGameAction(keyCode); /改变方向 switch(action) case UP: if(direction != DIRECTION_DOWN) direction = DIRECTION_UP; break; case DOWN: if(direction != DIRECTION_UP) direction = DIRECTION_DOWN; break; case LEFT: if(direction != DIRECTION_RIGHT) direction = DIRECTION_LEFT; break; case RIGHT: if(direction != DIRECTION_LEFT) direction = DIRECTION_RIGHT; break; case FIRE: /暂停和继续 isPaused = !isPaused; break; /* * 线程方法 * 使用精确延时 */ public void run() try while (isRun) /开始时间 long start = System.currentTimeMillis(); if(!isPaused) /吃食物 eatFood(); /移动 move(direction); /结束游戏 if(isGame
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数字运传燃气表、水表、电表项目规划申请报告
- 商圈志愿活动方案
- 员工踏青活动策划方案
- 商场节日促销活动方案
- 团年活动室外活动方案
- 团建打靶活动方案
- 品牌推广公司活动方案
- 商场餐饮开业活动方案
- 售卖明信片活动方案
- 国庆邮局活动方案
- 2025年八年级学业水平考试生物试卷 (附答案)
- 2025防洪防汛专项培训
- 执业医师考试重要法律法规试题及答案
- 统编版2024-2025第二学期小学六年级期末语文测试卷(有答案)
- 烟花爆竹经营安全培训
- 会计核算中的权责发生制与收付实现制试题及答案
- 2024版压力容器设计审核机考题库-多选3-2
- 2025年国防教育课件
- 贵州国企招聘2024贵州贵安发展集团有限公司招聘68人笔试参考题库附带答案详解
- 园林行业职业道德
- 2025(人教版)小升初数学总复习 知识点总结+专项练习(含答案)
评论
0/150
提交评论