このWikiは古くなりました:新しいWikiへ移動

[[Tonyu基礎練習]] - ''練習:getkey文の応用''

練習:getkey文の応用

getkeyを応用することによって、ゲームの幅が広がります。

1.連射

 シューティングゲームを作成された方であれば、
「スペースキーが壊れてしまうのではないのだろうか・・・」
と危惧された人も多いと思います。

 弾を発射する度に、スペースキーを連打したのでは壊れても文句は言えません。
「連射」とはつまり
キーを押しっぱなしでも動作してくれる
ということです。

Jiki.tonyu

  
extends SpriteChar;
while(1){
  i++;
  if ( getkey(39)>0 && x<$screenWidth) x=x+3;
  if ( getkey(37)>0 && x>0) x=x-3; 
  if ( getkey(32)>0 && i>20) {
    appear(new Tama x,y,$pat_Tama+1));
    i=0;
  }
  update();
}

 このように、変数iのようなフレームカウントを記録する変数を用意してあげることで簡単に連射させることができます。

2.弾数制限

しかし、上の例では
「弾を立て続けに3つだして、その後はしばらく撃てない」
などの融通の利いた打ち方はできません。

 すこし改造してみましょう。

Jiki.tonyu

  
extends SpriteChar;
while(1){
  i++;
  j++;
  if (getkey(39)>0 && x<$screenWidth) x=x+3;
  if (getkey(37)>0 && x>0) x=x-3; 
  if (getkey(32)>0) {
    if(i>=10 && j=<50){
      appear(new Tama x,y,$pat_Tama+1));
      i=0;
    }
    if(j>70) j=0;
  }
  else {
    i=0;
    j=0;
  }
  update();
}

 このようにすると、シューティングゲームのような感じがします。for~in文でTamaを調べることなく画面上の弾をある程度まで制限させることは可能です。

3.気合弾

 気合弾とは、スペースキーを押しっぱなしにした後に大きな打撃を与える弾を撃つ攻撃方法のことです。「溜め打ち」とも言います。

 押しっぱなしにされている状態を上手に表現できれば問題は解決されそうです。

Jiki.tonyu

  
while(1) {
  if (($Joystick.right()>0 || getkey(39)>0) && x<$screenWidth) x=x+3;
  if (($Joystick.left()>0 || getkey(37)>0) && x>0) x=x-3; 
  if (($Joystick.button(0)>50) || getkey(32)==1) appear(new Tama(x,y,$pat_Tama+1));
  if ($Joystick.button(0)>50 || getkey(32)>50) kiai=1;
  if (kiai==1 && ($Joystick.button(0)==0 && getkey(32)==0)) {
    appear(new Kiai(x,y,$pat_Tama+2));
    kiai=0;
  }
  update();
}

 上のコードではジョイスティックにも対応してあります。
kiai
という変数を用意して、getkeyが50以上になるまで待っています。
スペースキーを離したときに、
「kiaiが1」だった場合に気合弾は発射され、
kiaiを0に初期化します。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-11-14 (火) 21:24:37 (2353d)