本节我们将通过编程让小鸟再按下空格键时飞起来,通过按空格键的频率来控制小鸟的飞行高度。

一:判断空格键是否按下

编辑Flappy bird的代码,在该class里再添加一个spacePressed()方法,返回空格键是否按下:

public boolean spacePressed(){

       boolean pressed = false;

       if(Greenfoot.isKeyDown("space")){

            pressed = true;

       }

       return pressed;

   }

二、修改act()方法,如果空格键按下,小鸟飞起来

在该方法的第一行添加如下程序,如果空格键按下,那么修改变量的值为-3,这个数字越小,小鸟会飞的越高。(因为在greenfoot中,世界的最上边缘y坐标是0,往下y坐标不断增加,所以将y减小就会向上移动)

   //如果按下空格,y坐标减小,实现向上飞

   if(spacePressed()){

       g=-3;//数字越小飞的越高

   }

程序截图如下:

Greenfoot制作flappybird游戏[三]

修改完成后,在运行程序看一下,是不是按下空格键小鸟就飞起来了,不过我们会发现一个bug,如果一直按着空格键不放,小鸟就一直往上飞,而不是按一下它往上飞一下。接下来我们要进一步修改程序,完善功能。

三、增加一个变量,来判断空格键是否是一直按下状态

private boolean haspressed = false;

修改spacePressed()方法,如果空格键按下,将haspressed设置为true,若一直未松开按键,那么下一次该方法将不再返回true。

public boolean spacePressed(){

       boolean pressed = false;

       if(Greenfoot.isKeyDown("space")){

           if(!haspressed){//如果一直没有松开空格键,不再返回true

               pressed = true;

           }

           haspressed = true; //已经按下了空格键

       }else{

           haspressed = false;

       }

       return pressed;

   }

经过这样的修改之后,如果一直按着空格键效果跟按下一次是一样的,大家试试看。

Greenfoot制作flappybird游戏[三]