前面我写过关于键盘控制小球,以及模仿下雪的代码。此次算是对前一段时间知识的汇总。依旧很肤浅的没有面向对象的概念。还是俩个class。

MyChar 为主测试类,MyPanel为功能类。MyPanel已经不能称作画布类了,有些功能应该封装到别的类里面,以后讲解到知识点会逐渐过渡过去。

贴代码MyChar

package myChar;

import java.awt.*;

public class MyChar {

public static void main(String[] args){

Frame w = new Frame();

w.setSize(400, 600);

MyPanel mp= new MyPanel();

Thread t =new Thread(mp);

mp.addKeyListener(mp);

w.addKeyListener(mp);

t.start();

w.add(mp);

w.show();

}

}

依旧是老样子 先建一个窗口Frame 指定大小。然后添加进去一个MyPanel 实例。注意进行按键监听器注册addKeyListener。当然为了响应我们的按键操作我们还需要开启一个线程。最后记得将窗口显示show()出来。

MyPanel 代码

package myChar;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Panel;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

public class MyPanel extends Panel implements Runnable ,KeyListener{

int x[] = new int[10];

int y[] = new int[10];

char[] c = new char[10];

int score=10;

public void paint(Graphics g) {

for (int i = 0; i < 10; i++) {

g.drawString(new Character(c[i]).toString(), x[i], y[i]);

}

g.setColor(Color.red);

g.drawString("score:"+score, 5, 17);

}

MyPanel() {

for (int i = 0; i < 10; i++) {

x[i] = (int) (Math.random() * 400);

y[i] = (int) (Math.random() * 400);

c[i] = (char) (Math.random() * 26 + 97);

}

}

@Override

public void run() {

// TODO Auto-generated method stub

while(true){

for(int i=0;i<10;i++){

y[i]++;

if (y[i] > 600){

score--;

y[i] = 0;

x[i] = (int) (Math.random() * 400);

c[i] = (char) (Math.random() * 26 + 97);

}

}

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

repaint();}

}

@Override

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

@Override

public void keyPressed(KeyEvent e) {

int wantedcy=-1;//匹配的键入值的y

int wi=0;//匹配的y值的index值

for(int i=0;i<10;i++){

//进行十次循环如果匹配则记录下最下面的i值

if(e.getKeyChar()==c[i]){

if(wantedcy

wantedcy=y[i];

wi=i; }

}

}

//如果匹配 则消去最下面的那个数 且加分 否则减分

if(wantedcy>0){

y[wi]=0;

x[wi]=(int) (Math.random()*400);

c[wi]=(char) (Math.random()*26+97);

score++;}

else score--;

}

@Override

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}

}

MyPanel类extends了Panel类可以叫做画布类。-->>paint()执行绘图

实现了按键监听器接口 --->>KeyPress()对按下事件的处理

线程Runnable接口 -->>run()线程的功能实现。

首先在paint()方法体里 用循环画出10个随机字母.此处用ASCII指定。

在Ascii里‘a’=97。

在run()方法体里控制字母的y坐标进行自减。对于下降到底部的字母将其y坐标置零。还需要对系统发出重画请求。防止下降的太快 需要执行Thread.sleep()命令。速度自己调整。

对于按键处理则没什么好说的了主要就是循环时进行冒泡排序法排出y最大的相同字母以防止键入字母消去的不是最下面的字母。最后加入了积分制度。这个自己解决。

最后的效果就是这样的,画面感觉不好的可以自己调整或者进行android开发。那个界面比较好搭

java打字游戏_Java仿金山打字通打字母游戏《Java就该这样学》相关推荐

  1. java类似金山打字的键盘模拟_Java仿金山打字通打字母游戏《Java就该这样学》

    前面我写过关于键盘控制小球,以及模仿下雪的代码.此次算是对前一段时间知识的汇总.依旧很肤浅的没有面向对象的概念.还是俩个class. MyChar 为主测试类,MyPanel为功能类.MyPanel已 ...

  2. java swing游戏编程高仿金山打字教程-拯救苹果

    原文:java swing游戏编程高仿金山打字教程-拯救苹果 源代码下载地址:http://www.zuidaima.com/share/1786650901515264.htm 这几天学习了一下ja ...

  3. Dev-C++游戏创作之金山打字通(附带音乐)

    Hi!大家好!我是你们的编程小王子 最近一直拖着没更新,因为实在是没什么游戏思路.但是终于搞出来一个 金山打字通相信很多小伙伴们都认识,所以东西我就不多介绍,今天主要讲解音乐的播放(超级简单的)! / ...

  4. C语言编一个金山打字通小游戏,js实现金山打字通小游戏

    本文实例为大家分享了js实现金山打字通小游戏的具体代码,供大家参考,具体内容如下 字母匀速随机下落,键盘按下对应字母按键,字母消失重新生成新字母,新字母可帮助回调一部分初始高度 效果 1.页面内容 列 ...

  5. java 编写代码_Java 7:如何编写非常快速的Java代码

    java 编写代码 当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类. 我在一系列微基准测试中分析了ThreadLocalRan ...

  6. 仿金山打字通游戏,模拟键盘(java swing),提示输入,导入本地txt文件

    一.设计思路 1.用一个主窗体,在主窗体上放置两个子窗体,一个是文本面板,一个是模拟键盘面板. 2.文本面板分两个子面板,一个是已有文本,一个是输入文本,在带输入文本面板上添加文件监听器,动态改变下一 ...

  7. 仿金山打字通游戏 Java代码

    Code: package com.mxs.util;import javax.swing.*; import java.awt.*; import java.awt.event.*;public c ...

  8. java拯救苹果代码_java swing游戏编程高仿金山打字教程-拯救苹果

    import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import ...

  9. java d打字游戏_java实现快速打字游戏

    本文实例为大家分享了java实现打字游戏的具体代码,供大家参考,具体内容如下 import java.util.Random; import java.util.Scanner; public cla ...

最新文章

  1. 新视频超分算法来了:CVPR 2021 NTIRE 2021 冠军
  2. telegram 搭建 私聊机器人 转发私聊信息 保护隐私
  3. jni头文件自动生成
  4. P1290 欧几里德的游戏
  5. smpp客户端_SMPP Java示例(客户端)
  6. 住宅的结构有哪些形式
  7. oracle找到表的位置,查看Oracle表中的指定记录在数据文件中的位置
  8. mobi格式电子书_进阶能力 | 了解常见的电子书格式
  9. qt设置路径为应用程序启动路径
  10. 边缘检测之Canny
  11. LAMP让开放源代码软件更安全 PHP是例外
  12. 仿真软件有哪些测试,仿真怎么去仿?测试怎么去测?虽然是问答篇,干货也不少,不要错过了!...
  13. chromium 47 Chrome浏览器启动命令行参数
  14. Python数据可视化:平凡的世界
  15. 免费AZ-900学习资料
  16. 五个Google Play应用程序的有效ASO优化策略
  17. 【EI会议|检索稳定】2021信息、控制及自动化国际学术会议(ICICA 2021)
  18. 国内程序员的Linux开发平台-Deepin
  19. C++学习之路(六),C++primer plus 第七章 函数--C++的编程模块
  20. 视线追踪原理及论文讲解

热门文章

  1. 一体化伺服电机外接制动电阻线如何接
  2. Java 实现阿里云直播
  3. RK3288 添加backlight lcd接口
  4. vue 美团框架_美团小程序框架mpvue入门教程
  5. 从FrozenUI中学习移动端屏幕适配问题
  6. ui加Java岗位_本人不怕加班,java和ui学哪个好,打算以后往产品经理方向发展?...
  7. 个人收藏之 - 一些网站
  8. 大二暑假_SSM项目_培训教育板块
  9. 世界大学经济与商科排名:香港科大中国第一
  10. 国内发布首款骁龙笔记本,然过高的定价难打开市场