Advertisement

java打字小游戏_java实现打字游戏小程序

阅读量:

本篇文章向大家展示了如何利用Java语言开发一个简单的打字小游戏的完整代码片段,并为方便参考提供了详细说明和使用说明

一、设计思路

1.创建一个窗体

在窗体中设置一个面板区域,并使用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代表的是一个用于显示界面组件的对象. 通常在操作窗体时会使用到此类对象. */

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)); //设置字体样式为'TimesRoman'、字体大小为20磅 //1.设置字体样式为'TimesRoman'、大小设为20磅 //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) {//持续扫描十个字母
if (currentY <= panelHeight) {
currentY++;
} else {
currentY = 0;
}
}

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) {//当 nowIndex 不等于 -1 时
// 如果 nowIndex != -1,则验证输入有效
int currentIndex = nowIndex;
// 现在表示最下面一个字符的位置索引
// 重置内容以开始新的循环
resetContent();
// 触发积分奖励机制
triggerIntegralReward();
}

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.setDefaultWindowExitStrategy(ExitStrategy.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);//显示窗体

}

三、运行截图

75d87880848ee1a5669ab8739706a7bc.png

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

以上就是全文的所有内容,请期待能为各位同学的学习带来便利

全部评论 (0)

还没有任何评论哟~