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);//显示窗体

}

三、运行截图

f83aa4b420254476109e3af8ad602216.png

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

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

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值