您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > JAVA-课程设计蜘蛛纸牌报告终极修改版
武汉轻工大学数学与计算机学院Java程序设计课程设计报告专业:信息与计算科学班级:信计1402学号:1412010039姓名:徐雄飞指导教师:贾瑜1课程设计目的与要求课程设计是在学习Java程序设计之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼:1、能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。2、提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性。学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。2设计内容2.1蜘蛛纸牌2.1.1程序基本功能蜘蛛纸牌游戏通过鼠标操作,将电脑多次分发的纸牌,按照相同的花色由大到小排列起来,直到桌面上的纸牌全都消失,即为胜利。包括如下功能:(a)难度选择:包括简单(单色)、中级(双色)、高级(四色)。(b)开局:任何时候可以重新开始一盘新的游戏。(c)发牌。(d)显示可行操作:提示当前可行操作。(e)简单的帮助文档:对软件的简单介绍和编制说明。2.1.2程序设计方案和原理蜘蛛纸牌游戏共由4个部分组成,分别是:Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java,SpiderMenuBar.java包含名为SpiderMenuBar的public类,其主要功能为生成蜘蛛纸牌游戏的菜单栏,实现菜单栏中各个组件的事件侦听。主要包括3个模块:图形用户界面的构建;组件监听接口的实现:显示可执行操作的线程。PKCard.java。包含名为PKCard的public类,其主要功能为:定义纸牌的属性,包括名称,位置等相关信息。并通过相关方法实现纸牌的移动等。AboutDialog.java。包含名为AboutDialog的public类,其主要功能为生成蜘蛛纸牌游戏的帮助栏。Spider.java。包含名为Spider的public类,其主要功能为生成蜘蛛纸牌游戏的框架,实现游戏中的方法,包括:纸牌的随机生成,位置的摆放等。程序流程图运行进入游戏界面菜单帮助开始等级消牌移牌发牌退出游戏游戏结束2.1.3程序的代码实现SpiderMenuBar.javaSpiderMenuBar.java的作用是生成蜘蛛游戏的菜单,实现菜单栏中各个组件的事件倾听。其代码如下:importjavax.swing.JMenuBar;importjavax.swing.JMenu;importjavax.swing.JMenuItem;importjavax.swing.JRadioButtonMenuItem;importjavax.swing.ButtonGroup;publicclassSpiderMenuBarextendsJMenuBar{//生成spider框架对象Spidermain=null;//生成菜单组JMenujNewGame=newJMenu(游戏);JMenujHelp=newJMenu(帮助);//生成菜单项JMenuItemjItemAbout=newJMenuItem(关于);JMenuItemjItemOpen=newJMenuItem(开局);JMenuItemjItemPlayAgain=newJMenuItem(重新发牌);//生成单选框JRadioButtonMenuItemjRMItemEasy=newJRadioButtonMenuItem(简单:单一花色);JRadioButtonMenuItemjRMItemNormal=newJRadioButtonMenuItem(中级:双花色);JRadioButtonMenuItemjRMItemHard=newJRadioButtonMenuItem(高级:四花色);;JMenuItemjItemExit=newJMenuItem(退出);JMenuItemjItemValid=newJMenuItem(显示可行操作);/****构造函数,生成JMenuBar的图形界面*/publicSpiderMenuBar(Spiderspider){this.main=spider;/****初始化“游戏”菜单栏*/jNewGame.add(jItemOpen);jNewGame.add(jItemPlayAgain);jNewGame.add(jItemValid);jNewGame.addSeparator();jNewGame.add(jRMItemEasy);jNewGame.add(jRMItemNormal);jNewGame.add(jRMItemHard);jNewGame.addSeparator();jNewGame.add(jItemExit);ButtonGroupgroup=newButtonGroup();group.add(jRMItemEasy);group.add(jRMItemNormal);group.add(jRMItemHard);jHelp.add(jItemAbout);this.add(jNewGame);this.add(jHelp);//为组件添加事件监听并实现//“开局”jItemOpen.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){main.newGame();}});//“重新发牌”jItemPlayAgain.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){if(main.getC()60){main.deal();}}});//显示可行操作jItemValid.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){newShow().start();}});//“退出”jItemExit.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){main.dispose();System.exit(0);}});//“简单级别”默认已选jRMItemEasy.setSelected(true);//“简单级别”jRMItemEasy.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){main.setGrade(Spider.EASY);main.initCards();main.newGame();}});//“中级”jRMItemNormal.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){main.setGrade(Spider.NATURAL);main.initCards();main.newGame();}});//“高级”jRMItemHard.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){main.setGrade(Spider.HARD);main.initCards();main.newGame();}});jNewGame.addMenuListener(newjavax.swing.event.MenuListener(){publicvoidmenuSelected(javax.swing.event.MenuEvente){if(main.getC()60){jItemPlayAgain.setEnabled(true);}else{jItemPlayAgain.setEnabled(false);}}publicvoidmenuDeselected(javax.swing.event.MenuEvente){}publicvoidmenuCanceled(javax.swing.event.MenuEvente){}});//“关于”jItemAbout.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEvente){newAboutDialog();}});}/****构造线程:显示可以执行的操作*/classShowextendsThread{publicvoidrun(){main.showEnableOperator();}}}PKCard.javaPKCard,java的作用是定义纸牌的属性,包括名称,位置等相关信息。并通过相关方法实现了纸牌的移动等。其代码如下:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassPKCardextendsJLabelimplementsMouseListener,MouseMotionListener{//纸牌的位置Pointpoint=null;PointinitPoint=null;intvalue=0;inttype=0;Stringname=null;Containerpane=null;Spidermain=null;booleancanMove=false;booleanisFront=false;PKCardpreviousCard=null;publicvoidmouseClicked(MouseEventarg0){}publicvoidflashCard(PKCardcard){//启动Flash线程newFlash(card).start();//不停的获得下一张牌,直到完成if(main.getNextCard(card)!=null){card.flashCard(main.getNextCard(card));}}classFlashextendsThread{privatePKCardcard=null;publicFlash(PKCardcard){this.card=card;}/***线程的run()方法**为纸牌的正面设置白色图片*/publicvoidrun(){booleanis=false;ImageIconicon=newImageIcon(images/white.gif);for(inti=0;i4;i++){try{Thread.sleep(200);}catch(InterruptedExceptione){e.printStackTrace();}if(is){this.card.turnFront();is=!is;}else{this.card.setIcon(icon);is=!is;}//根据当前外观将
本文标题:JAVA-课程设计蜘蛛纸牌报告终极修改版
链接地址:https://www.777doc.com/doc-6701469 .html