java实现打字游戏小程序

 更新时间:2020年10月26日 15:25:10   作者:xxxxxxxdl  
这篇文章主要为大家详细介绍了java实现打字游戏小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现打字游戏小程序的具体代码,供大家参考,具体内容如下

一、设计思路

1.创建一个窗体
2.在窗体上放置一个面板,用paint方法画出英文字母,随机放置字母位置,并随时间自动下落
3.设置得分扣分机制
4.在面板上添加键盘监听器,输入正确得分,输入错误则扣分
ps:面板和监听器用一个类实现(这样简单方便)

二、具体实现

MyPanel.java

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; /** * 继承Panel类,Panel是Java中的面板类。基本上要操作窗体都会继承此类 * */
public class MyPanel extends Panel implements KeyListener{ 
 int x[] = new int[10];//储存随机字母x轴 
 int y[] = new int[10];//储存随机字母y轴 
 char c[] = new char[10];//储存随机字母 
 int integral =1000;//初始1000积分 
 Color p[] =new Color[10];//用来存储颜色 
 public MyPanel() { 
 for (int i = 0; i < 10; i++) { 
 x[i]=(int)(Math.random()*300);//0-300 
 y[i]=(int)(Math.random()*50);//0-50 
 c[i]=(char)(Math.random()*26+97);//随机字母 
 p[i]=getRandColorCode();//获取十六进制的颜色代码.例如 "#6E36B4" 
 } 
 } /** * 复写Panel类的paint方法 */ 

 public void paint(Graphics g) { 
 if (integral>0) {//如果成绩>0,才能进来 
 for (int i = 0; i < 10; i++) {//十个英文字母 
 g.setColor(p[i]);//设置元素颜色 
 g.setFont(new Font("TimesRoman", Font.PLAIN, 20)); //设置字体,大小 //1.出现的元素,2.元素的x轴,3.元素的y轴 
 g.drawString(new 
 Character(c[i]).toString().toUpperCase(),x[i],y[i]);//画出面板上的字母图像 
 }  
 //显示积分在屏幕上 
 g.setColor(Color.red); 
 g.setFont(new Font("TimesRoman", Font.PLAIN, 20)); 
 g.drawString("你的成绩是:"+integral, 10, 30);   
 donghua();  
 }else {//成绩<0,游戏结束 
 g.setColor(Color.red); 
 g.setFont(new Font("TimesRoman", Font.PLAIN, 30)); 
 g.drawString("GAME OVER", 50, 170); 
 } 
 } 

 public void donghua() { 
 for (int i = 0; i < 10; i++) {//对十个字母一直检测,如果没有超过面板就纵坐标+1,若超过了从顶部就重新生成字母 
 y[i]++;//字母的y轴 加1,既往下移动1个位置 
 if (y[i]>370) {//窗体边框占有一部分像素,所以设置370即可  
 y[i]=0;//设置该字母的纵坐标为0  
 x[i]=(int)(Math.random()*300);  
 c[i]=(char)(Math.random()*26+97);  
 integral-=100;//积分-100 
 } 
 try {  
 Thread.sleep(5);//暂停5毫秒,控制字母下落的速度, 
 } 
 catch (InterruptedException e) {}  
 repaint();//重新绘制画面 
 } 
 } //键盘监听器 

 public void keyPressed(KeyEvent e) { 
 char keyC = e.getKeyChar(); 
 int stat=-1;//存储最下面字母的值 
 int nowIndex=-1;//存储最下面字母的下标 
 for (int i = 0; i < 10; i++) {//找出所有匹配字母处于最下面的字母 
 if (keyC==c[i]) { 
 if (y[i]>stat) {//第一次进来时,必定大于,  
 stat=y[i];//记录坐标值  
 nowIndex=i;//记录字母的下标 
 } 
 } 
 } 
 if (nowIndex!=-1) {//如果!=-1,证明输入正确,nowIndex为最下面的字母的下标,重新生成。积分+100 
 y[nowIndex]=0; 
 x[nowIndex]=(int)(Math.random()*300); 
 c[nowIndex]=(char)(Math.random()*26+97); 
 integral+=100;//积分+100 
 }else {//如果==-1,证明输错了。积分-100 
 integral-=100;//积分-100 
 } 
 } 

/**  * 获取十六进制的颜色代码.例如 "#6E36B4" ,  * @return String  */ 

 public static Color getRandColorCode(){  
 int r,b,g; 
 r=(int)(Math.random()*250); 
 b=(int)(Math.random()*250); 
 g=(int)(Math.random()*250); 
 Color c =new Color(r, b, g); 
 return c; } 

 public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } 
 public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub }}

MyTyping.java

import java.awt.Frame;
import java.awt.event.WindowEvent; 
import javax.swing.JFrame;
import javax.swing.WindowConstants; 
public class MyTyping { 
/** 思路: 
1.一个窗体 
2.在窗体绘制元素(随机出现的字母) 
3.加入键盘事件 
4.加入计数器(分数)  
5.匹配键盘录入字母和屏幕上的字母 
一致:消除,并且从最上面重新生成.积分+ 
不一致:不消除,积分- 
没录入:不消除,积分- 
6.积分<0,游戏结束 */ 

public static void main(String[] args) { 
JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点击x关闭退出程序 
f.setLocationRelativeTo(null);//窗体置中 
f.setSize(300, 400);//设置窗体大小 
MyPanel p = new MyPanel(); 
f.add(p);//将面板放入窗体中 
f.addKeyListener(p);//注册键盘事件 
p.addKeyListener(p);//注册键盘事件 
f.setVisible(true);//显示窗体  
}

三、运行截图

更多有趣的经典小游戏实现专题,分享给大家:

C++经典小游戏汇总

python经典小游戏汇总

python俄罗斯方块游戏集合

JavaScript经典游戏 玩不停

javascript经典小游戏汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Mybatis中的mapper是如何和XMl关联起来的

    Mybatis中的mapper是如何和XMl关联起来的

    这篇文章主要介绍了Mybatis中的mapper是如何和XMl关联起来的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Java SpringMVC 集成静态资源的方式你了解吗

    Java SpringMVC 集成静态资源的方式你了解吗

    本篇文章主要介绍了SpringMVC集成静态资源的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-10-10
  • Java面试基础之TCP连接以及其优化

    Java面试基础之TCP连接以及其优化

    这篇文章主要给大家介绍了关于Java面试基础之TCP连接以及其优化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • Java基于Base64实现编码解码图片文件

    Java基于Base64实现编码解码图片文件

    这篇文章主要介绍了Java基于Base64实现编码解码图片文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • SpringMVC 限流的示例代码

    SpringMVC 限流的示例代码

    这篇文章主要介绍了SpringMVC 限流的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 基于Java代码实现游戏服务器生成全局唯一ID的方法汇总

    基于Java代码实现游戏服务器生成全局唯一ID的方法汇总

    我们在做服务器系统开发的时候,为了适应数据大并发的请求,需要插入数据库之前生成一个全局的唯一id,纠结全局唯一id怎么生成呢?下面小编给大家分享Java代码实现游戏服务器生成全局唯一ID的方法汇总,涉及到优劣势方面的知识点,对此感兴趣的朋友一起看看吧
    2016-10-10
  • SpringBoot获取http数据、打印HTTP参数的4种方式

    SpringBoot获取http数据、打印HTTP参数的4种方式

    Java的话本地打断点可以调试获取rest入参,但是在生产环境可能我们获取入参(Http header/parameter)可能就没有那么的轻松了,所以本文给大家介绍了SpringBoot获取http数据、打印HTTP参数的4种方式,需要的朋友可以参考下
    2024-03-03
  • 详解JVM系列之对象的锁状态和同步

    详解JVM系列之对象的锁状态和同步

    锁和同步是java多线程编程中非常常见的使用场景。为了锁定多线程共享的对象,Java需要提供一定的机制来实现共享对象的锁定。当第二个线程进入同一个区域的时候,必须等待第一个线程解锁该对象。JVM是怎么做到的呢?快来一起看看吧。
    2021-06-06
  • JAVA图片水印开发案例详解

    JAVA图片水印开发案例详解

    水印开发是web开发中一种比较常见的功能,实现的代码很简单,这篇文章主要介绍了JAVA图片水印开发案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Java线程池框架核心代码解析

    Java线程池框架核心代码解析

    这篇文章主要针对Java线程池框架核心代码进行详细解析,分析Java线程池框架的实现ThreadPoolExecutor,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论