代码如下

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练手代码大全手机版_20个Java练手项目,献给嗜血如狂的你

    过年了都放假了,宅在家给大家推荐一条由浅入深的JAVA学习路径,首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE 和 SSH 框架学习.最后再通过有趣的练手项目进行 ...

  2. java练手代码大全手机版_20个Java练手项目,献给嗜血如狂的人

    给大家推荐一条由浅入深的JAVA学习路径,首先完成 Java基础.JDK.JDBC.正则表达式等基础实验,然后进阶到 J2SE 和 SSH 框架学习.最后再通过有趣的练手项目进行巩固: JAVA基础 ...

  3. java练手代码大全手机版_java循环练习的简单代码实例

    ★打印九九乘法表 public class TestDemo { public static void main(String[] args){ for(int b=1;b<10;b++){ f ...

  4. 像素鸟java版_JAVA 像素鸟小游戏源码(支持俩人一起玩)

    [实例简介] [实例截图] 双人 像素鸟如下: [核心代码] package Flappybirid_1; import java.awt.image.BufferedImage; import ja ...

  5. 贪吃蛇 java下载_Java实现贪吃蛇游戏源码

    本文实例为大家分享了Java实现贪吃蛇游戏源码的具体代码,供大家参考,具体内容如下 1.StartGame package com.qiang.snake; import javax.swing.*; ...

  6. java大作业的打猎游戏_Java Swing打猎射击游戏源码

    Java Swing打猎射击游戏源码 代码如下package Game;import java.awt.Graphics;import java.awt.Image;import javax.swin ...

  7. java开发愤怒的小鸟_Java实现愤怒的小鸟AngryBirds游戏源码

    [实例简介] Java实现愤怒的小鸟AngryBirds游戏源码,可以直接运行! [实例截图] [核心代码] Java实现愤怒的小鸟AngryBirds游戏源码下载 └── [www.java1234 ...

  8. part1:推荐一些适合练手、课程设计、毕业设计的python小项目源码,无任何下载门槛

    人生苦短,我用python,随着python这些年的流行,很多人开始使用python来实现各种功能.下面推荐一些适合用来练手.大学生课程设计作业.大学生毕业设计的python小项目,尤其适合新手,源码 ...

  9. 《游戏学习》Java版仿windows扫雷小游戏源码

    项目代码目录结构 启动类 StartFrame  代码展示 import java.awt.BorderLayout; import java.awt.Font;import javax.swing. ...

  10. 三个练手的软件测试实战项目(附全套视频跟源码)偷偷卷死他们

    项目一:12306抢票项目 项目测试目的 学会Selenium定位web元素的方法 熟练浏览器调试工具使用 项目主体步骤 1) 人工走一遍流程,对自动化的流程心中有数 2) 按步骤拆分,然后对每一个小 ...

最新文章

  1. 了解生成对抗网络(GAN)
  2. RxJava使用(一)基本使用
  3. (史上最全)104个实用网络爬虫合集。
  4. The Trip On Abandoned Railway(线段树+树状数组)
  5. idea怎么设置代码提示不区分大小写_IntelliJ IDEA 这样设置动图,棒极了!
  6. 【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
  7. c lambda表达式 select 改变字段名称_大神是如何学习 Go 语言之浅谈 select 的实现原理...
  8. android webkit js脚本注入(js内部对象由java层构建)
  9. C++小游戏——迷宫
  10. android 黑名单中电话拦截
  11. 【Matlab函数知识点合集】新手入门第十四天
  12. Docker Engine 安装时遇到的坑
  13. 开源项目推荐:物联网消息引擎EMQ X/大数据平台TDengine/可视化平台Grafana/dgiot
  14. 晶振并联 1_10M电阻 稳定
  15. 洞见2021 中国企业服务年会高清大图来啦~!请查收
  16. 杰理之音箱版本 SDK200 单音 VCOMO 直推,喇叭没声音问题【篇】
  17. 软件压力测试图片60张,看图测压力,你抗压么?
  18. java龙世界禁忌之恋灵魂大殿_《龙世界-禁忌之恋》完美图文攻略
  19. 计算机组成原理实验:系统总线与系统接口
  20. 如果不坚持,到哪里都是放弃

热门文章

  1. LSF的使用方法总结
  2. 读后感:《走出软件作坊》51:幽幽一缕香
  3. Icebound and Sequence(等比数列公式的递归处理)
  4. BIOS设置 翻译中文教程
  5. PS图片上传图片 同时生成微缩图
  6. Snapde电子表格支持的文件格式
  7. 如何让你得声音洪亮结实有磁性
  8. 你想要的宏基因组-微生物组知识全在这(2020.11)
  9. 计算机搜不到word了,电脑word找不到路径
  10. JQuery常见命令查找网站