Gmaou 2019-06-23 16:38
浏览 371

贪吃蛇想弄一个暂停键按空格键不消失是为什么?

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 FramePanel extends JPanel implements KeyListener
{
int[] x=new int[750];//蛇横坐标
int[] y=new int[750];//蛇纵坐标
int len=3;//蛇长度
boolean isStarted = false;
String dir="R";//蛇初始向右

public FramePanel()
{
    this.setFocusable(true);
    initSnake();
    this.addKeyListener(this);;;//添加监听接口
}


public void initSnake()//初始化 
{
    len=3;
    dir="R";
    x[0]=100;
    y[0]=50;
    x[1]=75;
    y[1]=50;
    x[2]=50;
    y[2]=50;
}



public void paint(Graphics g) 
{
    this.setBackground(Color.BLACK);
    g.fillRect(15, 15, 850, 650);

    if(dir.equals("R"))//头
    {
        g.setColor(Color.WHITE);
        g.fillRect(x[0], y[0],15,15);
    }
    else if(dir.equals("L"))
    {
        g.setColor(Color.WHITE);
        g.fillRect(x[0], y[0],15,15);
    }
    else if(dir.equals("U"))
    {
        g.setColor(Color.WHITE);
        g.fillRect(x[0], y[0],15,15);
    }
    else if(dir.equals("D"))
    {
        g.setColor(Color.WHITE);
        g.fillRect(x[0], y[0],15,15);
    }


    for(int i=1;i<len;i++)//身体
    {
        g.setColor(Color.GRAY);
        g.fillRect(x[i], y[i], 15, 15);
    }

    if(!isStarted)
    {
        g.setColor(Color.RED);
        g.setFont(new Font("Verdana ",Font.BOLD,30));
        g.drawString("Pause", 300, 300);
    }

}



@Override
public void keyTyped(KeyEvent e) {
    int KeyCode = e.getKeyCode();
    if(KeyCode == KeyEvent.VK_SPACE) {
        isStarted = !isStarted;
        repaint();
        }
}

public void changeDir(int key) {
    switch(key){
        case KeyEvent.VK_LEFT :
            if(this.dir!="R"){ this.dir = "L";}
            break;
        case KeyEvent.VK_UP :
            if(this.dir!="D"){ this.dir = "U";}
            break;
        case KeyEvent.VK_RIGHT :
            if(this.dir!="L"){ this.dir = "R";}
            break;
        case KeyEvent.VK_DOWN :
            if(this.dir!="U"){ this.dir = "D";}
            break;
        }
}


@Override
public void keyPressed(KeyEvent e) {
    // TODO Auto-generated method stub

}


@Override
public void keyReleased(KeyEvent e) {
    // TODO Auto-generated method stub

}

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名
    • ¥65 汇编语言除法溢出问题