我写了个小游戏,但是按键没反应,求大神帮忙看一下

Daying__16 2017-10-09 08:46:57
package RGP走迷宫;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class MyPanel extends JPanel implements KeyListener,MouseMotionListener{
private static final long serialVersionUID=1L;
private static final int CHANG=480;
private static final int KUAN=480;
private static final int HANG=15;
private static final int LIE=15;
private static final int XIANGSU=32;
private static final int ZUO=0;
private static final int YOU=1;
private static final int SHANG=2;
private static final int XIA=3;
private static final int GUANQIA=2;
private static int grade;
private static int map[][][]= {{
{39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,},
{39,31,12,19,11,41,12,19,11,41,12,19,31,12,39,},
{39,19,42,19,42,19,42,19,42,19,42,19,19,42,39,},
{39,19,42,19,42,19,42,19,42,19,42,19,19,42,39,},
{39,19,42,19,42,19,42,19,42,19,42,19,19,42,39,},
{39,19,14,41,13,19,42,19,42,19,42,19,19,42,39,},
{39,19,19,19,19,19,42,19,42,19,14,23,41,22,39,},
{39,19,11,41,41,41,24,41,13,19,19,42,19,42,39,},
{39,11,13,19,19,19,19,19,19,19,19,42,19,42,39,},
{39,42,19,19,11,41,41,41,41,32,19,42,19,42,39,},
{39,21,41,41,13,19,19,19,19,19,19,42,19,42,39,},
{39,42,19,19,19,19,19,11,41,41,41,13,19,34,39,},
{39,42,19,11,41,12,19,42,19,19,19,19,19,19,39,},
{39,14,41,13,19,34,19,14,41,41,41,41,41,12,39,},
{39,39,39,39,39,39,39,39,39,39,39,39,39,29,39,}},
{
{39,39,39,39,39,39,39,39,39,39,39,39,39,29,39,},
{39,33,19,11,41,12,19,19,19,11,41,12,19,42,39,},
{39,42,19,42,19,14,41,41,41,13,19,42,19,42,39,},
{39,42,19,42,19,19,19,19,19,19,19,34,19,42,39,},
{39,14,41,22,19,11,41,23,41,41,12,19,19,42,39,},
{39,19,19,42,19,34,19,42,19,19,14,32,19,42,39,},
{39,19,19,42,19,19,19,14,41,12,19,19,19,42,39,},
{39,11,41,24,23,41,32,19,19,21,41,41,41,13,39,},
{39,42,19,19,42,19,19,11,41,13,19,19,19,19,39,},
{39,42,19,19,42,19,19,42,19,19,19,11,41,12,39,},
{39,21,32,19,14,41,41,24,41,41,41,13,19,42,39,},
{39,42,19,19,19,19,19,19,19,19,19,19,19,42,39,},
{39,21,41,12,19,19,19,11,41,41,12,19,19,42,39,},
{39,34,19,14,41,41,41,13,19,19,14,41,41,13,39,},
{39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,},}
};
private Image DIImage,DI11Image,DI12Image,DI13Image,DI14Image,DI21Image,DI22Image,
DI23Image,DI24Image,DI31Image,DI32Image,DI33Image,DI34Image,DI41Image,DI42Image;
private Image QIANGImage;
private Image RENImage;
private Image CHUImage;
private Image NEIImage;
private int x,y;
private int count;
private Thread xian;
private int FANG;
public MyPanel() {
setPreferredSize(new Dimension(CHANG,KUAN));
loadImage();
FANG=XIA;
x=1;
y=1;
grade=1;
count=0;
setFocusable(true);
addKeyListener(this);
xian=new Thread(new AnimationThread());
xian.start();
this.addKeyListener(this);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
DITU(g);
RENWU(g);
}
private void RENWU(Graphics g) {
switch(FANG) {
case XIA:
g.drawImage(RENImage, x*XIANGSU, y*XIANGSU, x*XIANGSU+XIANGSU,y*XIANGSU+XIANGSU,
count*XIANGSU,0,XIANGSU+count*XIANGSU,XIANGSU,this);
break;
case ZUO:
g.drawImage(RENImage, x*XIANGSU, y*XIANGSU, x*XIANGSU+XIANGSU,y*XIANGSU+XIANGSU,
(count+2)*XIANGSU,0,XIANGSU+(count+2)*XIANGSU,XIANGSU,this);
break;
case YOU:
g.drawImage(RENImage, x*XIANGSU, y*XIANGSU, x*XIANGSU+XIANGSU,y*XIANGSU+XIANGSU,
(count+4)*XIANGSU,0,XIANGSU+(count+4)*XIANGSU,XIANGSU,this);
break;
case SHANG:
g.drawImage(RENImage, x*XIANGSU, y*XIANGSU, x*XIANGSU+XIANGSU,y*XIANGSU+XIANGSU,
(count+6)*XIANGSU,0,XIANGSU+(count+6)*XIANGSU,XIANGSU,this);
break;
}

}
private void loadImage() {
ImageIcon icon=new ImageIcon(getClass().getResource("image/地面.png"));
DIImage = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面41.png"));
DI41Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面42.png"));
DI42Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面11.png"));
DI11Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面12.png"));
DI12Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面13.png"));
DI13Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面14.png"));
DI14Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面21.png"));
DI21Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面22.png"));
DI22Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面23.png"));
DI23Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面24.png"));
DI24Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面31.png"));
DI31Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面32.png"));
DI32Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面33.png"));
DI33Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/地面34.png"));
DI34Image = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/内墙.png"));
QIANGImage = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/人物.png"));
RENImage = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/出口.png"));
CHUImage = icon.getImage();
icon=new ImageIcon(getClass().getResource("image/外墙.png"));
NEIImage = icon.getImage();
}
private void DITU(Graphics g) {
int i,j;
for(i=0;i<HANG;i++) {
for(j=0;j<LIE;j++) {
switch(map[grade-1][i][j]) {
case 41 :
g.drawImage(DI41Image, j*XIANGSU, i*XIANGSU, this);
break;
case 42 :
g.drawImage(DI42Image, j*XIANGSU, i*XIANGSU, this);
break;
case 11 :
g.drawImage(DI11Image, j*XIANGSU, i*XIANGSU, this);
break;
case 12 :
g.drawImage(DI12Image, j*XIANGSU, i*XIANGSU, this);
break;
case 13 :
g.drawImage(DI13Image, j*XIANGSU, i*XIANGSU, this);
break;
case 14 :
g.drawImage(DI14Image, j*XIANGSU, i*XIANGSU, this);
break;
case 21 :
g.drawImage(DI21Image, j*XIANGSU, i*XIANGSU, this);
break;
case 22 :
g.drawImage(DI22Image, j*XIANGSU, i*XIANGSU, this);
break;
case 23 :
g.drawImage(DI23Image, j*XIANGSU, i*XIANGSU, this);
break;
case 24 :
g.drawImage(DI24Image, j*XIANGSU, i*XIANGSU, this);
break;
case 31 :
g.drawImage(DI31Image, j*XIANGSU, i*XIANGSU, this);
break;
case 32 :
g.drawImage(DI32Image, j*XIANGSU, i*XIANGSU, this);
break;
case 33 :
g.drawImage(DI33Image, j*XIANGSU, i*XIANGSU, this);
break;
case 34 :
g.drawImage(DI34Image, j*XIANGSU, i*XIANGSU, this);
break;
case 19:
g.drawImage(QIANGImage, j*XIANGSU, i*XIANGSU, this);
break;
case 29 :
g.drawImage(CHUImage, j*XIANGSU, i*XIANGSU, this);
break;
case 39 :
g.drawImage(NEIImage, j*XIANGSU, i*XIANGSU, this);
break;
case 49 :
g.drawImage(DIImage, j*XIANGSU, i*XIANGSU, this);
break;
default: break;
}
}
}
}
public void NEXT() {
Graphics g = null;
if(grade>=GUANQIA) {
DUIHUA("恭喜你完成所有关卡!");
}
else {
grade++;
paintComponent(g);
}
}
private void DUIHUA(String str) {
JOptionPane.showMessageDialog(null, str,"提示",JOptionPane.ERROR_MESSAGE);
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP) YIDONG(SHANG);
if(e.getKeyCode()==KeyEvent.VK_DOWN) YIDONG(XIA);
if(e.getKeyCode()==KeyEvent.VK_LEFT) YIDONG(ZUO);
if(e.getKeyCode()==KeyEvent.VK_RIGHT) YIDONG(YOU);
repaint();
if(map[grade-1][x][y]==2) {
if(grade==GUANQIA) {
String str="恭喜通过第"+grade+"关!\n是否进入下一关?";
int type=JOptionPane.YES_NO_OPTION;
int i=0;
i=JOptionPane.showConfirmDialog(null, str,"过关",type);
if(i==1) System.exit(0);
else if(i==0) NEXT();
}
}
}
private boolean GUIZE(int x,int y) {
if(map[grade-1][x][y]==19||map[grade-1][x][y]==39) return false;
return true;
}
private void YIDONG (int event) {
switch(event) {
case ZUO:
if(GUIZE(x-1,y)) x--;
FANG =ZUO;
break;
case YOU:
if(GUIZE(x+1,y)) x++;
FANG =YOU;
break;
case SHANG:
if(GUIZE(x,y-1)) y--;
FANG =SHANG;
break;
case XIA:
if(GUIZE(x,y+1)) y++;
FANG =XIA;
break;
default: break;
}
}
private class AnimationThread extends Thread{
public void run() {
while(true){
if(count==1) count=0;
else if(count==0) count=1;
repaint();
try {
Thread.sleep(300);
}catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}

public static int getGrade() {
return grade;
}
public static int[][][] getMap() {
return map;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public void mouseDragged(MouseEvent arg0) {
}
public void mouseMoved(MouseEvent arg0) {
}
public static void main(String[] args) {
JFrame mi = new JFrame();
mi.setTitle("RGP走迷宫");
mi.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ) ;
mi.setVisible(true);
MyPanel panel=new MyPanel();
Container contentPane=mi.getContentPane();
contentPane.add(panel);
panel.setFocusable(true);
mi.pack();
}
}
...全文
164 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
李德胜1995 2017-10-09
  • 打赏
  • 举报
回复
高级。。。。。

62,614

社区成员

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

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