欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    [工学]面向对象java版课程设计报告.doc

    • 资源ID:4531793       资源大小:141KB        全文页数:32页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [工学]面向对象java版课程设计报告.doc

    课程设计课程设计任务书学 院信息学院专 业工程电子信息学生姓名吴才奇班级学号1103030429课程设计题目基于Java的魔板游戏软件设计实践教学要求与任务:采用java技术设计魔板游戏软件,设计要求如下:(1) 魔板由3*3或4*4个格子组成。对于3*3魔板,在前8个格子里随机放置8个编号18的方块,最后一个格子是未放置方块的空格子;对于4*4的魔板,在前15个格子里随机放置15个编号115的方块,最后一个格子是未放置方块的空格子。(2) 用鼠标单击任何与格子水平或垂直相邻的方块就可以把该方块移入空格子,而当前方块移动之前所在的格子成为空格子。通过不断地移动方块可以将方块一行一行地按数顺序排好。(3) 魔板游戏也可以使用图像来代替数字。例如,对于3*3的魔板,将一幅图像分成3*3个小图像,除去最后一幅小图像(图像的右下角),将其余的各幅小图像打乱顺序后放在魔板的方块上,最终目标是通过移动方块回复原始图像(不包括图像的右下角)。(4) 当用户按要求排列好方块后,程序弹出对话框,提示用户成功的消息。(5) 模板游戏分为两个级别,用户可以通过界面上提供的菜单来选择“初级”或“高级”两个级别。对于“初级”级别,魔板由3*3个格子组成;对于“高级”级别,魔板由4*4个格子组成。“模板游戏”提供一幅默认图像,用户可以使用该图像来玩魔板游戏。用户也可以使界面提供的菜单选择一幅新图像,然后使用这个新的图像来玩魔板游戏。 工作计划与进度安排: 第18周:布置课程设计任务,查阅资料,分组设计,程序调试。 第19周:程序调试,编写课程设计报告,验收,答辩。指导教师: 2012年 月 日专业负责人: 2012年 月 日学院教学副院长: 2012年 月 日一、设计目的()二、总体设计三、关键技术()四、程序流程 () 五、主要源代码总体设计在设计魔板游戏时,需要编写7java源文件:、 PuzzlePad.java、Point.java、Block.java、HandleImage.java、VerifySuccess.java和HandleMove.java。魔板游戏除了需要编写的上述7个java源文件所给出的类外,还需要java系提供的一些重要的类,如JMenuItem、JButton、和JRadioButton 等类。魔板游戏所用到的一些重要的类以及之间的组合关系如图所示。1PuzzleGame.java(主类)PuzzleGame.java类负责创建魔板游戏的主窗口,该类含有main方法,程序从该类开始执行。PuzzleGame.java类的成员变量中有4种重要类型的对象:PuzzlePad 、JMenu、JRadioButton和JButton。2.PuzzlePad.java PuzzlePad类创建的对象是PuzzleGame类最重要的成员之一,代表“魔板”。该类的成员变量中雨5种重要类型的对象:Point、Block、HandleMove、HandleImage和Image。3.Block.javaBlock类是JTextField的一个子类,创建的对象是PuzzlePad类的重要成员之一用来表示“魔板”中的“方块”。4.Point.javaPoint类负责创建确定位置的对象,使用Point对象可以确定Block对象在PuzzlePad对象中的位置,即确定“方块”在“魔板”中的位置。5.HandleImage.javaHandleImage类所创建的对象负责将一幅图像分成若干个小图像。6.HandleMove.javaHandleMove类所创建的对象负责处理鼠标事件。7.VerifySuccess.javaVerifySuccess类所创建的对象负责验证用户是否按要求成功排列魔板中的方块。三、关键技术 四、程序流程 制作菜单JMenu制作单选框JRadioButton添加按钮JButton制作魔板PuzzlePadPointBlockHandleMoveImageHandleImageVerifySuccess五、主要源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import javax.swing.filechooser.*;public class PuzzleGame extends JFrame implements ActionListener PuzzlePad puzzlePad; JMenuBar bar; JMenu gradeMenu,choiceImage; JMenuItem oneGrade,twoGrade,newImage,defaultImage; JRadioButton digitPlay,imagePlay; ButtonGroup group=null; JButton startButton; Image image; Toolkit tool; public PuzzleGame() tool=getToolkit(); bar=new JMenuBar(); gradeMenu=new JMenu("选择级别"); choiceImage=new JMenu("选择图像"); oneGrade=new JMenuItem("初级"); twoGrade=new JMenuItem("高级"); newImage=new JMenuItem("选择一幅新图像"); defaultImage=new JMenuItem("使用默认图像"); gradeMenu.add(oneGrade); gradeMenu.add(twoGrade); choiceImage.add(newImage); choiceImage.add(defaultImage); bar.add(gradeMenu); bar.add(choiceImage); setJMenuBar(bar); oneGrade.addActionListener(this); twoGrade.addActionListener(this); newImage.addActionListener(this); defaultImage.addActionListener(this); startButton=new JButton("开始"); startButton.addActionListener(this); group=new ButtonGroup(); digitPlay=new JRadioButton("数字玩法",true); imagePlay=new JRadioButton("图像玩法",false); group.add(digitPlay); group.add(imagePlay); puzzlePad=new PuzzlePad(); puzzlePad.setGrade(1); puzzlePad.setIsDigitPlay(); add(puzzlePad,BorderLayout.CENTER); JPanel pNorth=new JPanel(); pNorth.add(digitPlay); pNorth.add(imagePlay); pNorth.add(startButton); pNorth.add(new JLabel("如果图像不能立刻显示,请再单击一次按扭"); add(pNorth,BorderLayout.NORTH); add(puzzlePad.getHandleMove(),BorderLayout.SOUTH); validate(); setVisible(true); setBounds(100,50,550,380); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); try image=tool.createImage(new File("dog.jpg").toURI().toURL(); puzzlePad.setImage(image); catch(Exception exp) public void actionPerformed(ActionEvent e) if(e.getSource()=startButton) if(digitPlay.isSelected() puzzlePad.setIsDigitPlay(); else if(imagePlay.isSelected() puzzlePad.setImage(image); puzzlePad.setIsImagePlay(); else if(e.getSource()=oneGrade) puzzlePad.setGrade(1); else if(e.getSource()=twoGrade) puzzlePad.setGrade(2); else if(e.getSource()=newImage) FileNameExtensionFilter filter = new FileNameExtensionFilter( "JPG & GIF Images", "jpg", "gif"); JFileChooser chooser=new JFileChooser(); chooser.setFileFilter(filter); int state=chooser.showOpenDialog(null); File file=chooser.getSelectedFile(); if(file!=null&&state=JFileChooser.APPROVE_OPTION) try image=tool.createImage(file.toURI().toURL(); puzzlePad.setImage(image); catch(Exception exp) else if(e.getSource()=defaultImage) try image=tool.createImage(new File("dog.jpg").toURI().toURL(); puzzlePad.setImage(image); catch(Exception exp) public static void main(String args) new PuzzleGame(); import javax.swing.*;import java.awt.*;public class Block extends JTextField Point point; Object object; Block() setEditable(false); setHorizontalAlignment(JTextField.CENTER); setFont(new Font("Arial",Font.BOLD,16); setForeground(Color.blue); public void setAtPoint(Point p) point=p; public Point getAtPoint() return point; public void setObject(Object object) this.object=object; if(object instanceof Integer) Integer number=(Integer)object; setText(""+number.intValue(); else if(object instanceof Image) repaint(); public Object getObject() return object; public void paintComponent(Graphics g) super.paintComponent(g); int w=getBounds().width; int h=getBounds().height; try g.drawImage(Image)object,0,0,w,h,this); catch(Exception exp) import java.awt.*;import javax.swing.*;import java.awt.image.*;public class HandleImage extends JComponent int imageWidth,imageHeight; Toolkit tool; HandleImage() tool=getToolkit(); public Image getImages(Image image,int rows,int colums) Image blockImage=new Imagerows*colums; try imageWidth=image.getWidth(this); imageHeight=image.getHeight(this); int w=imageWidth/colums; int h=imageHeight/rows; int k=0; PixelGrabber pg=null; ImageProducer ip=null; for(int i=0;i<rows;i+) for(int j=0;j<colums;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+; catch(Exception ee) return blockImage; import java.awt.event.*;import java.awt.*;import javax.swing.*;public class HandleMove extends JPanel implements MouseListener,ActionListener Point point; int spendTime=0; javax.swing.Timer recordTime; JTextField showTime; VerifySuccess verify; HandleMove() recordTime=new javax.swing.Timer(1000,this); showTime=new JTextField(16); showTime.setEditable(false); showTime.setHorizontalAlignment(JTextField.CENTER); showTime.setFont(new Font("楷体_GB2312",Font.BOLD,16); JLabel hitMess=new JLabel("用鼠标单击方块",JLabel.CENTER); hitMess.setFont(new Font("楷体_GB2312",Font.BOLD,18); add(hitMess); add(showTime); setBackground(Color.cyan); public void setPoint(Point p) point=p; public void initSpendTime() recordTime.stop(); spendTime=0; showTime.setText(null); public void setVerifySuccess(VerifySuccess verify) this.verify=verify; public void mousePressed(MouseEvent e) recordTime.start(); Block block=null; block=(Block)e.getSource(); int w=block.getBounds().width; int h=block.getBounds().height; int startI=-1,startJ=-1,endI=-1,endJ=-1; Point startPoint=block.getAtPoint(); Point endPoint=null; for(int i=0;i<point.length;i+) for(int j=0;j<point0.length;j+) if(pointij.equals(startPoint) startI=i; startJ=j; break; for(int i=0;i<point.length;i+) for(int j=0;j<point0.length;j+) if(pointij.isHaveBlock()=false) endI=i; endJ=j; endPoint=pointij; break; boolean moveCondition1=Math.abs(endI-startI)=1&&endJ=startJ; boolean moveCondition2=Math.abs(endJ-startJ)=1&&endI=startI; if(moveCondition1|moveCondition2) block.setLocation(endPoint.getX(),endPoint.getY(); block.setAtPoint(endPoint); endPoint.setBlock(block); endPoint.setHaveBlock(true); startPoint.setHaveBlock(false); public void actionPerformed(ActionEvent e) spendTime+; showTime.setText("您的用时:"+spendTime+"秒"); public void mouseReleased(MouseEvent e) if(verify.isSuccess() recordTime.stop(); JOptionPane.showMessageDialog(this,"您成功了!","消息框", JOptionPane.INFORMATION_MESSAGE ); public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mouseClicked(MouseEvent e)public class Point int x,y; boolean haveBlock; Block block=null; public Point(int x,int y) this.x=x; this.y=y; public boolean isHaveBlock() return haveBlock; public void setHaveBlock(boolean boo) haveBlock=boo; public int getX() return x; public int getY() return y; public boolean equals(Point p) if(p.getX()=this.getX()&&p.getY()=this.getY() return true; else return false; public void setBlock(Block block) this.block=block; public Block getBlock() return block; import javax.swing.*;import java.io.*;import java.util.*;import java.awt.*;public class PuzzlePad extends JPanel Point point; Block block; int distance=56,grade,m=3,n=3; HandleMove handleMove; HandleImage handleImage; VerifySuccess verifySuccess; Image image; boolean isDigitPlay; public PuzzlePad() setBackground(Color.gray); setLayout(null); handleMove=new HandleMove(); handleMove.initSpendTime(); handleImage=new HandleImage(); verifySuccess=new VerifySuccess(); handleMove.setVerifySuccess(verifySuccess); public HandleMove getHandleMove() return handleMove; public void setImage(Image image) this.image=image; public void setGrade(int grade) this.grade=grade; if(grade=1) m=3; n=3; else if(grade=2) m=4; n=4; public int getGrade() return grade; private void needInit() handleMove.initSpendTime(); removeAll(); point=new Pointmn; block=new Blockmn; int Hspace=distance,Vspace=distance; for(int i=0;i<m;i+) for(int j=0;j<n;j+) pointij=new Point(Hspace,Vspace); Hspace=Hspace+distance; Hspace=distance; Vspace=Vspace+distance; handleMove.setPoint(point); verifySuccess.setPoint(point); handleMove.setVerifySuccess(verifySuccess); int k=0; for(int i=0;i<m;i+) if(i<m-1) for(int j=0;j<n;j+) blockij=new Block(); blockij.addMouseListener(handleMove); k+; else for(int j=0;j<n-1;j+) blockij=new Block(); blockij.addMouseListener(handleMove); k+; for(int i=0;i<m;i+) if(i<m-1) for(int j=0;j<n;j+) add(blockij); blockij.setSize(distance,distance); blockij.setLocation(pointij.getX(),pointij.getY(); blockij.setAtPoint(pointij); pointij.setBlock(blockij); pointij.setHaveBlock(true); else for(int j=0;j<n-1;j+) add(blockij); blockij.setSize(distance,distance); blockij.setLocation(pointij.getX(),pointij.getY(); blockij.setAtPoint(pointij); pointij.setBlock(blockij); pointij.setHaveBlock(true); public void setIsDigitPlay() needInit(); isDigitPlay=true; ArrayList<Integer> numberList=new ArrayList<Integer>(); for(int k=0;k<m*n-1;k+) numberList.add(k+1); Object object=numberList.toArray(); verifyS

    注意事项

    本文([工学]面向对象java版课程设计报告.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开