ImageVerifierCode 换一换
格式:DOC , 页数:27 ,大小:388.50KB ,
资源ID:4541045      下载积分:5 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4541045.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(JAVA拼图游戏论文.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

JAVA拼图游戏论文.doc

1、 四川师范大学成都学院课程设计报告 四川师范大学成都学院高级语言程序课程设计 基于JAVA的拼图软件的设计 学生姓名 彭长龙 学 号 2011101046 所在学院 通信工程学院 专业名称 通信工程 班 级 2011级1班 指导教师 王 敏 成 绩 四川师范大学成都学院 二○一三年五月 四川师范大学成都学院课程设计报告

2、 课程设计任务书 学生姓名 彭长龙 学生学号 2011101046 学生专业 通信工程 学生班级 2011级1班 指导教师 王 敏 职 称 助 教 发题日期 2013年03月15日 完成日期 2013年06月10日 设计题目 基于JAVA的拼图软件的设计 设计目的: (1)通过课程设计,学会使用java系统,包括对程序的调试、运行、保存等知识的运用。 (2)通过课程设计,开发一个小游戏,并掌握研发全程。 (3)通过课程设计,培养发现问题、分析问题、解决问题的能力。 具体任务及要求: 设计任务: ①任务:设计一个简单的拼图游戏 功能

3、要求:能够实现基本的拼图功能,以及退出,记录数据等功能;界面简洁。 ②设计任务要完成设计、编码、测试等过程,给出设计思路、设计说明书、主要的代码的说明、使用说明书。源代码以及可运行的拼图程序。 具体要求: ① 设计任务与要求 ② 总体方案与说明 ③ 面向对象的设计(主要类的设计) ④ 源程序清单与注释 ⑤小结与体会。 课程设计进度安排: 序号 内容安排 时间 1 选定课程设计题目 03.15-3.20 2 构思程序结构 03.21-04.20 3 编写并调试运行程序 04.21-05.10 4 写课程设计论文 05.11-05.25 5 修改

4、并提交 05.25-06.10 课程设计参考文献: [1]唐大仕:Java程序设计[M],北方交通大学出版社,2007.05:P56-P62 [2]郑莉:Java语言程序设计[M],清华大学出版社,2007.01:P67-P75 [3]朱站立:Java程序设计实用教程[M],电子工业出版社,2006.10:P58-P70 [4]耿祥义:java2实用教程[M],清华大学出版社,2007.3:P81-P92 指导教 师签字 院长审核签字 I 基于JAVA的拼图软件的设计 内容摘要: 拼图游戏是一款非常经典的小游戏,因为它比较简单有趣,老

5、少皆宜。拼图游戏的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 关键词:拼图游戏  Java语言  开发

6、The design of JAVA software based on the puzzle Abstract: Jigsaw puzzle is a very classic game, because it is easy and fun, both old and young, are more suitable. Jigsaw design language for each Java language designers to improve and advance is an excellent exercise opportunities. Puzzle design i

7、s more complex, its scope, and involves many more, if you do not think and design, would be difficult to successfully developed this game. In the design of the game involves display of the graphical interface and updating, data is collected and updated, and in the development of this game, class inh

8、eritance mechanism, and some design patterns you want to apply. Therefore, how to design and develop this jigsaw puzzle, for raising the level of Java development, and system design capabilities are of great help. During the process of design and development, you need to handle the inheritance relat

9、ionships between the classes, also have to deal with each type of appropriate packaging, and also to coordinate the various logical dependencies between modules and data communication. Keywords:Jigsaw puzzle  Java language  develop III 目 录 前 言 4 1、开发工具介绍 4 2、需求分析 4 2.1开发环境与配置 4 2.2功能

10、要求 5 2.3系统主要功能和主要功能描述 5 2.4 关键技术 8 3、详细设计 9 3.1 核心功能代码实现技术 9 3.2 程序的流程图 10 3.3 程序运行效果图 11 4、课程设计总结 13 附录源代码 14 参考文献 25 基于JAVA的拼图软件的设计 前 言 拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。拼图的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。 拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游

11、戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。 1 开发工具介绍 Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Ecli

12、pse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。 2 需求分析 2.1开发环境与配置 下载jdk1.6.0_16软件包,双击图标安装好JDK,将JDK安装后的bin目录路径复制下来,配置系统我环境变量。 2.2功能要求 l 实现图片的切割及随机分

13、布。 l 实现拼图游戏的拼图功能。 l 在菜单栏里添加开始游戏、退出游戏、图片选择、难度选择的功能。 2.3系统主要功能和主要功能描述 功能1:图片的放置 新建工程PinTu,要求在工程中创建一个窗体类PinTu和类Play,在窗体类中编写图片放置方法septic,该功能属于基本功能,供其他方法所调用,为实现拼图游戏的图片选择、难度设置、开始游戏等功能作准备。 在septic方法中主要实现的功能是将图片切割成m行n列,并存放在pic数组中;定义数组按扭btn[][],并且判断控件里是否为空,如果为空则分配m+1行n列的控件空间;如果存在则不分配空间这样有助于拼图游戏控件多少以及大

14、小的改变。将pic中存放的图片通过for循环放置在btn控件中。 图片放置方法的代码如下: public void setpic() //图片放置 { isover.setText("拼图状态:未开始"); step=0; lstep.setText("拼图步数:"+step+"步"); w=280/m; h=290/n; Image[] a=splitImage(perimage1,1,1,100,100); perimagea=new ImageIcon(a[0]); if(pregtn1==null)

15、pregtn1=new JButton(perimagea); else pregtn1.setIcon(perimagea); pregtn1.setBounds(200,5,100,100); this.add(pregtn1); pic=new ImageIcon[m*n]; //分配空间大小 if(btn==null) //如果为空就不重新分配控件 btn=new JButton[m+1][n]; //分配控件空间 p=n

16、ew Rectangle[m+1][n]; //坐标 Image[] t=splitImage(perimage1,m,n,w,h); for(int i=0;i<(m+1)*n;i++) { int x=i/n,y=i%n; //下标转换 if(btn[x][y]==null) btn[x][y]=new JButton(); btn[x][y].setBounds(y*w+5,x*h+40,w,h); //设置数组按扭的位置

17、 if(m==5) btn[x][y].setBounds(y*w+5,x*h+60,w,h); btn[x][y].addActionListener(this); //添加事件 this.add(btn[x][y]); //在窗体上加入这些按扭 } for (int i=1;i

18、ible(false); } int temp[]=ran(m*n); //随机数组 for (int i=0;i

19、Background(Color.blue); //设置背景颜色 btn[0][0].setIcon(null); //设为空 this.repaint(); //刷新 } 功能2:开始游戏 在菜单中添加菜单选项开始游戏,通过对该菜单选项进行动作事件的监听,实现ActionListener接口,调用setpic方法,实现图片重新放置,游戏重新开始。 功能3:图片选择 通过FileDialog df=new FileDialog (this,”图片选择

20、 FileDialog.LOAD);这个语句实现图片选择窗口,进行图片选择,将图片的控件设为空,然后再调用setpic图片放置方法将控件上的图片进行刷新。 图片选择功能实现的代码如下: if(e.getSource()==item3) { FileDialog df=new FileDialog(this,"图片选择”,FileDialog.LOAD); df.setVisible(true); perimage1=df.getDirectory()+df.getFile(); if(df.getFile()==null)

21、 return; for(int j=0;j<(m+1)*n;j++) { int x1=j/n,y1=j%n; btn[x1][y1].removeActionListener(this); } setpic(); return; } 功能4:难度设置 在窗体上添加菜单栏menubar,然后在菜单栏上添加操作、设置、关于的菜单,在设置菜单中添加难度设置的菜单选项。 设置三个难度,难度一3*3为简单,难度二4*4为一般,难度三5*5为偏难。在三个难度中添加动作监听事件nandu1.addAc

22、tionListener(this);nandu2.addActionListener(this); nandu3. addAction Listener(this)。 在接口方法重写中实现难度设置功能,以难度2为例,代码如下: if(e.getSource()==nandu2) { nandu1.setSelected(false); nandu2.setSelected(true); nandu3.setSelected(false); for(int i=0;i<(m+1)*n;i++) { int x=i/n,y=i%n; t

23、his.remove(btn[x][y]); } m=n=4; btn=null; setpic(); return; } 功能5:键盘事件的响应 在窗体类上用implement实现KeyListener接口,重写接口所有方法,在接口的KeyPressed添加控件上、下、左、右移动的方法。通过if语句判断键盘键盘事件,如果按下左键,则是用if(y>0&&btn[x][y].isVisible()&&btn[x][y].getIcon()==null)语句判断控件,如果为真,则进行向左移动。,每进行一次移动都要进行判断是否拼图完整。 2

24、4 关键技术 l 继承JFrame实现窗体的设置。 l 实现ActionLiatener的接口从而实现动作事件的监听。 l 通过对btn控件添加监听事件来实现拼图游戏中的控件上下移动。 3 详细设计 3.1 核心功能代码实现技术 实现拼图游戏窗体的显示,代码如下: public void init() { this.setTitle("拼图游戏"); //菜单显示 this.setLayout(null); this.setBounds(400,50,300,480); isover.setBounds(80,10,

25、120,20); lstep.setBounds(100,50,100,20); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setJMenuBar(menubar); this.add(isover); this.add(lstep); menubar.add(menu1); //添加菜单 menubar.add(menu2); menubar.add(menu3); menu1.add(item1); menu1.add(item2);

26、menu2.add(item3); menu2.add(item4); menu3.add(item5); item4.add(nandu1); item4.add(nandu2); item4.add(nandu3); nandu1.setSelected(true); //设置单选菜单默认值 this.setVisible(true); item2.addActionListener(this); //注册监听事件 item3.addActionListener(this); item4.a

27、ddActionListener(this); nandu1.addActionListener(this); nandu2.addActionListener(this); nandu3.addActionListener(this); item1.addActionListener(this); setpic(); } 3.2 程序的流程图 如下图3.2-1为本次设计的程序流程图: 游戏结束 窗体显示 图片放置 动作事件的监听 事件响应 是 否 开始游戏 拼图完整 图3.2-

28、1 程序流程图 3.3 程序运行效果图 如图3.3-1图3.3-2为不同难度设置的效果图: 图3.3-1 3*3的简单难度的效果图 图3.3-2 4*4的一般难度的效果图 如图3.3-3为实现图片选择功能的效果图,如图3.3-4为正在进行拼图游戏的效果图: 图3.3-3 图片选择后的效果图 图3.3-4 正在游戏效果图 4 课程设计总结 经过这段时间的学习我收获不小,总结起来有如下几点: 1.更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。对于这种面向对象的编程思想,使刚入门的人很快

29、就能写出自己的程序。 2.锻炼了自己的动手和自学能力,在编程中有许多类和方法在课本中没有学到和提及到。都是通过自己查帮助文档,或通过网络进行学习和了解到的。和别人在一起交流是一件很快了的事。 3.体会到写程序最重要的是程序思想,而不是单纯的写代码。如何解决类之间的关联和继承关系,如何组织类是很关键的。此外对于接口和变量的私有还是公有,以及参数传递等方面也收获不小。 22 附录源代码 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

30、 import java.util.Random; import javax.swing.*; public class Games extends JFrame implements ActionListener { private JButton buttons[][];// 存储按键的数组 private Container container;// 一个容器 private GridLayout layout;// 布局方式为GridLayout private int count = 0, is[] = new int[8];// count的作用是计算按键移动的次数

31、is[]储存一个随机产生的1到8数字数组 public Games() { super("拼图游戏");// 设置标题 layout = new GridLayout(3, 3);// 3行3列 container = getContentPane();// 该容器的布局方式,及其重要,否则产生空引用异常 container.setLayout(layout);// 将该布局方式作用于容器 buttons = new JButton[3][3];// 给按键数组分配储存空间 int locate1, locate2;// locate1用

32、来指示当前产生的元素 locate2用来指示locate1之前的元素 for (locate1 = 0; locate1 < 8; locate1++) {// 该方法作用是产生1到8这8个数,随机分配给数组,即无序排列 int g = new Random().nextInt(8) + 1;// 随机产生一个空白按键,即不显示的那个 is[locate1] = g; for (locate2 = locate1 - 1; 0 <= locate2; locate2--) { if (is[locate1] == is[locate2])

33、 break; } if (locate2 != -1) locate1--; } int temp = 0; int r = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的行 int l = new Random().nextInt(3);// 随机产生一个0到3的数,代表空白按键的列 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (r == i && l == j) {

34、// 空白按键设置为9,不显示 buttons[i][j] = new JButton("9"); container.add(buttons[i][j]); buttons[i][j].setVisible(false); } else { buttons[i][j] = new JButton("" + is[temp++]);// 将数组数组的值作为显示的8个按键的名字 container.add(buttons[i][j]); } buttons[i][j].addActi

35、onListener(this);// 注册监听事件 } } setSize(300, 300);// 设置显示容器区域大小 setVisible(true); } public void actionPerformed(ActionEvent event) { // 事件处理,由于计算量小该处将所有按键单独分析 JButton b = (JButton) event.getSource(); if (b == buttons[0][0]) { if (buttons[0][1].getText().equals("9"))

36、 { buttons[0][1].setText("" + buttons[0][0].getText()); buttons[0][1].setVisible(true); buttons[0][0].setText("9"); buttons[0][0].setVisible(false); count++; } else if (buttons[1][0].getText().equals("9")) { buttons[1][0].setText("" + buttons[0][0].getText(

37、)); buttons[1][0].setVisible(true); buttons[0][0].setText("9"); buttons[0][0].setVisible(false); count++; } } else if (b == buttons[0][1]) { if (buttons[0][0].getText().equals("9")) { buttons[0][0].setText("" + buttons[0][1].getText()); buttons[0][0]

38、setVisible(true); buttons[0][1].setText("9"); buttons[0][1].setVisible(false); count++; } else if (buttons[0][2].getText().equals("9")) { buttons[0][2].setText("" + buttons[0][1].getText()); buttons[0][2].setVisible(true); buttons[0][1].setText("9"); b

39、uttons[0][1].setVisible(false); count++; } else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[0][1].getText()); buttons[1][1].setVisible(true); buttons[0][1].setText("9"); buttons[0][1].setVisible(false); count++; } }

40、 else if (b == buttons[0][2]) { if (buttons[0][1].getText().equals("9")) { buttons[0][1].setText("" + buttons[0][2].getText()); buttons[0][1].setVisible(true); buttons[0][2].setText("9"); buttons[0][2].setVisible(false); count++; } else if (buttons[1][2].getTex

41、t().equals("9")) { buttons[1][2].setText("" + buttons[0][2].getText()); buttons[1][2].setVisible(true); buttons[0][2].setText("9"); buttons[0][2].setVisible(false); count++; } } else if (b == buttons[1][0]) { if (buttons[0][0].getText().equals("9")) {

42、 buttons[0][0].setText("" + buttons[1][0].getText()); buttons[0][0].setVisible(true); buttons[1][0].setText("9"); buttons[1][0].setVisible(false); count++; } else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[1][0].getText());

43、 buttons[1][1].setVisible(true); buttons[1][0].setText("9"); buttons[1][0].setVisible(false); count++; } else if (buttons[2][0].getText().equals("9")) { buttons[2][0].setText("" + buttons[1][0].getText()); buttons[2][0].setVisible(true); buttons[1][0].set

44、Text("9"); buttons[1][0].setVisible(false); count++; } } else if (b == buttons[1][1]) { if (buttons[0][1].getText().equals("9")) { buttons[0][1].setText("" + buttons[1][1].getText()); buttons[0][1].setVisible(true); buttons[1][1].setText("9"); butt

45、ons[1][1].setVisible(false); count++; } else if (buttons[1][0].getText().equals("9")) { buttons[1][0].setText("" + buttons[1][1].getText()); buttons[1][0].setVisible(true); buttons[1][1].setText("9"); buttons[1][1].setVisible(false); count++; } else if (bu

46、ttons[1][2].getText().equals("9")) { buttons[1][2].setText("" + buttons[1][1].getText()); buttons[1][2].setVisible(true); buttons[1][1].setText("9"); buttons[1][1].setVisible(false); count++; } else if (buttons[2][1].getText().equals("9")) { buttons[2][1].s

47、etText("" + buttons[1][1].getText()); buttons[2][1].setVisible(true); buttons[1][1].setText("9"); buttons[1][1].setVisible(false); count++; } } else if (b == buttons[1][2]) { if (buttons[0][2].getText().equals("9")) { buttons[0][2].setText("" + buttons[1

48、][2].getText()); buttons[0][2].setVisible(true); buttons[1][2].setText("9"); buttons[1][2].setVisible(false); count++; } else if (buttons[2][2].getText().equals("9")) { buttons[2][2].setText("" + buttons[1][2].getText()); buttons[2][2].setVisible(true);

49、 buttons[1][2].setText("9"); buttons[1][2].setVisible(false); count++; } else if (buttons[1][1].getText().equals("9")) { buttons[1][1].setText("" + buttons[1][2].getText()); buttons[1][1].setVisible(true); buttons[1][2].setText("9"); buttons[1][2].setVisible(

50、false); count++; } } else if (b == buttons[2][0]) { if (buttons[1][0].getText().equals("9")) { buttons[1][0].setText("" + buttons[2][0].getText()); buttons[1][0].setVisible(true); buttons[2][0].setText("9"); buttons[2][0].setVisible(false); count++

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服