您的位置:首页 > 编程语言 > Java开发

Java GUI编程贪吃蛇小游戏实现3 让小蛇动起来

2020-06-01 04:18 417 查看

让小蛇动起来

  • 面板类实现两个接口
public class GamePanel extends JPanel implements KeyListener, ActionListener {
  • 重写方法
//键盘监听事件
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();//获得键盘按键是哪一个
if (keyCode==KeyEvent.VK_SPACE){//如果按下的是空格键
isStart=!isStart;//取反
repaint();
}
//小蛇移动
if (keyCode==KeyEvent.VK_UP){
fx="U";
}else if (keyCode==KeyEvent.VK_DOWN){
fx="D";
}else if (keyCode==KeyEvent.VK_LEFT){
fx="L";
}else if (keyCode==KeyEvent.VK_RIGHT){
fx="R";
}
}

@Override
public void keyReleased(KeyEvent e) {

}
@Override
public void keyTyped(KeyEvent e) {

}
//事件监听-----需要通过固定时间来刷新
@Override
public void actionPerformed(ActionEvent e) {
if (isStart){//如果游戏是开始状态,就让小蛇动起来
//移动
for (int i = length-1; i > 0 ; i--) {//后一节移到前一节的位置
snakeX[i]=snakeX[i-1];
snakeY[i]=snakeY[i-1];
}
//走向
if (fx.equals("R")){
snakeX[0]=snakeX[0]+25;
//边界判断
if (snakeX[0]>850){
snakeX[0]=25;
}
}else if (fx.equals("L")){
snakeX[0]=snakeX[0]-25;
//边界判断
if (snakeX[0]<25){
snakeX[0]=850;
}
}else if (fx.equals("U")){
snakeY[0]=snakeY[0]-25;
//边界判断
if (snakeY[0]<75){
snakeY[0]=650;
}
}else if (fx.equals("D")){
snakeY[0]=snakeY[0]+25;
//边界判断
if (snakeX[0]>650){
snakeX[0]=75;
}
}
repaint();//重画
}
timer.start();//定时器开启
}
  • 初始化构造器添加代码
public GamePanel(){
init();
//获得焦点和键盘事件
this.setFocusable(true);
this.addKeyListener(this);
timer.start();//游戏一开始定时器就启动
}
  • 设置定时器
Timer timer=new Timer(100,this);//100毫秒执行一次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: