java课程设计报告打字游戏.docx
- 文档编号:25637180
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:16
- 大小:48.66KB
java课程设计报告打字游戏.docx
《java课程设计报告打字游戏.docx》由会员分享,可在线阅读,更多相关《java课程设计报告打字游戏.docx(16页珍藏版)》请在冰豆网上搜索。
java课程设计报告打字游戏
java课程设计报告一打字游戏
Java开发技术课程设计
(打字游戏)
学院:
计算机与信息工程学院
学号:
******
姓名:
**
时间:
2011年12月14日
一、程序描述
1.1程序设计的目的
通过java开发技术课程的学习,我初步了解了如何运用java语言编写程序。
课程结束后,按老师的要求,在查找资料后,我完成了打字练习这个程序。
在这个过程中,主要达到了两个目的,一是检验和巩固专业知识,二是提高综合
课堂上掌握的理论知识与处理数据的素质和能力。
通过该程序的编写,可以将我
业务相结合,以检验我掌握知识的宽度、深度及对知识的综合运用能力。
1.2程序设计的要求
(1)程序的界面会随机的出现字母和数字,玩家在键盘上理相应的键后,界面上的对应的字符就会消失
(2)字符下落的速度可以选择,完成一定量的字符后,显示进入下一关,下一关的速度加快
(3)能统计正确与错误的字符数分别是多少
(4)程序的主界面是能够给玩家第一感官的部分,主要包括程序图形区域界
面、程序的显示更新界面。
1.3程序设计的环境
Windowsxp操作系统、Myeclipse编辑工具、jdkl.6
二、分析与设计
2.1游戏处理流程
本次游戏设讣的处理流程如下图所示
进入游戏画面
单击“开始”按钮,
游戏开始,字符开始随机。
根据出现的字符按相应的
键,对应一个消失一个(字
符)按对一定字符后将提示
进入下一关,下一关的速度
有所增加。
速度也可单独调
节。
没有擅倒相应游戏中途欲中
的键,错误的断,稍后继续
数字将加一游戏
单击“退出”单击“暂停”
退出游戏游戏暂停
再次单击开始
游戏,游戏恢复
游戏处理流程图2.2需求分析
2.2.1用户的特点
打字练习具有很强的实用性,对键盘不熟悉的人均可用之练习。
这种需求同时也
要求该程序具有可调节性,用户可以根据自己的水平调节速度,以提高打字水平。
2.2.2功能需求
在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性
能好,连接速度快,以确保系统可使用性好。
列外,还要求系统的可扩展性、可维护性、可移植性良好。
2.3.3主界面模块
该方法实现了速度的调节
publicvoidrun(){
number・clear();
zhengque=0;
cuowu=0;
paiduan="true";
while(count<=rush[rush_count]){
try{
Threadt=newThread(newTthreadO):
t.start():
count+二1;
Thread,sleep(1000+(int)(Math,random()*2000));//生产下组停顿时间
・最慢2秒〃最快1快
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}
该方法实现了对错个数的统讣
classMyListenerextendsKeyAdapter{publicvoidkeyPressed(KeyEvente){
Stringuu二e.getKeyChar()+for(inti=0;i Beanbean=((Bean)number・get(i));if (uu.equalsIgnoreCase(bean.getParameter())){zhengque+二1; number・removeE1ementAt(i); bean.getShow()・setVisible(false); jLabel2.setText("正确: "+zhengque+"个,错误: "+cuowu+"个“); Music_chenggong・play(); break; } } y/: xj彳f卜 Musci_anjian=Applet・newAudioClip(newFile(z/sounds//anjian.wav") .toURL()); Music_shibai=Applet・newAudioClip(newFile(,zsounds//shibai.wav,z) ・toURL()); Music_chenggong=Applet・newAudioClip(newFile( sounds//chenggong・wav“).toURL()); // // 三、程序运行 初始界面 Y 开始游戏,字符降落 过关提示 in|“ 闯关失败,再接再厉 四、心得体会 1)通过本学期的jdVd的学习,我掌握了jd、P语言的基本知识,通过jdVd我乂学习了很多其他的有用的东西,比如算法,数据结构。 在了解了jd\p之后我对java产生了浓厚的爱意。 2)通过这儿周的实验,让我把这学期学的知识应用于实践之上,理论付之于实践真的很难,掌握的基础知识开始根本不知道怎么组织。 但我对java的爱是不可能就这样被扼杀的。 通过我的上网查,书上看,动动手,终於功夫不负有心人。 我顺利的完成了实验。 3)这次实验让我对java的Swin名编程的了解详细了不少,填补了我很多的空缺。 在实现功能的时候我懂得了算法对程序的重要性,一个好的算法可以让你的程序更健壮,编写的代码量更少。 处理异常一直是走腹里的常事,通过实验,我对一般的异常的处理更加有把握了。 更加游刃有余。 4)学习的秘诀就是毅力加恒心。 学习java也是一样的道理,我相信只要我坚持一直走下去,java-定会成为我大展身手的舞台。 附: 代码 importjava・applet・Applet: importjava・applet・AudioClip; importjava・awt・Dimension;importjava・awt・Font; importjava・awt・Toolkit; importjavax・sound・sampled・AudioFileFormat; importjavax・sound・sampled・AudioSystem;importjavax・swing・JFrame; importjavax・swing・JPanel; importjava・awt・Rectangle; importjavax・swing・BorderFactory;importjavax・swing・JButton; importjavax・swing・JOptionPane; importjavax・swing・JSlider; importjavax・swing・JLabel; importjavax・swing・SwingUtilities;importjavax・swing・UIManager: importjavax・swing・event・ChangeEvent; importjavax・swing・event・ChangeListener;importjava・awt・event・ActionEvent; importjava・awt・event・ActionListener;importjava・awt・event・KeyAdapter;importjava・awt・event・KeyEvent; importjava・io.File; importjava・uti1.Vector; publicclassFrameextendsJFrameimplementsRunnable{ JPanelcontentPane; JPaneljPanell=newJPanel(): JButtonjButtonl=newJButtonO; JSliderjSliderl=newJSlider(): JLabeljLabell=newJLabel(): JButtonjButton2=newJButtonO; JLabeljLabel2二newJLabel(); intcount=1,rapidity=80;intzhengque=0,cuowu=0;intrush[]={10,20,30};列{10,20,30,40,50}intrush_count=0; charlist[]二{£'B','Cj'Dj'E‘,'Fj'Gj'HjT‘,'J',K\T, 'M','N','O','P','Q','R','S','T','U','V','W','X','Y', 'Z',T','2','3','4','5','6','7','8','9'};〃随机出现 的数字可以自山添加 Vectornumber=newVector(); Stringpaiduan="true"; AudioCiipMusci_anjian,Music_shibai,Music_chenggong: publicFrame(){ try{ setDefaultCloseOperation(EXIT_ON_CLOSE); //声音文件 Musci_anjian=Applet.newAudioClip(newFile(z/sounds//anjian.wav,z) .toURLO); Music_shibai=Applet.newAudioClip(newFile(z/sounds//shibai.wav,z) .toURL()); Music_chenggong=Applet.newAudioClip(newFile( sounds//chenggong.wav").toURL()); //jblnit(); }catch(Exceptionexception){exception.printStackTrace(): } } /** *Componentinitialization. * *©throwsjava.1ang.Exception */ privatevoidjblnit()throwsException{contentPane=(JPanel)getContentPane();contentPane・setLayout(null); setSize(newDimension(588,530));setTitle(,zFrameTitle"); jPanel1.setBorder(BorderFactory.createEtchedBorder()); jPanel1.setBounds(newRectangle(4,4,573,419)): jPanel1.setLayout(null); jButtonl.setBounds(newRectangle(277,442,89,31)); jButtonl.setText("开始"); jButtonl・addActionListener(new Framel^jButtonl^actionAdapter(this)); jSliderl.setBounds(newRectangle(83,44&164,21)): jSlider1・setMaximum(lOO); jSlider1.setMinimum(l); jSlider1.setValue(50); jLabell.setTextC速度"); jLabel1・setBounds(newRectangle(35,451,39,18)): jButton2.setBounds(newRectangle(40&442,89,31)); jButton2.setText("结束"); jButton2・addActionListener(new Framel_jButton2_actionAdapter(this)); jLabel2.setText(”第一关: 100个"); jLabel2.setBounds(newRectangle(414,473,171,21)): contentPane・add(jPanell); contentPane・add(jButton2); contentPane・add(jButtonl); contentPane・add(jSliderl); contentPane・add(jLabell); contentPane・add(jLabel2); this・addKeyListener(newMyListener());jButtonl・addKeyListener(new MyListener());jSlider1.addKeyListener(newMyListener()); jSlider1.addChangeListener(newChangeListener(){publicvoidstateChanged(ChangeEvente){rapidity=jSlider1.getValue(); } }); } publicvoidrun(){ number・clear(); zhengque=0; cuowu=0; paiduan="true"; while(count<=rush[rush_count]){try{ Threadt=newThread(newTthreadO): t・start(); count+二1; Thread,sleep(1000+(int)(Math,random()♦2000)): //生产下组 停顿时间 //最快1快•最慢2秒 }catch(InterruptedExceptione){ e.printStackTrace(); } } while(true){//等待最后一个字符消失 if(number,size()=0){break; } } 辻(zhengque=0){//为了以后相除..如果全部正确或者错误就会出现错误.所以.. zhengque=1; } if(cuowu=0){ cuowu=1; } if(paiduan.equals("true")){//判断是否是自然结束if(zhengque/cuowu>=2){ JOptionPane.showMessageDialog(null,"恭喜你过关了“);rush_count+=1; //自动加1关 if(rush_count 辻(rapidity>10){//当速度大于10的时候在-5提加速度.怕速度太快 rapidity-=5;//速度自动减10毫秒 jSliderl.setValue(rapidity): //选择位置 } Threadt=newThread(this): t.start(); }else{ JOptionPane・showMessageDialog(null,"牛B.・・你通关了・・");rush^count=0; count=0; } }else{ JOptionPane.showMessageDialog(null,〃请再接再励”);rush_count=0; count=0; } }else{ rush_count=0; count=0; } } publicvoidjButtonl_actionPerformed(ActionEvente){ Threadt=newThread(this);t・start(); } publicvoidjButton2_actionPerformed(ActionEvente){ count=rush[rush_count]+1: paiduan="flase"; } classTthreadimplementsRunnable{publicvoidrun(){ booleanfo=true; intY=0,X=0; JLabelshow=newJLabel(); show.setFont(newjava.awt.Font("宋体",Font.PLAIN,33)); jPanel1・add(show); X=10+(int)(Math,random()*400); Stringparameter=list[(int)(Math.randomO*list・1ength)]+〃〃■ Beanbean=newBean(); bean.setParameter(parameter); bean.setShow(show); number・add(bean); show.setText(parameter); while(fo){ //数字下移 show.setBounds(newRectangle(X,Y+二2,33,33));try{ Thread・sleep(rapidity); }catch(InterruptedExceptione){e.printStackTrace(); } if(Y>=419){ fo=false; for(inti=number・size()-1;i>=0;i--){ Beanbn=((Bean)number・get(i));if (parameter・equalsIgnoreCase(bn.getParameter())){cuowu+二1; jLabel2.setTextC正确: "+zhengque+"个,错误: "+cuowu +”个"); number・removeE1ementAt(i); Music_shibai・play(); break; } } } } } } classMyListenerextendsKeyAdapter{publicvoidkeyPressed(KeyEvent e){ Stringuu=e.getKeyChar()+for(inti=0;i Beanbean=((Bean)number・get(i));if (uu.equalslgnoreCase(bean.getParameter())){ zhengque+二1; number・removeE1ementAt(i): bean.getShow().setVisible(false); jLabe! 2.setText(,z正确: "+zhengque+"个,错误: "+cuowu+ Music_chenggong・play(); break; } } Musci_anjian.play(); } } publicstaticvoidmain(StringL-args){try{ UIManager・setLookAndFeel(UIManager・getSystemLookAndFeelClassName()); }catch(Exceptionexception){exception.printStackTrace(); } Frameframe=newFrame(); DimensionscreenSize= Toolkit・getDefaultToolkit()・getScreenSize(); DimensionframeSize=frame・getSize();if (frameSize・height>screenSize・height){ frameSize.height=screenSize.height; } if(frameSize・width>sc: reenSize.width){frameSize.width=screenSize・width; } frame・setLocation((screenSize.width一frameSize.width)/2, (screenSize.height一frameSize.height)/2);frame・setVisible(true); } } classFramel_jButton2_actionAdapterimplementsActionListener { privateFrameadaptee; Framel_jButton2_actionAdapter(Frameadaptee){this・adaptee=adaptee; } publicvoidactionPerformed(ActionEvente){ adaptee・jButton2_actionPe: rformed(e);} } classFramel_jButtonl_actionAdapterimplementsActionListener { privateFrameadaptee; Framel_jButtonl_actionAdapter(Frameadaptee){this.adaptee=adaptee; } publicvoidactionPerformed(ActionEvente){ adaptee・jButtonl_actionPerformed(e);} } classBean{ Stringparameter=null: JLabelshow=null: publicJLabelgetShow(){ returnshow; } publicvoidsetShow(JLabelshow){this・show=show; } publicStringgetParameter(){returnparameter; } publicvoidse
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告 打字 游戏