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

加入VIP,免费下载
 

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

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

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(拼图游戏java课设含可运行程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

拼图游戏java课设含可运行程序.docx

1、拼图游戏java课设含可运行程序拼图游戏_java课设_含可运行程序课程设计说明书 NO.1 拼图游戏 1. 课程设计的目的 本次课程设计的主要目的是设计一个拼图游戏。在这个拼图游戏中有自由选择图片的功能,可以根据自己的兴趣选择喜欢的图片进行游戏,为了减小难度,在游戏中加入了数字提示功能,在游戏界面中,左半部分是游戏区域,右半部分则是原图预览部分,游戏开始时,系统会随机分配一块缺失,并将图片顺序打乱,用户可以根据原始图片进行移动复原过程。在游戏中会进行步数和时间的统计,以供玩家进行对比,本游戏完全通过鼠标来操作,简单上手。 2.设计方案论证 2.1 设计思路 2.1.1功能描述 本次课程设计主

2、要是用Java语言编写程序实现一个拼图游戏。该拼图游戏系统共包括3个java源文件和一个图片文件夹。这是个功能比较齐全的拼图游戏,实现的是将图片分解,取出最右下角的图片,然后将剩余图片随即打乱,最关键的不用自己手动切割图片,再进行加载。而是应用类方法自动进行图片的加载,方便了用户的使用。该拼图游戏结合了许多元素,可以图片切割,同时还有游戏时间和步数的记录。在拼图时首先把图片添加到文件夹“09.12.27 java编程”的目录下,程序会自动获取该目录下的所有图片文件,并加载到游戏中,进行切割后,显示在拼图按钮上。拼图结束时可以显示游戏成绩和记录的存档。 2.1.2开发环境 本次设计的开发运行环境

3、是:JCreater 2.2设计方法 在设计拼图游戏时,需要编写3个Java源文件:MyMainFrame.java、MyCanvas.java、Cell.java。 2.2.1 MyMainFrame.java主类 该类创建拼图游戏的主窗口,该类含有main方法,是程序的入口,该类是JFrame类的子类,定义了各个组件的动作并为窗口设置图标,MyMainFrame类的成员变量中有8种重要的变量及方法,choicePicL、picName、jcbo1、name、stepInfor、timeInfor、situation、panel1。 沈 阳 大 学 课程设计说明书 NO.2 2.2.2 My

4、Canvas.java 该类是JPanel类的子类,实现了初始化游戏界面,创建并添加组件,盛放游戏信息的面板内容,声明6个静态方法,serialVersionUID、hasAddActionListener、Cell、cellNull、pictureID、stepNum。 2.2.3 Cell.java 该类是JButton类的子类,加载打乱的图块进行初始化游戏,负责图快的移动。 在本程序中各个类的关系如图1所示。 MyMainFrame Cell MyCanvas 图1 功能模块图 2.3程序流程图 开始 初始化游戏界面 选择图片 加载图片 移动图片 N 拼图正确, Y 结束 图2 程序流程

5、图 沈 阳 大 学 课程设计说明书 NO.3 2.4类、方法、属性说明 2.4.1 MyMainFrame类 (1) 成员变量 表1 MyMainFrame成员变量表 序号 名称 变量类型 功能 1 JLabel choicePicL 确定选择的图片 2 String picName 确定选择的图片 3 JComboBox jcbo1 确定选择的图片 4 JTextField name 图片名称 5 JTextField stepInfor 玩家已走步数 6 JTextField timeInfor 时间 7 JTextField situation 图片载入 8 JRadioButton s

6、tart 开始按钮 9 JRadioButton addPicNum 数字提示 10 JRadioButton clearPicNum 清除提示 (2) 方法 表2 MyMainFrame方法表 序号 名称 功能 备注 MyMainFrame() 1 完成窗口的初始化 构造方法 actionPerformed(ActionEvent e )2 游戏完成图 接口方法 itemStateChanged(ItemEvent arg0 )3 下拉列表项 接口方法 paintComponent(Graphics g) 4 重绘容器组件里的所有组件 接口方法 mouseClicked(MouseEvent

7、 arg0 )5 单击鼠标发生事件 接口方法 mouseEntered(MouseEvent arg0 )6 鼠标进入指定区域发生事件 接口方法 ouseExited(MouseEvent arg0) 7 鼠标离开指定区域发生事件 接口方法 mousePressed(MouseEvent arg0 )8 按下鼠标时发生事件 接口方法 mouseReleased(MouseEvent arg0 )9 松开鼠标时发生事件 接口方法 10 Main() 程序运行的人口方法 入口方法 沈 阳 大 学 课程设计说明书 NO.4 2.4.2 MyCanvas.java类 (1)成员变量 表3 MyCanv

8、as成员变量表 序号 名称 变量类型 备注 1 pictureID int 当前选择图片代号 2 stepNum Int 游戏已走步数 (3) 方法 表4 MyCanvas方法表 序号 名称 功能 备注 1 reLoadPictrue1() 重新加载图片 除去数字提示 2 reLoadPictrue2() 重新加载图片 除去数字提示 3 isFinish() 检查拼图 判断是否拼成 4 Start() 重新排列对方格 且将顺序打乱 5 mouseClicked(MouseEvent arg0 )单击鼠标发生事件 接口方法 6 mouseEntered(MouseEvent arg0 )鼠标进入

9、指定区域发生事件 接口方法 7 mouseExited(MouseEvent arg0) 鼠标离开指定区域发生事件 接口方法 8 mousePressed(MouseEvent arg0 )按下鼠标时发生事件 接口方法 9 mouseReleased(MouseEvent arg 0松开鼠标时发生事件 接口方法 2.4.3 Cell.java类 (1)成员变量 表5 Cell方法表 序号 名称 变量类型 备注 1 serialVersionUID final 值是1L 沈 阳 大 学 课程设计说明书 NO.5 (2)方法 表6 Cell方法表 序号 名称 功能 1 Cell(Icon icon

10、) 规定拼图小块大小 2 Cell(String n,Icon icon ) 实际为ICON 3 move(String direction,int sleep )实现拼图小块的移动 3设计结果与分析 将3个Java源文件:MyMainFrame.java、MyCanvas.java、Cell.java,以及所需要的名为imaage的文件夹的图像文件保存到E盘下的同一目录“09.12.27 java编程”文件夹中。分别编译这3个Java源文件,或运行“javac *.java”命令,编译全部的源文件,然后运行主类,即运行MyMainFrame.java类。 通过运行结果图可以看到在界面上方有一

11、个按钮区,其中有数字提示,对于初玩者可以单击一下图块上就会出现数字提示,想去掉提示单击清除提示即可,image是个下拉框,根据自己的兴趣爱好选择自己喜欢的拼图进行游戏,单击start开始游戏。 在界面下方有一行游戏状态栏,显示了图片名称,步数,时间,以及状态,运行结果图3所示。 图3 游戏初始界面 沈 阳 大 学 课程设计说明书 NO.6 单击start按钮开始游戏,界面自动加载并切割图片,玩家此时就可以通过鼠标来完成游戏了,单击空白区域旁边的图快就会移动,移动方向是向着空缺块移动,也就是说孔雀块四周都是可移动的块,而不是紧邻空缺块的图快则不能移动,结果如图4所示。 图4 开始后的界面 沈 阳

12、 大 学 课程设计说明书 NO.7 当玩家想有提示信息时可单击数字提示,单击后会在图块上出现带有顺序的数字,玩家可以通过数字更加容易的完成拼图游戏,如图5所示。 如果不想显示数字提示则可单击清除提示,结果则如同上图4所示。 图5 数字提示界面图 在游戏中,玩家每移动一块图快,状态栏中的步数就会自动加1,并在游戏状态中显示出来,游戏完成时会弹出一个对话框,提示玩家完成拼图游戏并显示所用步数,完成游戏结果图如图6所示。 图6 完成游戏对话框 沈 阳 大 学 课程设计说明书 NO.8 玩家若想换一个图片进行游戏,则可通过image下拉框实现,玩家可以根据自己的兴趣爱好进行选择,如图7所示 图7 im

13、age下拉框 例如可以选择下拉框中的唯美,运行界面则如图8所示 图8 唯美拼图界面 沈 阳 大 学 课程设计说明书 NO.9 4.设计体会 通过一周的JAVA课程设计,是我对JAVA语言有个更深的一层理解,这一学期的学习只是为我们引导了一个学习的方向,更深入的知识还需要我们自己去学习,而本次课程设计才让我体会到学习JAVA语言的困难和解决困难后的乐趣,开始对课程设计毫无头绪,题目不知道定什么,本人对游戏比较感兴趣,最后在坦克大战、俄罗斯方块、象棋和拼图游戏中选择了拼图游戏,个人觉得拼图游戏比较新颖,而且可以上传好看的图片,在枯燥的编程过程中增加了趣味性,使编程不再那么乏味,在本次拼图游戏中,我

14、设计了数字提示功能,提高了游戏的友好性。 在程序运行时我遇到了相当大的困难,由于是三个源文件,还有一个image的文件夹,最初忘记应该把文件夹放在E盘下而费了好大周折,改正后,又忘记image文件夹应该放到源文件上级目录中,又折腾很久,最后在询问同学后终于解决了这个问题,成功运行出来了,当时心中的喜悦没人能够理解,总之课程设计在设计完成以后才会体验到快乐,并且锻炼了自己的动手和自学能力。 5.参考文献 1陈国君,陈磊,刘洋(Java2程序设计基础M(北京:清华大学出版社,2007.11:221-286 2朱站立,沈伟. Java程序设计实用教程M. 北京:电子工业出版社,2006.10:134

15、-187 3 朱福喜,尹为民,余振坤等. Java语言与面向对象程序设计M.武汉: 武汉大学出版社,2006.1:97-128 4张思民,梁维娜(Java程序设计实践教程M(北京:清华大学出版社,2006.8:24-68 沈 阳 大 学 课程设计说明书 NO.10 6.附录 (1)/ MyMainFrame类 import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.GridLayout; import ja

16、va.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import java

17、x.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; import javax.swing.border.TitledBorder; public class MyMainFrame extends JFrame implements MouseListener /*

18、* */ private static final long serialVersionUID = 1L; public static MyCanvas myCanvas; /选择图片复选框 private JLabel choicePicL = new JLabel( Image : ); private String picName = 鲜橙 ,小企鹅,小猫,天使,SARA EVANS,唯一,唯美,小女孩儿,海报,雪人儿,倾听,范冰冰; private JComboBox jcbo1 = new JComboBox (picName); JButton start; /盛放游戏信息的面板内

19、容 ,(Frame south) private JTextField name = new JTextField(图片名称:picture1); public static JTextField stepInfor = new JTextField (步数:0 ); private JTextField timeInfor = new JTextField(时间:00:00:00); private JTextField situation = new JTextField(状态:图片已载入 ); /数字提示单选按钮 沈 阳 大 学 课程设计说明书 NO.11 public JRadioBu

20、tton addPicNum; public JRadioButton clearPicNum; public MyMainFrame() myCanvas=new MyCanvas(); this.setTitle(09.12.31 大拼图1 ); this.setLocation(300,200); this.setSize(1000,770); this.setResizable(false); this.setDefaultCloseOperation(3); /放置按钮面板 (Frame north) JPanel panel1 = new JPanel(); FlowLayout

21、flowLayout = new FlowLayout (); flowLayout.setAlignment(FlowLayout.LEFT); panel1.setLayout(flowLayout); start = new JButton( start); addPicNum = new JRadioButton(数字提示,false); clearPicNum = new JRadioButton(清除提示,true); ButtonGroup addNumGroup = new ButtonGroup(); addNumGroup.add(addPicNum); addNumGro

22、up.add(clearPicNum); panel1.setBackground(Color.pink); start.setBackground(Color.pink); addPicNum.setBackground(Color.pink); clearPicNum.setBackground(Color.pink); panel1.add(addPicNum); panel1.add(clearPicNum); panel1.add(choicePicL); panel1.add(jcbo1); panel1.add(start); panel1.setBorder(new Title

23、dBorder(按钮区); this.setLayout(new BorderLayout(); this.add( panel1 , BorderLayout.NORTH); /盛放游戏信息的面板 (Frame south) JPanel panel2 = new JPanel(); name.setEditable(false); stepInfor.setEditable(false); timeInfor.setEditable(false); situation.setEditable(false); panel2.setLayout(new GridLayout(1,4); pan

24、el2.add(name); panel2.add(stepInfor); panel2.add(timeInfor); panel2.add(situation); 沈 阳 大 学 课程设计说明书 NO.12 /盛放原尺寸预览图面板 final previewPanel2 panel4 = new previewPanel2(); panel2.setBorder(new TitledBorder(游戏状态); myCanvas.setBorder(new TitledBorder(拼图区); panel4.setBorder(new TitledBorder(原图预览); /盛放拼图和pa

25、nel6 的面板 JPanel panel7 = new JPanel(); panel7.setLayout(new GridLayout(1,2); panel7.add(myCanvas,BorderLayout.WEST); panel7.add(panel4,BorderLayout.EAST); this.setLayout(new BorderLayout(); this.add(panel1,BorderLayout.NORTH); this.add(panel7,BorderLayout.CENTER); this.add(panel2,BorderLayout.SOUTH)

26、; this.setVisible(true); start.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub myCanvas.Start(); MyCanvas.stepNum = 0; situation.setText(状态:游戏进行中。); stepInfor.setText(步数:+MyCanvas.stepNum); ); addPicNum.addActionListener(new ActionL

27、istener() public void actionPerformed(ActionEvent e) myCanvas.reLoadPictrue2(); ); clearPicNum.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) myCanvas.reLoadPictrue1(); ); jcbo1.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent arg0) / TODO

28、Auto-generated method stub MyCanvas.pictureID=jcbo1.getSelectedIndex()+1; myCanvas.reLoadPictrue1(); MyCanvas.stepNum = 0; stepInfor.setText(步数:+MyCanvas.stepNum); panel4.repaint(); situation.setText(状态:图片已载入。); 沈 阳 大 学 课程设计说明书 NO.13 name.setText(图片名称:+jcbo1.getSelectedItem(); ); public static void

29、main(String args) / TODO 自动生成方法存根 MyMainFrame pintu = new MyMainFrame(); pintu.setVisible(true); class previewPanel1 extends JPanel /* * */ private static final long serialVersionUID = 1L; public previewPanel1 () protected void paintComponent(Graphics g) super.paintComponents(g); ImageIcon preview =

30、 new ImageIcon(E:/09.12.27 java 编程/image/+MyCanvas.pictureID+.jpg); Image viewer = preview.getImage(); g.drawImage(viewer, 0, 0, 200, 100, this); class previewPanel2 extends JPanel /* * */ private static final long serialVersionUID = 1L; public previewPanel2 () protected void paintComponent(Graphics g) super.paintComponents(g); ImageIcon preview = new ImageIcon(E:/09.12.27 java 编程/imaage/+MyCanvas.pictureID+.jpg); Image viewer = preview.getImage(); g.drawImage(viewer, 20, 20, 450, 600, this); public void mouseClicked(MouseEvent arg0) / TODO Auto-ge

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1