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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

魔板游戏Java课程设计报告.docx

1、魔板游戏Java课程设计报告1设计目的 本次课程设计是通过Java语言编制一个魔板游戏,它是一款经典的智力游戏。而Java语言是当今较为流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。这次课程设计,还有利于加深对Java课程的进一步了解,也可以巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法。利用所学高级语言的语法特性,结合数据结构算法、网络知识、文件处理和数

2、据库等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。2总体设计在设计魔板游戏时,要编写7个Java源文件:PuzzleGame.java、PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccess.java和HandleMove.java。魔板游戏除了需要编写的上述7个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuItem、JButton和JRadioButton等类。魔板游戏所用到的一些重要的类以及之间的组合关系如图1所示。图2-1程序模块3 关键技术3.1 系

3、统的功能模块划分在设计魔板游戏时,需要编写3个java源文件:PuzzleFrame.java、PuzzlePad.java、SquarePoint.java。魔板游戏除了需要编写的上述3个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuItem、JButton和JRadioButton等类。3.1.1 PuzzleFrame.java类模块PuzzleFrame类负责创建魔板游戏的主窗口,该类含有main方法,程序从该类开始。PuzzleFrame类的成员变量中有4种重要类型的对象:PuzzlePad、JmenuItem、JRadioButton和JButton

4、。PuzzleFrame类的主要成员的作用将在后面的详细设计中阐述,PuzzleFrame类主要成员变量(属性)和主要方法如表3-1、3-2所示。成员变量描述变量类型名称魔板开始游戏的按钮选择玩法PuzzlePadJbuttonJradioButtonPuzzlePad开始数字玩法,图像玩法表3-1 PuzzleFrame.java主要成员变量(属性)名称功能备注PuzzleFrameactionPerformedmain创建程序主窗口处理ActionEvent事件程序开始运行的方法构造方法接口方法表3-2 PuzzleFrame.java主要方法3.1.2 PuzzlePad.java类模块

5、PuzzlePad类创建的对象是PuzzleFrame类最重要的成员之一,代表“魔板”。该类的成员变量中有5种重要类型的对象:Point、Block和Image。PuzzlePad类类主要成员变量(属性)和主要方法如表3-3、3-4所示。描述变量类型名称魔板中的行数和列数魔板中方块的宽和高魔板中二维点数组魔板中而为方块数组模板可能用到的图像intintSquarePointJButtonImagerows,columswidth,heightpointblockimage表3-3 PuzzlePad.java主要成员变量(属性)名称功能备注PuzzlePad随机排列数字随机排列图像paintC

6、omponentactionPerformed创建魔板对象随机排列魔板中方块上的数字随机排列魔板中方块上的图像绘制图像处理ActionEvent事件构造方法接口方法表3-4 PuzzlePad.java主要方法3.1.3 SquarePoint.java类模块SquarePoint类负责创建确定位置的对象,使用Point对象可以确定Block对象在PuzzlePad对象中的位置,即确定“方块”在“魔板”中的位置。SquarePoint.java类主要成员变量(属性)和主要方法如表3-5、3-6所示。描述变量类型名称判断点上是否有方块点上的方块对象booleanJButton有方块block表3

7、-5 SquarePoint.java主要成员变量(属性)名称功能备注SquarePointget有方块set有方块setBlockgetBlock创建“点”对象判断点上是否有方块设置点上是否有方块在点上放置方块获取点上的方块构造方法表3-6 SquarePoint.java主要方法4程序流程根据对模板游戏的功能分析,设计得到魔板游戏总流程,如图4-1所示:图4-1 系统流程图流程解释:程序分为两种玩法,数字玩法和图片玩法,又分为初级和高级两种模式,进入游戏选择游戏难度,后选择玩法,数字或图片玩法,系统将各切片顺序打乱,移动切片,判断顺序是否正确,正确游戏结束,不正确继续移动,程序结束。5主要

8、源代码5.1PuzzleFrame模块源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;public class PuzzleFrame extends JFrame implements ActionListener PuzzlePad puzzlePad; JButton 开始; JMenuBar bar; JMenu fileMenu; JMenuItem 初级,高级; JRadioButton 数字玩法,图像玩法; ButtonGroup group=null; Container con=null; p

9、ublic PuzzleFrame() bar=new JMenuBar(); fileMenu=new JMenu(魔板游戏); 初级=new JMenuItem(初级); 高级=new JMenuItem(高级); fileMenu.add(初级); fileMenu.add(高级); bar.add(fileMenu); setJMenuBar(bar); 初级.addActionListener(this); 高级.addActionListener(this); 开始=new JButton(开始玩); 开始.addActionListener(this); group=new Bu

10、ttonGroup(); 数字玩法=new JRadioButton(数字玩法,true); 图像玩法=new JRadioButton(图像玩法,false); group.add(数字玩法); group.add(图像玩法); puzzlePad=new PuzzlePad(3,3,50,50); con=getContentPane(); con.add(puzzlePad,BorderLayout.CENTER); JPanel pNorth=new JPanel(); pNorth.add(数字玩法); pNorth.add(图像玩法); pNorth.add(开始); con.ad

11、d(pNorth,BorderLayout.NORTH); con.validate(); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,440,360); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=开始) if(数字玩法.isSelected() puzzlePad.随机排列

12、数字(); else if(图像玩法.isSelected() puzzlePad.随机排列图像(); else if(e.getSource()=初级) con.remove(puzzlePad); puzzlePad=new PuzzlePad(3,3,50,50); con.add(puzzlePad,BorderLayout.CENTER); con.validate(); this.validate(); else if(e.getSource()=高级) con.remove(puzzlePad); puzzlePad=new PuzzlePad(4,4,50,50); con.a

13、dd(puzzlePad,BorderLayout.CENTER); con.validate(); this.validate(); public static void main(String args) new PuzzleFrame(); 5.2 PuzzlePad模块源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.Vector;import java.awt.image.*;public class Puzzle

14、Pad extends JPanel implements ActionListener int rows ,colums; int width,height; SquarePoint point; JButton block; Vector vector; int leftX=50,leftY=50; Image image=null; Toolkit tool=null; MediaTracker mt; int 图像的宽,图像的高; Image blockImage; boolean 画图像=true; public PuzzlePad(int r,int c,int w,int h)

15、setLayout(null); vector=new Vector(); rows=r; colums=c; width=w; height=h; tool=getToolkit(); try image=tool.createImage(dog.jpg); mt.addImage(image,1); mt.waitForAll(); catch(Exception e) block=new JButtonrowscolums; point=new SquarePointrowscolums; for(int i=0;irows;i+) for(int j=0;jcolums;j+) if(

16、i=rows-1)&(j=colums-1) else blockij=new JButton(); blockij.setSize(width,height); blockij.addActionListener(this); vector.add(blockij); for(int i=0;irows;i+) for(int j=0;jcolums;j+) pointij=new SquarePoint(50+j*width,50+i*height); if(i=rows-1)&(j=colums-1) else pointij.setBlock(blockij,this); public

17、 void actionPerformed(ActionEvent e) JButton button=(JButton)e.getSource(); int x=button.getBounds().x; int y=button.getBounds().y; int m=0,n=0; for(int i=0;irows;i+) for(int j=0;jcolums;j+) if(pointij.getX()=x&pointij.getY()=y) m=i; n=j; int 上=Math.max(0,m-1); int 下=Math.min(rows-1,m+1); int 左=Math

18、.max(0,n-1); int 右=Math.min(colums-1,n+1); if(point上n.get有方块()=false) point上n.setBlock(button,this); pointmn.set有方块(false); else if(point下n.get有方块()=false) point下n.setBlock(button,this); pointmn.set有方块(false); else if(pointm左.get有方块()=false) pointm左.setBlock(button,this); pointmn.set有方块(false); else

19、 if(pointm右.get有方块()=false) pointm右.setBlock(button,this); pointmn.set有方块(false); public void 随机排列数字() vector.removeAllElements(); for(int i=0;irows;i+) for(int j=0;j0) int n=(int)(Math.random()*vector.size(); JButton b=(JButton)vector.elementAt(n); b.setText(+i); b.setIcon(null); b.setBorder(Border

20、Factory.createLineBorder(Color.blue,1); vector.remove(n); i+; 画图像=false; repaint(); public void 随机排列图像() try 图像的宽=image.getWidth(this); 图像的高=image.getHeight(this); int w=图像的宽/colums; int h=图像的高/rows; blockImage=new Imagerows*colums; int k=0; PixelGrabber pg=null; ImageProducer ip=null; for(int i=0;i

21、rows;i+) for(int j=0;jcolums;j+) int pixels= new intw*h; pg=new PixelGrabber(image,j*w,i*h,w,h,pixels,0,w); pg.grabPixels(); ip=new MemoryImageSource(w,h,pixels,0,w); blockImagek=tool.createImage(ip); k+; vector.removeAllElements(); for(int i=0;irows;i+) for(int j=0;j0) int n=(int)(Math.random()*vec

22、tor.size(); JButton b=(JButton)vector.elementAt(n); b.setIcon(new ImageIcon(blockImagenum); b.setBorder(null); b.setText(); vector.remove(n); num+; 画图像=true; repaint(); catch(Exception ee) public void paintComponent(Graphics g) super.paintComponent(g); g.setColor(Color.black); g.fillRect(leftX,leftY

23、,colums*width,rows*height); if(画图像=true) g.drawImage(image,colums*width+80,height,colums*width,rows*height,this); for(int i=0;irows;i+) g.setColor(Color.white); g.drawLine(colums*width+80,height+i*height, colums*width+80+colums*width,height+i*height); for(int j=0;jcolums;j+) g.drawLine(colums*width+

24、80+j*width,height, colums*width+80+j*width,height+rows*height); g.setColor(Color.black); g.fillRect(colums*width+80+(colums-1)*width, height+(rows-1)*height, width, height); 5.3 SquarePoint类模块源程序import java.awt.*;import javax.swing.JButton;public class SquarePoint int x,y; boolean 有方块; JButton block

25、=null; Container con=null; public SquarePoint(int x,int y) this.x=x; this.y=y; public boolean get有方块() return 有方块; public void set有方块(boolean boo) 有方块=boo; public int getX() return x; public int getY() return y; public void setBlock(JButton block,Container con) this.con=con; this.block=block; con.ad

26、d(block); block.setLocation(x,y); 有方块=true; con.validate(); public JButton getBlock() return block; 6 运行结果及结论6.1 测试方案游戏难度级别分别设置为数字玩法图片玩法,进行测试。用java解释器运行主类:E:Eclipse(实验)java PuzzleFrame6.2 运行结果图6-1 数字玩法测试结果图6-2 图片玩法测试结果本程序实现的游戏分为初级和高级模式,可以在单机选择级别之后进行选择级别模式。初级的话共分为9格魔板,一个为空,8个魔板上下左右自由移动,直至排列完成;高级的话分为1

27、6格魔板,一个为空,15个魔板上下左右自由移动,直至排列完成。该游戏可分为数字玩法和图像玩法,在单击图像玩法或者数字玩法之后可以进行相应的玩法选择,选择之后单击开始。如果玩家想重新开始,只需要再次单击开始按钮即可。6. 3小结通过这次实验,使我在软件开发方面也累积了不少经验,对java的知识重要性的认识更深了。通过设计过程的锻炼,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对所学知识的理解。 通过课程设计,我学习到不少的JAVA编程语言的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题,甚至错误。这些我会在以后的工作学习和实践中加以改进和提高。 7.参考文献1. Java面向对象的程序设计 董小园 清华大学出版社 参考页数P160-P3172. Java程序设计自学手册 王国辉,李钟尉,王毅 北京:人民邮电出版社 参考页数P288-P3313. Java语言与面向对象程序设计 刘洋,陈裼祯,李马宏 北京:机械工业出版社 参考页数P67-P1284. Java2从入门到精通 陈国

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2