java课程设计报告--打字游戏.docx

上传人:scccc 文档编号:13180893 上传时间:2021-12-17 格式:DOCX 页数:21 大小:67.59KB
返回 下载 相关 举报
java课程设计报告--打字游戏.docx_第1页
第1页 / 共21页
java课程设计报告--打字游戏.docx_第2页
第2页 / 共21页
java课程设计报告--打字游戏.docx_第3页
第3页 / 共21页
java课程设计报告--打字游戏.docx_第4页
第4页 / 共21页
java课程设计报告--打字游戏.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《java课程设计报告--打字游戏.docx》由会员分享,可在线阅读,更多相关《java课程设计报告--打字游戏.docx(21页珍藏版)》请在三一文库上搜索。

1、广 西 师 范 学 院Java开发技术课程设计打字游戏 学院:计算机与信息工程学院学号:*姓名: *时间:2021年12月14日一、 程序描述1.1程序设计的目的通过java开发技术课程的学习,我初步了解了如何运用java语言编写程序。课程结束后,按老师的要求,在查找资料后,我完成了打字练习这个程序。在这个过程中,主要到达了两个目的,一是检验和稳固专业知识,二是提高综合素质和能力。通过该程序的编写,可以将我课堂上掌握的理论知识与处理数据的业务相结合,以检验我掌握知识的宽度、深度及对知识的综合运用能力。程序设计的要求1程序的界面会随机的出现字母和数字,玩家在键盘上摁相应的键后,界面上的对应的字符

2、就会消失2字符下落的速度可以选择,完成一定量的字符后,显示进入下一关,下一关的速度加快3能统计正确与错误的字符数分别是多少4程序的主界面是能够给玩家第一感官的局部,主要包括程序图形区域界面、程序的显示更新界面。程序设计的环境Windows xp操作系统、Myeclipse编辑工具、二 、分析与设计2.1 游戏处理流程 本次游戏设计的处理流程如以下图所示单击“开始按钮,游戏开始,字符开始随机。没有摁倒相应的键,错误的数字将加一单击“退出退出游戏游戏中途欲中断,稍后继续游戏单击“暂停游戏暂停进入游戏画面再次单击开始游戏,游戏恢复游戏处理流程图 根据出现的字符按相应的键,对应一个消失一个字

3、符按对一定字符后将提示进入下一关,下一关的速度有所增加。速度也可单独调节。需求分析2.2.1 用户的特点打字练习具有很强的实用性,对键盘不熟悉的人均可用之练习。这种需求同时也要求该程序具有可调节性,用户可以根据自己的水平调节速度,以提高打字水平。2.2.2 功能需求在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确保系统可使用性好。另外,还要求系统的可扩展性、可维护性、可移植性良好。2.3.3 主界面模块该方法实现了速度的调节public void run() number.clear();zhengque = 0;cuowu = 0;paidu

4、an = "true"while (count <= rushrush_count) try Thread t = new Thread(new Tthread();t.start();count += 1;Thread.sleep(1000 + (int) (Math.random() * 2000); / 生产下组停顿时间 / 最快1快.最慢2秒 catch (InterruptedException e) e.printStackTrace(); 该方法实现了对错个数的统计classMyListener extends KeyAdapter public voi

5、d keyPressed(KeyEvent e) String uu = e.getKeyChar() + ""for (inti = 0; i<number.size(); i+) Bean bean = (Bean) number.get(i);if (uu.equalsIgnoreCase(bean.getParameter() zhengque += 1;number.removeElementAt(i);bean.getShow().setVisible(false); jLabel2.setText("正确:" + zhengque +

6、 "个,错误:" + cuowu + "个");Music_chenggong.play();break; /-声音文件-Musci_anjian = Applet.newAudioClip(new File("sounds/anjian.wav") .toURL();Music_shibai = Applet.newAudioClip(new File("sounds/shibai.wav") .toURL();Music_chenggong = Applet.newAudioClip(new File( &qu

7、ot;sounds/chenggong.wav").toURL(); /-三 、程序运行初始界面开始游戏,字符降落过关提示闯关失败,再接再厉四、 心得体会1通过本学期的java的学习,我掌握了java语言的根本知识,通过java我又学习了很多其他的有用的东西,比方算法,数据结构。在了解了java之后我对java产生了浓厚的爱意。2通过这几周的实验,让我把这学期学的知识应用于实践之上,理论付之于实践真的很难,掌握的根底知识开始根本不知道怎么组织。但我对java的爱是不可能就这样被扼杀的。通过我的上网查,书上看,动动手,终於功夫不负有心人。我顺利的完成了实验。3这次实验让我对java的S

8、wing编程的了解详细了不少,填补了我很多的空缺。在实现功能的时候我懂得了算法对程序的重要性,一个好的算法可以让你的程序更健壮,编写的代码量更少。处理异常一直是java里的常事,通过实验,我对一般的异常的处理更加有把握了。更加游刃有余。4)学习的秘诀就是毅力加恒心。学习java也是一样的道理,我相信只要我坚持一直走下去,java一定会成为我大展身手的舞台。附:代码importjava.applet.Applet;importjava.applet.AudioClip;importjava.awt.Dimension;importjava.awt.Font;importjava.awt.Tool

9、kit;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;im

10、portjavax.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.util.

11、Vector;public class Frame extends JFrame implements Runnable JPanelcontentPane;JPanel jPanel1 = new JPanel();JButton jButton1 = new JButton();JSlider jSlider1 = new JSlider();JLabel jLabel1 = new JLabel();JButton jButton2 = new JButton();JLabel jLabel2 = new JLabel();int count = 1, rapidity = 80; in

12、tzhengque = 0, cuowu = 0;int rush = 10 ,20 ,30 ; 列 10 ,20 ,30 ,40,50intrush_count = 0; char list = 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P

13、', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9' ; /随机出现的数字可以自由添加Vector number = new Vector();St

14、ring paiduan = "true"AudioClipMusci_anjian, Music_shibai, Music_chenggong;public Frame() try setDefaultCloseOperation(EXIT_ON_CLOSE); /-声音文件-Musci_anjian = Applet.newAudioClip(new File("sounds/anjian.wav") .toURL();Music_shibai = Applet.newAudioClip(new File("sounds/shibai.w

15、av") .toURL();Music_chenggong = Applet.newAudioClip(new File( "sounds/chenggong.wav").toURL(); /-jbInit(); catch (Exception exception) exception.printStackTrace(); /* Component initialization.* */private void jbInit() throws Exception contentPane = (JPanel) getContentPane();contentPan

16、e.setLayout(null);setSize(new Dimension(588, 530);setTitle("Frame Title");jPanel1.setBorder(BorderFactory.createEtchedBorder();jPanel1.setBounds(new Rectangle(4, 4, 573, 419);jPanel1.setLayout(null);jButton1.setBounds(new Rectangle(277, 442, 89, 31); jButton1.setText("开始");jButto

17、n1.addActionListener(new Frame1_jButton1_actionAdapter(this);jSlider1.setBounds(new Rectangle(83, 448, 164, 21);jSlider1.setMaximum(100);jSlider1.setMinimum(1);jSlider1.setValue(50); jLabel1.setText("速度");jLabel1.setBounds(new Rectangle(35, 451, 39, 18);jButton2.setBounds(new Rectangle(408

18、, 442, 89, 31); jButton2.setText("结束");jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this); jLabel2.setText("第一关:100个");jLabel2.setBounds(new Rectangle(414, 473, 171, 21);contentPane.add(jPanel1);contentPane.add(jButton2);contentPane.add(jButton1);contentPane.add(j

19、Slider1);contentPane.add(jLabel1);contentPane.add(jLabel2);this.addKeyListener(new MyListener();jButton1.addKeyListener(new MyListener();jSlider1.addKeyListener(new MyListener();jSlider1.addChangeListener(new ChangeListener() public void stateChanged(ChangeEvent e) rapidity = jSlider1.getValue(); );

20、public void run() number.clear();zhengque = 0;cuowu = 0;paiduan = "true"while (count <= rushrush_count) try Thread t = new Thread(new Tthread();t.start();count += 1;Thread.sleep(1000 + (int) (Math.random() * 2000); / 生产下组停顿时间 / 最快1快.最慢2秒 catch (InterruptedException e) e.printStackTrace(

21、); while (true) / 等待最后一个字符消失if (number.size() = 0) break; if (zhengque = 0) / 为了以后相除.如果全部正确或者错误就会出现错误. 所以.zhengque = 1; if (cuowu = 0) cuowu = 1; if (paiduan.equals("true") / 判断是否是自然结束if (zhengque / cuowu>= 2) JOptionPane.showMessageDialog(null, "恭喜你过关了");rush_count += 1; / 自动

22、加1关if (rush_count<rush.length) if (rapidity > 10) / 当速度大于10的时候在-5提加速度.怕速度太快 rapidity -= 5; / 速度自动减10毫秒 jSlider1.setValue(rapidity); / 选择位置 Thread t = new Thread(this);t.start(); else JOptionPane.showMessageDialog(null, "牛B.你通关了.");rush_count = 0;count = 0; else JOptionPane.showMessag

23、eDialog(null, "请再接再励");rush_count = 0;count = 0; else rush_count = 0;count = 0; public void jButton1_actionPerformed(ActionEvent e) Thread t = new Thread(this);t.start();public void jButton2_actionPerformed(ActionEvent e) count = rushrush_count + 1;paiduan = "flase"classTthread i

24、mplements Runnable public void run() booleanfo = true;int Y = 0, X = 0;JLabel show = new JLabel();show.setFont(new java.awt.Font("宋体", Font.PLAIN, 33);jPanel1.add(show); X = 10 + (int) (Math.random() * 400); String parameter = list(int) (Math.random() * list.length) + "" Bean bea

25、n = new Bean();bean.setParameter(parameter);bean.setShow(show);number.add(bean);show.setText(parameter);while (fo) / -数字下移-show.setBounds(new Rectangle(X, Y += 2, 33, 33);try Thread.sleep(rapidity); catch (InterruptedException e) e.printStackTrace(); if (Y >= 419) fo = false;for (inti = number.si

26、ze() - 1; i>= 0; i-) Bean bn = (Bean) number.get(i);if (parameter.equalsIgnoreCase(bn.getParameter() cuowu += 1; jLabel2.setText("正确:" + zhengque + "个,错误:" +cuowu + "个");number.removeElementAt(i);Music_shibai.play();break; classMyListener extends KeyAdapter public vo

27、id keyPressed(KeyEvent e) String uu = e.getKeyChar() + ""for (inti = 0; i<number.size(); i+) Bean bean = (Bean) number.get(i);if (uu.equalsIgnoreCase(bean.getParameter() zhengque += 1;number.removeElementAt(i);bean.getShow().setVisible(false); jLabel2.setText("正确:" + zhengque

28、+ "个,错误:" + cuowu + "个");Music_chenggong.play();break; Musci_anjian.play(); public static void main(String args) try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch (Exception exception) exception.printStackTrace(); Frame frame = new Frame(); Dimension s

29、creenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize();if (frameSize.height>screenSize.height) frameSize.height = screenSize.height; if (frameSize.width>screenSize.width) frameSize.width = screenSize.width; frame.setLocation(screenSize.width - frameSize.

30、width) / 2, (screenSize.height - frameSize.height) / 2);frame.setVisible(true);class Frame1_jButton2_actionAdapter implements ActionListener private Frame adaptee;Frame1_jButton2_actionAdapter(Frame adaptee) this.adaptee = adaptee;public void actionPerformed(ActionEvent e) adaptee.jButton2_actionPer

31、formed(e);class Frame1_jButton1_actionAdapter implements ActionListener private Frame adaptee;Frame1_jButton1_actionAdapter(Frame adaptee) this.adaptee = adaptee;public void actionPerformed(ActionEvent e) adaptee.jButton1_actionPerformed(e);class Bean String parameter = null;JLabel show = null;publicJLabelgetShow() return show;public void setShow(JLabel show) this.show = show;public String getParameter() return parameter;public void setParameter(String parameter) this.parameter = parameter;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1