展开全部

package chen;

import java.awt.*;

import java.awt.event.*;

import java.awt.image.BufferedImage;

import java.util.Vector;

import javax.swing.JFrame;

public class keyTest extends Window implements KeyListener, Runnable {

int width, height;

BufferedImage buf;

Graphics gc;

boolean play = true;

Vector keys = new Vector();

int ok = 0, fail = 0, error = 0, sum = 0;

Font small = new Font("宋体", 0, 30);

Font big = new Font("宋体", 0, 50);

long time = System.currentTimeMillis();

keyTest(Frame f) {

super(f);

Dimension s = getToolkit().getScreenSize();

width = (int) s.getWidth();

height = (int) s.getHeight();

this.setBounds(0, 0, width, height);

this.buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

gc = buf.getGraphics();

this.setVisible(true);

this.setAlwaysOnTop(true);

this.buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

gc = buf.getGraphics();

new Thread(this).start();

}

public static void main(String s[]) {

JFrame help = new JFrame("打字练习");

help.setVisible(true);

help.setDefaultCloseOperation(3);

help.addKeyListener(new keyTest(help));

}

public void keyTyped(KeyEvent e) {

}

public synchronized void keyPressed(KeyEvent e) {

if (e.getKeyCode() == 27) {

play = false;

this.dispose();

System.exit(0);

}

char s = e.getKeyChar();

if (s >= 'a' && s <= 'z' |32313133353236313431303231363533e59b9ee7ad9431333262343063| (s >= 'A' && s <= 'Z')) {

String l = "" + s;

for (int i = 0; i < keys.size(); i++) {

if (l.equals(((oneChar) keys.elementAt(i)).s)) {

keys.removeElementAt(i);

ok++;

return;

}

}

error++;

}

}

public void keyReleased(KeyEvent e) {

}

@Override

public void update(Graphics g) {

gc.setColor(Color.BLACK);

gc.fillRect(0, 0, width, height);

gc.setColor(Color.red);

int l = (ok + error) > 0 ? (ok * 100 / (ok + error)) : 100;

gc.setFont(small);

gc.drawString("成功:" + ok + " 错误:" + error + " 失败:" + fail + " 正确率:" + l + "% 时间:" + (System.currentTimeMillis() - time) / 1000, 10, height - 30);

gc.setFont(big);

oneChar o;

for (int i = 0; i < keys.size(); i++) {

o = keys.elementAt(i);

gc.setColor(o.c);

gc.drawString(o.s, o.x, o.y += 6);

if (o.y > height - 10) {

fail++;

keys.removeElementAt(i);

}

}

g.drawImage(buf, 0, 0, null);

}

public void run() {

while (play) {

try {

sum++;

if (sum % 5 == 0) {

newchar();

}

Thread.sleep(80);

repaint();

} catch (InterruptedException ex) {

ex.printStackTrace();

}

}

}

private void newchar() {

keys.add(oneChar.getinstance(width));

}

}

package chen;

import java.awt.Color;

public class oneChar {

static java.util.Random r = new java.util.Random();

public static oneChar getinstance(int maxX) {

oneChar a = new oneChar();

int b = r.nextInt(26);

a.s = "" + (char) (b + (r.nextInt(4) > 1 ? 'a' : 'A'));

a.x = r.nextInt(maxX - 30);

a.c = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));

return a;

}

int x, y;

Color c;

String s;

}

参考资料:

如果您的回答是从其他地方引用,请表明出处

本回答被提问者采纳

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

java打字小游戏源码_求JAVA编写打字游戏源代码!相关推荐

  1. java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程

    作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...

  2. java企业人事管理系统源码_基于Java+SSH的企业人事管理系统

    需求分析 基于Spring, Struts2, Hibernate,Java 实现一个企业人事管理系统, 实现 权限管理.人事管理.考勤管理.数据统计等.主要功能为签到.请假.离岗及数据汇总的功能 本 ...

  3. java企业人事管理系统源码_企业人事管理系统完美版源代码 - 源码下载|行业应用软件|企业管理(财务/ERP/EIP等)|源代码 - 源码中国...

    企业人事管理系统完美版源代码 ............................\DataEnvironment.DCA ............................\DataEnv ...

  4. 最新酒桌小游戏喝酒小程序源码_带流量主源码下载

    2022最新酒桌小游戏喝酒小程序源码_带流量主 喝酒神器3.6,我修改增加了广告位,根据文档直接替换即可,原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码,然后关闭广告展示提交,通过后打 ...

  5. 2022最新酒桌小游戏喝酒小程序源码_带流量主

    2022最新酒桌小游戏喝酒小程序源码_带流量主 喝酒神器3.6,我修改增加了广告位,根据文档直接替换即可,原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码,然后关闭广告展示提交,通过后打 ...

  6. 宝宝起名神器小程序源码_支持多种流量主模式

    2022年马上到了,还不知道怎么给虎宝宝取名字么? 那么这款小程序源码就可以帮到你了,这款小程序支持输入姓氏自动起名. 不满意还可以点击换一换来找到满意的,支持起两个字或者三个字的名字. 另外也给该款 ...

  7. 新动态视频壁纸微信小程序源码_支持多种分类短视频-也有静态壁纸

    这是一款主打动态视频壁纸的一款微信小程序源码,当然啦,里面也是有静态壁纸的. 其实这款小程序也可以说是短视频小程序都可以,该款小程序全采集,另外支持多种流量主!! 下载链接: 新动态视频壁纸微信小程序 ...

  8. 小程序源码:王者战力查询,游戏扫码登录,王者巅峰信息查询等等支持流量主收益和CPS收益-多玩法安装简单

    这是一款特别强大的一款微信小程序源码 初步算了一下,该款小程序目前包含了几十个功能 具体功能如以下: 游戏扫码登录 王者战力查询 改名生成(多种生成方式) 头像框制作(N款模板) 王者巅峰数据查询 王 ...

  9. 图片拼图微信小程序源码_支持多模板制作和流量主

    介绍: 该款小程序支持多种流量主: 另外支持多种图形模板制作切割: 另外也支持长图合成等功能: 安装简单,新手容易上手,具体就不多说了大家自行研究吧!!!! 图片拼图微信小程序源码_支持多模板制作和流 ...

最新文章

  1. CTFshow 命令执行 web34
  2. 如何搭建一个 MySQL 分布式集群
  3. [leetcode] 103.二叉树的锯齿形遍历
  4. JavaScript实现单词首字母大写的方法集锦
  5. 在服务器端渲染完毕的 Angular Component,在客户端还会重新渲染一次吗?
  6. c语言建立一个链表,每个结点包括姓名和成绩,求C语言几道题的答案~~拜托了~~...
  7. linux乱码的文件怎么删除,如何删除Linux的乱码文件
  8. Oracle修改实例名SID
  9. 解决Spark集群无法停止
  10. Ubuntu 安装 H3C iNode 客户端
  11. scipy回归分析_业余时间学数据分析,如何快速上手
  12. “迷你版迪士尼乐园”是怎样炼成的?
  13. c语言身高和标准体重,c语言4-15 输出标准身高体重对照表
  14. 小程序的今天就是微信指数的明天
  15. C语言的进制转换以及算法实现
  16. MATLAB制作PPT(一):插入图片
  17. 金融机构数字化转型对央企建筑公司数字化转型的启示
  18. 前端三刺客---JS(WebAPI)
  19. matlab响应曲面设计,分析响应曲面设计
  20. 电脑每次重启总是会进行磁盘检查

热门文章

  1. (扩展)BSGS与高次同余方程
  2. 如何寻找数组中最大值与最小值(取双元素法)
  3. 老子研究文献知识发现数据竞赛
  4. 力扣6. Z 字形变换
  5. 大饱眼福,52个数据可视化图表鉴赏
  6. 启用vsftpd日志及其解读
  7. 产品硬件成本分析_硬件项目中的错误成本
  8. 更快、更 Pythonic 的 PyTorch 2.0 | 非常值得期待
  9. 高德地图各种摄像头图标_【高德地图上的摄像头资讯】高德地图上的摄像头足球知识与常识 - 足球百科 - 599比分...
  10. Windows-to-Linux roadmap: Part 2. Console crash course