




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
J2ME手机游戏实战开发,第三讲,实例24 扫雷 Mine24Ye,游戏规则: 游戏启动,显示方块矩阵,一些方块中藏有地雷。游戏任务是排除所有无地雷的方块。游戏者通过方块选择一个方块,按中心键打开所选择的方块。打开方块时,遵守以下规则:藏有地雷,游戏失败真空方块,执行“炸开”不是真空方块,且不藏有地雷,显示周围的地雷总数,制作难点,如何存储网格方块:用TieldLayer布局如何设置地雷如何挖地雷,打开方块 如何键盘Input()如何判断地雷已经清扫完毕 logic()如何在屏幕上显示当前挖地雷状况 paint()注意 数组的行列 和TiledLayer的列行,Grids类,public TiledLayer m_GridTL; public int nRows; public int nCols; public int curRow=0; public int curCol=0; private boolean m_Mine; Grids(int nRows,int nCols,int scrWidth,int scrHeight)public void initGrids() /初始化清空,及布雷public void digMine(int row,int col) /挖地雷pupublic void showAllMines() /设置显示所有地雷public void paint(Graphics g) /绘制public boolean logic() /判断成功与否,MainCanvas类,private Grids m_Grids; private boolean isGameOk;protected MainCanvas() public void run()public void input()public void logic( )public void paint( ),MineMIDlet类,Display.getDisplay(this).setCurrent( new MainCanvas() );MineMIDletMainCanvasGridsTiledLayer m_Mine,如何存储网格方块:用TieldLayer布局,public TiledLayer m_GridTL;Image img = Image.createImage(“/TL.png);m_GridTL = new TiledLayer( nCols, nRows, img, img.getWidth()/6, img.getHeight ()/2);初始化 Grids(int nRows,int nCols)for( int row = 0; row nRows; row + ) for( int col = 0; col 0) while(true) /在网格中,随机找到一块方格,设置地雷 int row=m_Random.nextInt(nRows); int col=m_Random.nextInt(nCols); if( m_Minerowcol=false) m_Minerowcol=true; break; num-;,如何挖地雷,打开方块,public void digMine(int row,int col)1 是否已经打开2 是否藏有地雷3 打开当前方块,并显示其周围的地雷总数4 如果周围地雷总数为0(真空方块),需要执行“炸开”操作,分别将真空方块周围的方块设置为新的方块,执行打开操作,即重新从第1步执行。,Grids中 如何挖地雷,打开方块:递归调用,public void digMine(int row,int col) if(m_GridTL.getCell(col, row)!=1) /方块已经打开 return; if(m_Minerowcol) /方块内藏有地雷 showAllMines(); return; /计算方块周围地雷总数 int num=0; for( int r = -1; r=0 ,MainCanvas 中input(),public void input() int keyStates = getKeyStates(); /获取键盘状态 if( ( keyStates 注意,行列的下标不要移出界,如何判断地雷已经清扫完毕 logic(),public boolean logic() /在Grids类中判断,每个没挖的方块都是地雷 for( int row = 0; row nRows; row + ) for( int col = 0; col nCols; col + ) if(m_GridTL.getCell( col, row)=1) if(!m_Minerowcol) return false; return true;public void logic( ) / 判断是否结束,在MainCanvas中 if(m_Grids.logic( ) ) isGameOk=true; ,如何在屏幕上显示当前挖地雷状况,public void showAllMines() /挖雷失败是,调用for( int row = 0; row nRows; row + ) for( int col = 0; col nCols; col + ) if(m_Minerowcol) m_GridTL.setCell( col, row, 2); public void paint(Graphics g)m_GridTL.paint(g);/显示当前被选中的方块的位置,由当前行和当前列计算出位置int x,y;x=m_GridTL.getX()+curCol*m_GridTL.getCellWidth();y=m_GridTL.getY()+curRow*m_GridTL.getCellHeight();g.drawRect(x, y, m_GridTL.getCellWidth(),m_GridTL.getCellHeight();,Step1:在屏幕上显示初始状态Step2: 初始化地雷设置,显示地雷Step3: 挖地雷动作digMine(int row,int col),键盘输入 input()Step4: 判断是否挖雷成功Step5: 检测修补,比如键盘移动方格的边界网格的居中显示Step6:思考:如何设置关级别,用CommandStep7:思考:如何设置关级别,用图片按钮,思考:如何设置关级别或者 初级、中级难度级别,在MainCanvas中添加两个按钮private Command cmdLevel1 = new Command(Level1,Command.OK,1);private Command cmdLevel2 = new Command(Level2,Command.OK,1);public void commandAction(Command c, Displayable arg1) / TODO Auto-generated method stubif(c=cmdLevel1)/第一关m_Grids=new Grids(10,10,this.getWidth(),this.getHeight();m_Grids.initGrids(5);new Thread(this).start
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源电池隔板加工制造项目施工方案
- 土石方工程设备使用与管理方案
- 超高纯电子级气体生产建设项目建设工程方案
- xx市城乡供水安全保障一体化项目技术方案
- 冷冻法施工组织设计
- 中心城区地下管网改造项目节能评估报告
- 2025年新生入学考核题库及答案
- 老旧供水管网改造工程节能评估报告
- 跨区域口腔医院医生聘用及人才培养协议
- 离婚二次起诉书:共同债务清偿与财产分割协议
- 道教学院考试试题2025及答案
- 征迁岗位笔试题目及答案
- 共用道路纠纷协议书
- DB34T 5137-2025电化学储能液冷系统设计技术要求
- 食品免责协议书
- 25Hz相敏轨道电路系统配套器材一60课件
- 风力发电机组的建模与仿真技术研究
- DB44-T 1661-2021 河道管理范围内建设项目技术规程
- 驾考宝典三力测试考试试题及答案
- 中医护理实践中的伦理问题研究
- 骨科围手术期的护理流程
评论
0/150
提交评论