已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java拼图小游戏,2015/1/5,利用java的图形用户界面设计,设计简单的拼图游戏,一、实训要求,二、程序流程图,三、实现的游戏功能,三、实现的游戏功能,附加功能:可选择从预设的图片中选择图片拼图,三、实现的游戏功能,游戏结束界面,要实现游戏的上述功能,很显然有以下几个关键问题要考虑:,四、算法设计,1.如何加载图片?2.如何实现拼图的随机排列?3.如何实现图片的移动?4.如何判断游戏结束的标志?5.如何实现图片的切换选择?,1.如何加载图片?2.如何实现拼图的随机排列?3.如何实现图片的移动?4.如何判断游戏结束的标志?5.如何实现图片的切换选择?,五、核心代码分析,cell=newCell9;/创建九个方格Iconicon;/声明图标for(inti=0;i3;i+)/循环为9个方格加载图片,并初使化坐标,形成三行三列for(intj=0;j3;j+)icon=newImageIcon(“pictrue/pic_”+pictureID+“_”+(i*3+j+1)+“.jpg”);/根据指定URL创建图标celli*3+j=newCell(icon);/创建方格在方格中加载图片celli*3+j.setLocation(j*100,i*100);/设置方格的位置this.add(celli*3+j);/面板添加方格,(1)如何加载图片?,1.如何加载图片?2.如何实现拼图的随机排列?3.如何实现图片的移动?4.如何判断游戏结束的标志?5.如何实现图片的切换选择?,五、核心代码分析,关键代码:intdirection=(int)(Math.random()*4);/随机产生一个0-3的数字,对应空方格的上下左右移动,(2)如何实现拼图的随机排列?,1.如何加载图片?2.如何实现拼图的随机排列?3.如何实现图片的移动?4.如何判断游戏结束的标志?5.如何实现图片的切换选择?,五、核心代码分析,(3)如何实现图片的移动?,通过鼠标点击相邻图片,所点击的图片与空白按钮互换位置,完成拼图的移动。具体代码,(3)如何实现图片的移动?,1.鼠标事件,publicvoidmousePressed(MouseEventevent)/方格的鼠标按下事件Cellbutton=(Cell)event.getSource();/获得鼠标按的方格按钮intx1=button.getBounds().x;/得到所单击方格的坐标inty1=button.getBounds().y;intx2=cellNull.getBounds().x;/得到空方格的坐标inty2=cellNull.getBounds().y;,(3)如何实现图片的移动?,1.鼠标事件,if(x1=x2/不满足就不进行任何处理,(3)如何实现图片的移动?,1.鼠标事件,cellNull.setLocation(x1,y1);/重新设置空方格的位置this.repaint();,(3)如何实现图片的移动?,publicvoidmove(Stringdirection,intsleep)/方格的移动if(direction=UP)/方格向上移动this.setLocation(this.getBounds().x,this.getBounds().y-100);elseif(direction=DOWN)/方格向下移动this.setLocation(this.getBounds().x,this.getBounds().y+100);elseif(direction=LEFT)/方格向左移动this.setLocation(this.getBounds().x-100,this.getBounds().y);else/方格向右移动this.setLocation(this.getBounds().x+100,this.getBounds().y);,2.move方法,1.如何加载图片?2.如何实现拼图的随机排列?3.如何实现图片的移动?4.如何判断游戏结束的标志?5.如何实现图片的切换选择?,五、核心代码分析,publicbooleanisFinish()/判断是否拼合成功for(inti=0;i8;i+)intx=celli.getBounds().x;inty=celli.getBounds().y;if(y/100*3+x/100!=i)/判断是否每一个位置都恢复到初始位置returnfalse;returntrue;,(4)如何判断游戏结束的标志?,1.如何加载图片?2.如何实现拼图的随机排列?3.如何实现图片的移动?4.如何判断游戏结束的标志?5.如何实现图片的切换选择?,五、核心代码分析,publicvoidactionPerformed(ActionEventarg0)/对三个按钮事件的处理Buttonbutton=(Button)arg0.getSource();/获得事件按钮源if(button=start)/如果是开始按钮myCanvas.Start();/调用图片方格打乱方法,(5)如何实现图片的切换?,elseif(button=preview)/如果是查看事件if(button.getLabel()=预览)/如果按钮标签为预览container.remove(myCanvas);/容器移除图片面板container.add(panelPreview);/容器添加预览标签panelPreview.updateUI();/不用调整大小就可以出现新增删的组件container.repaint();/重绘button.setLabel(返回);/设置按钮标签,(5)如何实现图片的切换?,elsecontainer.remove(panelPreview);/容器移除预览面板container.add(myCanvas);/容器添加图片面板container.repaint();/重绘button.setLabel(预览);/设置按钮标签,(5)如何实现图片的切换?,elseif(button=set)/如果是选择按钮,修改所选图片Choicepic=newChoice();/创建选择器pic.add(小猫);/添加列表项pic.add(小猪);pic.add(云);pic.add(QQ);pic.add(卡通);pic.add(花);,(5)如何实现图片的切换?,inti=JOptionPane.showConfirmDialog(this,pic,选择图片,JOptionPane.OK_CANCEL_OPTION);/弹出对话框if(i=JOptionPane.YES_OPTION)/选择对话框的确定按钮MyCanvas.pictureID=pic.getSelectedIndex()+1;/获得列表项的编号myCanvas.reLoadPictrue();/图片重载,(5)如何实现图片的切换?,Iconicon=newImageIcon(pictrue/pic_+MyCanvas.pictureID+.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46249-2025化学品快速雄激素干扰活性报告试验
- 2025-2026学年北京版(新教材)二年级上册第四单元“表内乘法(二)”达标试卷(附参考答案)
- 非诉讼类委托代理合同
- TSI校验与OPC试验详解
- 西游记相关考试题及答案
- 2025年商品卡片的测试题及答案
- 2025年综合水电气考试题及答案
- 2025 三年级语文上册人教版实心主题写作细节描写课件
- 2025年公益岗位考试试卷及答案
- DB1306T 280-2025 红岗山桃生产技术规程
- 成都七中万达学校高一上化学半期考试试卷
- 2025医疗机构志愿者服务体系管理与社会责任履行报告
- 学堂在线 研究生学术与职业素养讲座 章节测试答案
- 磁生电说课稿公开课一等奖市赛课获奖课件
- 新初中七年级-上册语文课外阅读理解训练及答案
- 2023北京市第一次高中学业水平合格性考试数学试卷真题(含答案详解)
- 完整word版眼科高级职称答辩题及参考答案
- GB/T 9116-2010带颈平焊钢制管法兰
- 应急预案与演练培训课件
- DG-TJ 08-2362-2021 综合杆设施技术标准
- 英国FBA超重标签
评论
0/150
提交评论