代码如下

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;

public class Main 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;

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 Main() {

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();

}

Main frame = new Main();

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 Main adaptee;

Frame1_jButton2_actionAdapter(Main adaptee) {

this.adaptee = adaptee;

}

public void actionPerformed(ActionEvent e) {

adaptee.jButton2_actionPerformed(e);

}

}

class Frame1_jButton1_actionAdapter implements ActionListener {

private Main adaptee;

Frame1_jButton1_actionAdapter(Main 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;

}

}

效果图

java课程设计打字训练测试软件_Java版打字练习案例源码相关推荐

  1. java课程设计打字训练测试软件_打字训练测试软件-Java课程设计

    打字训练测试软件-Java课程设计 <程序设计实践>题目: 打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管 12-2 学号: 201213156619 姓名:刘克豪 20 ...

  2. 用java做打字训练测试软件,《打字训练测试软件-Java课程设计》.doc

    PAGE PAGE 3 <程序设计实践> 题目: 打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管12-2 学号: 201213156619 姓名:刘克豪 2014 年 1 ...

  3. java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw

    java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw java毕业生设计晨光文具店进销存系统设计与开发计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...

  4. java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw

    java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目 ...

  5. java毕业生设计信用卡增值业务系统小程序用户端计算机源码+系统+mysql+调试部署+lw

    java毕业生设计信用卡增值业务系统小程序用户端计算机源码+系统+mysql+调试部署+lw java毕业生设计信用卡增值业务系统小程序用户端计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...

  6. 数学测试软件c语言,C语言课程设计小学生数学测试软件.doc

    C语言课程设计报告 PAGE PAGE 1 第 PAGE 1 页 共 NUMPAGES 11 页 <C语言课程设计报告> 标题:小学生数学测试软件 学号: 姓名: 同组人员: 年级专业:0 ...

  7. 基于JavaGUI的中英文打字训练测试软件设计

    目 录 课程设计情况概述 I 目 录 II 第1章 课题介绍 1 1.1 课程设计的目的 1 1.2 课程设计的要求 1 第2章 总体设计 2 2.1 程序流程图 2 2.2 软件模块图 3 2.3 ...

  8. java课程设计报告连连看_连连看_java课程设计报告.doc

    连连看_java课程设计报告 <连连看> 项目设计报告 专 业: 软件工程 班 级: 07级2班 姓 名: 二00九 年 七 月 二十一 日 目 录 1.项目设计目的.意义-------- ...

  9. Java课程设计-家庭财政管理软件

    [摘要] 家庭理财管理系统是通过信息管理系统的方式记录和管理家庭日常的收入.支出和理财明细,能科学有效的管理家庭的财政情况.随着家庭平均消费水平的增加,很多家庭都面临的财务紧张的问题,如不能合理有效的 ...

最新文章

  1. 李彦宏:汽车工业面临无人驾驶百年变局
  2. c++开发中,调试排查问题总结
  3. 在做自动化测试之前你需要知道的,转自:http://www.cnblogs.com/fnng/p/3653793.html
  4. 南师大附中2021高考成绩查询,2021高考倒计时,你有一份师大附中专属回忆录待查收~...
  5. ubuntu软件中心打不开Python error
  6. 陌陌探探真人头像过网图,探探真实头像蓝V怎么弄?
  7. jar包打包成exe安装包
  8. TQ2440中断系统
  9. ?Agilent.GoldenGate.RFIC.Simulation.2015.01.v4.9.0.Win64 1CD(RTL验证标准)
  10. img标签,显示服务器图片
  11. 如果你喜欢平板又是QWERTY键盘控 联想推“握柄键盘”满足你
  12. pu膜刻字膜热转印膜在衣服上的烫印参数
  13. 第二十二章 opengl之高级OpenGL(几何着色器)
  14. mysql server mirro_Docker下安装MySQL Server镜像
  15. 基于php的宠物医院管理系统的设计与实现,php宠物医院信毕业设计息管理系统
  16. 计算商场折扣 (分支)
  17. hdu 5671(模拟)
  18. Mac 连上无线网络,无法上网
  19. 仿迅雷播放器教程 -- 权威界面库对比 (8)
  20. 有人物联网485转网口模块网口调试助手1035未知错误

热门文章

  1. [imx6 VPU]硬解码+示例[ffmpeg获取海康rtsp h264流 QT显示]
  2. 如何看Mac电脑的具体CPU型号
  3. 如何在网页中添加 GitHub Corners
  4. word2CHM,做软件产品必备的说明书工具
  5. html5怎么写副标题,毕业论文副标题怎么写
  6. 读datasheet遇到的名词,Assert,De-assert,component
  7. 2020-11-01 Mybatis TypeAlise、resultMap、日志settings
  8. dpi、dp、sp、px、mm之间的关系
  9. Vue3生命周期函数的那些事
  10. FastQC 与 质控