Java GUI编程贪吃蛇小游戏实现5 失败判定 积分系统

失败判定

添加状态

boolean isFail=false;//游戏失败状态

paintComponent方法添加代码

if (isFail){
            g.setColor(Color.red);
            g.setFont(new Font("微软雅黑",Font.BOLD,40));//设置字体
            g.drawString("失败,按下空格重新开始游戏",300,300);
        }

keyPressed事件改写代码

if (keyCode==KeyEvent.VK_SPACE){//如果按下的是空格键
            if (isFail){
                //重新开始
                isFail=false;
                init();
            }else{
                isStart=!isStart;//取反
            }
            repaint();
        }

actionPerformed方法

if (isStart&&isFail==false){//如果游戏是开始状态,就让小蛇动起来
            //吃食物
            if (snakeX[0]==foodx&&snakeY[0]==foody){
                length++;//长度+1
                //再次随机食物
                foodx=25+25*random.nextInt(34);
                foody=75+25*random.nextInt(24);
            }

            //移动
            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;
                }
            }

            //失败判断
            for (int i = 1; i < length; i++) {
                if (snakeX[0]==snakeX[i]&&snakeY[0]==snakeY[i]){
                    isFail=true;
                }
            }
            repaint();//重画
        }
        timer.start();//定时器开启
    }

积分系统

定义成绩

int score;//成绩

init()方法里初始化分数

score=0;

paintComponent方法添加代码画出积分

//画积分
        g.setColor(Color.BLACK);
        g.setFont(new Font("微软雅黑",Font.BOLD,18));//设置字体
        g.drawString("长度"+length,750,35);
        g.drawString("分数"+score,750,50);
原创文章 31 获赞 31 访问量 831

猜你喜欢

转载自blog.csdn.net/caixuanji/article/details/106153123