package snake;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
public class GamePanel extends JPanel implements KeyListener{
int length;//蛇的长度
int[] snakeX=new int[600];
int[] snakeY=new int[500];
String direction;//方向
boolean isStart=false;
public GamePanel() {
init();
this.setFocusable(true);
this.addKeyListener(this);
}
public void init() {
length=3;
snakeX[0]=100;snakeY[0]=100;
snakeX[1]=75;snakeY[1]=100;
snakeX[2]=50;snakeY[2]=100;
direction="R";
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);//清屏
Data.header.paintIcon(this, g, 25, 11);
g.fillRect(25, 75, 850, 600);
if(direction.equals("R")){
Data.right.paintIcon(this,g,snakeX[0],snakeY[0]);
}else if(direction.equals("U")){
Data.up.paintIcon(this,g,snakeX[0],snakeY[0]);
}else if(direction.equals("L")){
Data.left.paintIcon(this,g,snakeX[0],snakeY[0]);
}else if(direction.equals("D")){
Data.down.paintIcon(this,g,snakeX[0],snakeY[0]);
};
for(int i=1;i<length;i++) {
Data.body.paintIcon(this,g,snakeX[i],snakeY[i]);
}
if(isStart==false) {
g.setColor(Color.white);
g.setFont(new Font("微软雅黑",Font.BOLD,40));
g.drawString("按下空格键开始游戏", 250, 350);
}
}
@Override
public void keyPressed(KeyEvent e) {
// TODO 自动生成的方法存根
int getCode=e.getKeyCode();
if(getCode==KeyEvent.VK_SPACE) {
isStart=!isStart;
repaint();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO 自动生成的方法存根
}
@Override
public void keyTyped(KeyEvent e) {
// TODO 自动生成的方法存根
}
}
ps:这是贪吃蛇游戏界面部分代码 在另外一个类StartGame里面主函数add了这个面板 里面的Data.right等是另外一个类中的图片资源 字面意思就是蛇的头部方向和身体
程序运行时 有时候按下空格键“按下空格开始游戏”这行字会消失 大部分时候按下没反应 后来的编程中只有字消失了程序才能正常运行 而且随着代码量的增加 程序运行成功的几率会减小 求大佬帮忙解决 这是什么引起的