java 打字母游戏_java打字母的小游戏

这是自己做的第二个小游戏,有趣。

游戏规则:

从屏幕上方以一定速度掉下5个字母,然后你应当敲击键盘敲出最下方的字母,该字母为金色,若敲击正确,则加五分,否则减二十分。如果有字母离开屏幕,每个字母减20分。游戏开始为100分,当得分小于等于0时,游戏结束。注意:字母下降的速度会越来越快。

package mypro01;

import java.util.*;

import java.awt.*;

import java.awt.event.*;

class Main

{

public static void main(String[]args)

{

Frame w = new Frame();

w.setSize(1350, 700);

MyPanel my = new MyPanel();

w.add(my);

w.addKeyListener(my);

my.addKeyListener(my);

Thread t = new Thread(my);

t.start();

w.show();

}

}

class MyPanel extends Panel implements Runnable, KeyListener

{

int[]x = new int[5];

int[]y = new int[5];

char[]c = new char[5];

int score = 100;

int sleep=100;

long time=0;

MyPanel()

{

for (int i = 0; i<5; ++i)

{

x[i] = (int)(Math.random() * 1300+10);

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

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

}

}

public void paint(Graphics g)

{

int minn=-10,minpos=0;

for (int i = 0; i<5; ++i)

{

if(y[i]>minn)

{

minn=y[i];

minpos=i;

}

}

g.setFont(new Font("宋体",Font.BOLD,50)); //改变字体大小

for (int l = 0; l<5; ++l)

{

if(l!=minpos)

g.drawString("" + c[l], x[l], y[l]);

else

{

g.setColor(new Color(225,215,0));

g.drawString("" + c[l], x[l], y[l]);

g.setFont(new Font("宋体",Font.BOLD,50));

g.setColor(new Color(0,0,0));

}

}

int cs = score;

String s = "";

while (cs != 0)

{

s = (char)('0' + (cs % 10)) + s;

cs = cs / 10;

}

g.drawString(s, 30, 30);

}

@Override

public void keyPressed(KeyEvent arg0)

{

char n = arg0.getKeyChar();

int minn=-10,minpos=0;

for (int i = 0; i<5; ++i)

{

if(y[i]>minn)

{

minn=y[i];

minpos=i;

}

}

if(c[minpos]==n)

{

score+=8;

x[minpos] = (int)(Math.random() * 1300+10);

y[minpos] = 0;

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

}

else

score-=20;

repaint();

}

@Override

public void keyReleased(KeyEvent arg0)

{

}

@Override

public void keyTyped(KeyEvent arg0)

{

}

public void run()

{

if(score<=0)

return ;

while (true)

{

for (int i = 0; i<5; ++i)

{

y[i]+=5;

if (y[i]>700)

{

x[i] = (int)(Math.random() * 1300+10);

y[i] = 0;

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

score = score - 20;

}

}

try{

Thread.sleep(sleep);

}catch (Exception e) {};

repaint();

time++;

if(sleep>15&&time>10)

{

time=0;

sleep--;

}

if(score<=0)

return ;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值