网上找到一个java版的打字的游戏

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Rectangle;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JSlider;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.util.Vector;/*** Java版打字练习软件* */
public class RapidTyping extends JFrame implements Runnable {private static final long serialVersionUID = -2831332650077025158L;JPanel contentPane;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 = 5; // count 当前进行的个数, rapidity 游标的位置int zhengque = 0, cuowu = 0;int rush[] = { 10, 20, 30 }; // 游戏每关的个数 可以自由添加int rush_count = 0; // 记录关数char list[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L','M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y','Z', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; // 随机出现的数字// 可以自由添加Vector number = new Vector();String paiduan = "true";AudioClip Musci_anjian, Music_shibai, Music_chenggong;public RapidTyping() {try {setDefaultCloseOperation(EXIT_ON_CLOSE);// -----------------声音文件---------------------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("sounds//chenggong.wav").toURL());// ---------------------------------------
            jbInit();} catch (Exception exception) {exception.printStackTrace();}}/*** 初始化* * @throws Exception*/private void jbInit() throws Exception {contentPane = (JPanel) getContentPane();contentPane.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("开始");jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));jSlider1.setBounds(new Rectangle(83, 448, 164, 21));jSlider1.setMaximum(100);jSlider1.setMinimum(0);jSlider1.setValue(95);jLabel1.setText("速度");jLabel1.setBounds(new Rectangle(35, 451, 39, 18));jButton2.setBounds(new Rectangle(408, 442, 89, 31));jButton2.setText("结束");jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));jLabel2.setText("第一关:10个");jLabel2.setBounds(new Rectangle(414, 473, 171, 21));contentPane.add(jPanel1);contentPane.add(jButton2);contentPane.add(jButton1);contentPane.add(jSlider1);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 = 100 - jSlider1.getValue();}});}/*** 主线程*/public void run() {number.clear();zhengque = 0;cuowu = 0;paiduan = "true";while (count <= rush[rush_count]) {try {Thread t = new Thread(new Tthread());t.start();count += 1;Thread.sleep(50 + (int) (Math.random() * 500)); // 生产下组停顿时间// 最快0.05秒.最慢0.5秒} catch (InterruptedException e) {e.printStackTrace();}}while (true) { // 等待最后一个字符消失if (number.size() == 0) {break;}}if (zhengque == 0) { // 为了以后相除..如果全部正确或者错误就会出现错误. 所以..zhengque = 1;}if (paiduan.equals("true")) { // 判断是否是自然结束if (cuowu <= 2) { // 错误不超过2个的过关JOptionPane.showMessageDialog(null, "恭喜你过关了");rush_count += 1; // 自动加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.showMessageDialog(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 = rush[rush_count] + 1;paiduan = "flase";}/*** 字符下移线程*/class Tthread implements Runnable {public void run() {boolean fo = 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 bean = 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 (int i = number.size() - 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;}}}}}}/*** 键盘监听器* */class MyListener extends KeyAdapter {public void keyPressed(KeyEvent e) {String uu = e.getKeyChar() + "";for (int i = 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 + "个,错误:" + cuowu + "个");Music_chenggong.play();break;}}Musci_anjian.play();}}public static void main(String[] args) {try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch (Exception exception) {exception.printStackTrace();}RapidTyping frame = new RapidTyping();Dimension screenSize = 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.setTitle("java版打字练习软件");frame.setLocation((screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2);frame.setVisible(true);}
}class Frame1_jButton2_actionAdapter implements ActionListener {private RapidTyping adaptee;Frame1_jButton2_actionAdapter(RapidTyping adaptee) {this.adaptee = adaptee;}public void actionPerformed(ActionEvent e) {adaptee.jButton2_actionPerformed(e);}
}class Frame1_jButton1_actionAdapter implements ActionListener {private RapidTyping adaptee;Frame1_jButton1_actionAdapter(RapidTyping adaptee) {this.adaptee = adaptee;}public void actionPerformed(ActionEvent e) {adaptee.jButton1_actionPerformed(e);}
}/*** 下落的字符类* */
class Bean {String parameter = null;JLabel show = null;public JLabel getShow() {return show;}public void setShow(JLabel show) {this.show = show;}public String getParameter() {return parameter;}public void setParameter(String parameter) {this.parameter = parameter;}
}

View Code

  

  转载自 http://yuncode.net/code/c_5041924f2c0bb1

转载于:https://www.cnblogs.com/diligenceday/p/5241709.html

【转载】java版打字练习软件相关推荐

  1. Java版打字练习游戏源码

    代码如下 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Dimension; import java ...

  2. JAVA实现打字练习软件

    转眼已经学了一学期的java了,老师让我们根据所学知识点写一个打字练习软件的综合练习.一开始我也不是很有思路,我找了一下发现csdn上关于这个小项目的代码也不算很多,所以我最后自己在csdn查了一些资 ...

  3. 手机人人java_人人网JAVA版手机客户端软件功能详解

    [IT168 软件频道]首先,安装好人人网的JAVA版本软件后,在手机的应用程序中可以找到人人2009(如图1). 图1 登录:运行人人2009软件,即会进入登录界面(如图2),点击登录,输入你的人人 ...

  4. java课程设计打字训练测试软件_Java版打字练习案例源码

    代码如下 import java.applet.Applet; import java.applet.AudioClip; import java.awt.Dimension; import java ...

  5. 悟空CRM JAVA版 (基于jfinal+vue+ElementUI的前后端分离CRM系统)

    悟空CRM9.0(JAVA版) 悟空软件长期为企业提供企业管理软件(CRM/HRM/OA/ERP等)的研发.实施.营销.咨询.培训.服务于一体的信息化服务.悟空软件以高科技为起点,以技术为核心.以完善 ...

  6. 转载:仿QQ聊天软件2.0版

    仿QQ聊天软件2.0版 这是大神的地址:牟尼的专栏 http://blog.csdn.net/u012027907 详细的过程本人没看,但是看见他的实现效果,相当诱人!     上次课设做了Java版 ...

  7. java版左右手桌面盯盘软件dstock V1.0

    V1.0功能比较简陋,先满足自己桌面盯盘需要 V1.0 版本功能介绍: 1. 1s实时刷新盯盘数据 主要市面上的,符合我要求的桌面应用要VIP,穷啊,还是月月付,年年付,还是自己搞吧! 2. 配置文件 ...

  8. 无忧考吧2017二级java_二级Java模拟软件|无忧考吧二级Java语言程序设计模拟软件下载 v2017.03官方版 - 121下载站...

    无忧考吧二级Java语言程序设计模拟软件是专为准备考试二级JAVA语言的朋友打造的一款在线模拟软件,二级JAVA语言的考试理论上是非常简单的, 大家只需要掌握基本的语法和一些简单的编程就可能了,这款软 ...

  9. Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务

    Java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单如下: 首页 工作台:待办工作.消息通知.预警信息,点击可 ...

  10. Java版工程管理系统源代码-软件自主研发,工程行业适用

    Java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单如下: 首页 工作台:待办工作.消息通知.预警信息,点击可 ...

最新文章

  1. 一切为了AI!黄仁勋GTC大会发布全新DPU处理器,计算吞吐量三年跨越1000倍
  2. Python学习教程(Python学习视频_Python学些路线):Day05 总结和练习
  3. Django-View中绕过RSCF验证
  4. Android学习建议
  5. 《C++ Primer》14.2.2节练习
  6. 啊!多么痛的领悟···
  7. 【机器学习】机器学习用到的常用术语
  8. html5表格树,利用ztree实现树形表格
  9. 云计算示范项目_瑞松科技基于工业互联网的设备运维及工艺管理云平台成功入选2020年工业互联网试点示范项目...
  10. 从714里连续减去6减几次得0_小学数学1—6年级基础知识整理 ,预习复习都能用...
  11. python正则表达式模块_Python正则表达式模块re
  12. 期盼数月的召唤|PaddlePaddle中文文档利剑来袭
  13. windows系统bat批处理 打开乱码
  14. 网易云音乐html代码_网易云音乐歌单列表导出方法!
  15. 计算机课ppt实验报告,北邮计算机组成原理实验课件_bupt 计算机组成原理 实验报告,北邮 计算机 计组实验-讲义工具类资源...
  16. 生活记录:用Sai2给勾了线的图像上色
  17. 信息学奥赛一本通高手训练1682:最小字典序
  18. authorization cache cannot be obtained
  19. Entry name ‘org/apache/commons/codec/language/bm/gen_approx_greeklatin.txt’ collided
  20. 消防设施操作员考试真题、模拟练习题库(8)

热门文章

  1. Bootstrap框架----标签Tag输入用法--Bootstrap-tagsinput
  2. java练手小项目雷霆战机
  3. 计算机二级考试word论文,office二级考试之word
  4. 关于wireshark包体的中文解码
  5. wireshark抓包详细图文教程
  6. 基于R的飞机航线数据可视化(卫星地图)
  7. linux服务器挂载ntfs u盘,如何在linux下挂载NTFS格式的U盘或硬盘。
  8. U盘转换NTFS格式
  9. Laravel填充数据Seeder出现Target class [***] does not exist.
  10. Android 锁屏后Socket长连接踩坑总结