java打字小游戏_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);//显示窗体
}
三、运行截图
更多有趣的经典小游戏实现专题,分享给大家:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java打字小游戏_java实现打字游戏小程序相关推荐
- java fly bird小游戏_java swing实现的小游戏flybird源码附带视频配置修改教程
大家好,今天给大家演示一下由Java swing实现的一款小游戏flybird,该游戏操作比较简单,点击鼠标确保小鸟不要触碰到柱子即可,该游戏可运行在Java环境下,jdk版本不限,下面我们来看看如何 ...
- java数字猜大小游戏_java实现猜数字小游戏
java实现猜数字游戏 随机给定一个数字,猜大小直到正确 package com.swift; import java.util.Random; import java.util.Scanner; p ...
- java生命小游戏_Java修炼——飞机生存小游戏
在学习了java入门的课程之后,自己动手跟着老师写的一个小游戏,用的是Frame.总共有七个类. 1.飞机游戏的主窗口(MyGameFrame)继承Frame. package com.bjsxt.p ...
- java做小窗体_java实现简单窗体小游戏----球球大作战
java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: 坐标.大小.颜色.方向.速度 2.抽象类:Ball 设计类:BallMain-创建窗体 BallJPanel-画小球 ...
- java入门第六天课程_Java基础学习第六天 小游戏
/** * 游戏开始 * @author LENOVO * */ public class Game_Start { public static void main(String[] args) { ...
- java与3d建模_java和3d游戏建模哪个?有没有3d建模转java或java转3的建模大佬给我指点一下...
大三了,对于以后就业,学习方向有点迷茫,有没有3d建模转java或java转3的建模大佬给我指点一下,非常感谢.计算机专业的,学校主学的java,由于前几年没好好学,现在什么都不会,现在知道学习了,暑 ...
- java扫雷源代码思路_java实现扫雷游戏
初学Java,写了一个扫雷代码来锻炼一下自己的代码能力. 一.代码思路 代码思路很重要,如果事先就想好了代码思路,那么写这一个代码肯定是事半功倍,比在哪里瞎打要强不知道多少. 经过思考,觉得可以创建一 ...
- java赛马游戏_Java多线程赛马游戏
[实例简介] 自己用java写的一个赛马的小游戏,用到了多线程和java swing ,分享给大家! [实例截图] [核心代码] cu0vk0 └── 赛马 └── smGame ├── bin │ ...
- java猜数字游戏_java猜数字游戏
java猜数字游戏要求:1.在100-999中输入任意数字,有10次猜的机会,期间会被告知猜大了.猜小了.猜对了.当10次机会用完,游戏结束.2.任意时候按S可开始或重新开始,按Q可退出.我... j ...
最新文章
- java中怎样避免方法被重写
- C#中Split用法 转
- 下载 | 新版Java开发手册有哪些亮点?
- 过滤器filter,监听器listener
- DOM中Property与Attribute的区别
- bzoj4602 [Sdoi2016]齿轮 边权并查集
- JSP 获取访问者真正的IP地址
- 数据的实操与测试|附代码(全了)
- 用python自动化玩游戏封号吗_用 Python 自动化办公能做到哪些有趣或有用的事情?...
- python爬虫判断cookie过期_当爬虫遇到cookie失效,怎样处理?
- TensorFlow 辨异 —— tf.placeholder 与 tf.Variable
- HDU 1556 Color the ball 线段树
- 将RP文件导出为HTML文件
- 新成员入群监控自动发送邮件效果如何实现?
- 2022年黑客书籍推荐
- At least one JAR was scanned for TLDs yet contained no TLDs.
- Scons入门指南 使用教程 笔记
- Idea 中出现:运行 Test 时出错。命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行,然后重新运行。
- Android 与 Chrome OS 中针对大屏幕设备的更新
- 高质量 ppt 免费下载网站
热门文章
- Win10 没有激活,如何改变任务栏位置
- numpy.arctan, math.atan, math.atan2的区别
- HDU2066---------Dijkstra算法代码
- can't find compiler executable in your configured search path's for GUN GCC Complier的应对办法
- django实现证件照换底色后端和小程序(第三周学习记录)
- python汇率转换代码_python 实现一个图形界面的汇率计算器
- Cheat Enginee(CE)的详细使用指南~包含下载安装教程以及核心功能讲解
- 设计一个长方形类。成员变量包括:长度和宽度,成员函数除包括计算周长和计算面积外, 还包括用set方法来设置长方形的长度和宽度,以及用get的方法来获得长方形的长度和宽度 最后,编写一个测试程序来测试所
- pitfall fields
- 在Linux系统中安装JDK