为什么键盘不响应阿 操纵不了游戏

myfrist 2007-09-15 03:53:46
//<applet code=CrabPassRoad.class width=400 height=500 >
//</applet>
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CrabPassRoad extends JApplet implements Runnable{
Graphics g2;//前台图形
Image road;//道路图片
Image tank;//坦克图片
Image truck;//坦克图片
Image crab;//螃蟹图片
Image UFO;//UFO图片
Image rocket;//火箭图片
Image die;//被撞螃蟹图片
Image gameover;//游戏结束图片
Image img2;//后台缓冲区
int xCrab;//螃蟹坐标
int yCrab;
int xUFO;//UFO坐标
int xRocket;//火箭坐标
int xTank;//坦克坐标
int xTruck;//卡车坐标
int num;//生命数目
int score;//积分
int SuccessTimes;//成功通过街道次数
int sleepTime;//线程休眠时间
int speed;//速度等级
boolean st=true;//线程运行开关,为ture时线程运行
private Thread CrabThread;

public void start(){//创建并启动线程
if(CrabThread==null){
CrabThread=new Thread(this);
CrabThread.start();
}
}

public void stop(){//停止并销毁线程
if(CrabThread!=null){
CrabThread.stop();
CrabThread=null;
}
}
//键盘事件响应
public boolean processKeyEvent(KeyEvent evt,int key){

switch(key){
case Event.DOWN://向下建
yCrab +=40;
break;

case Event.UP://向上键
yCrab -=40;
break;

case Event.LEFT://向左键
xCrab +=40;
break;

case Event.RIGHT://向右键
xCrab -=40;
break;

}
repaint();
return true;
}

public CrabPassRoad(){//构造方法,设定初始值
xCrab=140;
yCrab=205;
xUFO=-80;
xRocket=320;
xTank=-80;
xTruck=320;
num=5;//你有5次机会
sleepTime=30;
speed=1;
}


public void run(){
do{
try{
repaint();
Thread.sleep(sleepTime);
}
catch(InterruptedException e){
}
} while(st);//为ture时线程运行,否则停止
}


public void destroy(){
}


public void init(){
road=getImage(getCodeBase(),"road.jpg");
tank=getImage(getCodeBase(),"tank.jpg");
crab=getImage(getCodeBase(),"crab.jpg");
truck=getImage(getCodeBase(),"truck.jpg");
die=getImage(getCodeBase(),"die.jpg");
rocket=getImage(getCodeBase(),"rocket.jpg");
UFO=getImage(getCodeBase(),"UFO.jpg");
gameover=getImage(getCodeBase(),"gameover.jpg");
img2=createImage(320,240);//创建后台缓冲区
g2=img2.getGraphics();

requestFocus();
setSize(320,240);
}

public void paint(Graphics g){
g2.drawImage(road,0,0,this);


if(xUFO<=320){//如果没有走到最左端
xUFO+=4;//则一直向前走
}
else{
xUFO=-80;//否则就回到出发起点
}
if(xRocket>=-80){//
xRocket-=3;//
}
else{
xRocket=320;//否则就回到出发起点
}
if(xTank<=320){
xTank+=2;
}
else{
xTank=-80;
}
if(xTruck>=-80){
xTruck--;
}
else{
xTruck=320;
}
g2.drawImage(UFO,xUFO,40,this);
g2.drawImage(rocket,xRocket,80,this);
g2.drawImage(tank,xTank,120,this);
g2.drawImage(truck,xTruck,160,this);
g2.drawImage(crab,xCrab,yCrab,this);
if(yCrab>40&&yCrab<80&&xCrab>=xUFO-40&&xCrab<=xUFO+80){
g2.drawImage(die,xCrab,yCrab,this);
try{
CrabThread.sleep(500);
}catch(InterruptedException e){
}
num--;
xCrab=140;
yCrab=205;
}
if(yCrab>80&&yCrab<120&&xCrab>=xRocket-40&&xCrab<=xRocket+80){
g2.drawImage(die,xCrab,yCrab,this);
try{
CrabThread.sleep(500);
}catch(InterruptedException e){
}
num--;
xCrab=140;
yCrab=205;
}
if(yCrab>120&&yCrab<160&&xCrab>=xTank-40&&xCrab<=xTank+80){
g2.drawImage(die,xCrab,yCrab,this);
try{
CrabThread.sleep(500);
}catch(InterruptedException e){
}
num--;
xCrab=140;
yCrab=205;
}
if(yCrab>160&&yCrab<200&&xCrab>=xTruck-40&&xCrab<=xTruck+80){
g2.drawImage(die,xCrab,yCrab,this);
try{
CrabThread.sleep(500);
}catch(InterruptedException e){
}
num--;
xCrab=140;
yCrab=205;
}
if(yCrab>205){
yCrab=205;//回到起点
}
if(yCrab<=4){//如果成功通过道路
yCrab=205;//
score+=100;//
SuccessTimes++;//
}
if(SuccessTimes==5){
if(sleepTime>=10){
sleepTime-=6;
if(speed<4){
speed++;
}
else{
speed=4;
}

}
else{
sleepTime=10;
}
num++;//命数加1
SuccessTimes=0;
}
if(num<0){//则游戏结束
g2.drawImage(gameover,0,0,this);
st=false;
}
g2.drawString("num="+num+"",10,10);
g2.drawString("score="+score+"",10,30);
g2.drawString("speed="+speed+"",60,10);




g.drawImage(img2,0,0,this);




}

public void update(Graphics g){
paint(g);
}
}
键盘事件不响应 怎么解决阿
...全文
128 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yong1pop 2007-09-15
  • 打赏
  • 举报
回复
在init中加监听就行了
aaa2003gf 2007-09-15
  • 打赏
  • 举报
回复
添加key监听,找本书都有的.
cursor_wang 2007-09-15
  • 打赏
  • 举报
回复
我没有看见你在哪里注册监听器.

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧