java打字母小游戏总结与收获,java:打字母小游戏demo

在一个300*400的窗体上,有随机产生的字母向下落。在键盘上敲字母,如果对了就消掉,初始成绩为1000分,每敲对一个字母加10分,如果字母落到屏幕下方,或者敲错,扣100分。

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Panel;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

public class MyPanel extends Panel implements Runnable, KeyListener {

int x[]=new int[10];

int y[]=new int[10];

char c[]=new char[10];

int score=1000;

MyPanel()

{

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

{

x[i]=(int)(Math.random()*300);

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

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

}

}

public void paint(Graphics g)

{

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

{

g.drawString(new Character(c[i]).toString(), x[i], y[i]);

}

g.setColor(Color.RED);

g.drawString("你的成绩是:"+score,5,15);

}

public void run()

{

while(true)

{

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

{

y[i]++;

if(y[i]>400)

{

y[i]=0;

x[i]=(int)(Math.random()*300);

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

score-=100;//字母掉到屏幕外扣分

}

}

try {

Thread.sleep(30);

}catch(Exception e) {}

repaint();

}

}

@Override

public void keyPressed(KeyEvent arg0) {

// TODO Auto-generated method stub

char keyC=arg0.getKeyChar();

int nowY=-1;

int nowIndex=-1;

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

{

if(keyC==c[i])

{

if(y[i]>nowY)

{

nowY=y[i];

nowIndex=i;

}

}

}

if(nowIndex!=-1)

{

y[nowIndex]=0;

x[nowIndex]=(int)(Math.random()*300);

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

score+=10;

}

else

{

score-=100;

}

}

@Override

public void keyReleased(KeyEvent arg0) {

// TODO Auto-generated method stub

}

@Override

public void keyTyped(KeyEvent arg0) {

// TODO Auto-generated method stub

}

}

import java.awt.Frame;

public class MyChar {

public static void main(String[] args) {

// TODO Auto-generated method stub

Frame w=new Frame();

w.setSize(300, 400);

MyPanel mp=new MyPanel();

w.add(mp);

Thread t=new Thread(mp);

t.start();

w.addKeyListener(mp);

mp.addKeyListener(mp);

// w.show();

w.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值