Tonyu System 1 - wiki


←目次次→チュートリアルWikiトップ

チュートリアル - 実践編 - シューティングゲーム (1/11)

自機を動かす

まず、「ファイル」>「メインメニュー」で最初の画面に戻ってください。

return-main.png

新規プロジェクトを参考に新規ページを作成してください。

自機を作る

自機を作ってみましょう。オブジェクトを作るを参考にオブジェクトを作成します

mkmychar.png

オブジェクトのキャラクタパターンを指定するを参考に、自機のパターンを指定します。
先ほど用いた"Projects"フォルダの下のSample.bmpを使います

sel-patmy.png

自機の動きを定義する

自機をダブルクリックし、次のように入力します。

extends SpriteChar;
while(1) {
  if (getkey(39)>0) x=x+3;
  if (getkey(37)>0) x=x-3;
  update();
}

自機の位置は画面下のほうがよいので、ドラッグして移動しておきます。 実行してみましょう。カーソルキーの右と左で自機を動かせます。

まず

while(1) {...

について解説します。
whileは()内の条件が成り立っている間、次の{}内を実行するものですが、条件のところに 1と書いてあります。
1というのは「いつでも成り立つ」といった意味があります。
つまりwhile(1)と書くと、その後ろの処理を永久に行うことになります。(参考:while)

次に、その永久に繰り返される処理の内容を解説していきます。

getkey(x)は、キーが押されているかどうかの判定を行います。
xは調べたいキーの番号で 39がカーソルキーの右, 37が左です

getkey(x)はキーの状態によって、次のような値を表します

  • 0:押されていない
  • 1:今押されたばかり
  • 2以上:押しっぱなしになっている

※ 他のキーの状態を調べたい場合はgetkeyを参照してください

以上をふまえて、移動の仕組みをまとめると、次のようになります。

  if (getkey(39)>0)   x=x+3;
     ↑右がおされたら ↑右に移動
  if (getkey(37)>0)   x=x-3;
     ↑左がおされたら ↑左に移動

画面はみだし判定

ところで、このままだと右端や左端にはみだしてもそのまま画面外を移動できてしまうので、次のように変更します

extends SpriteChar;
while(1) {
  if (getkey(39)>0 && x<$screenWidth) x=x+3;
  if (getkey(37)>0 && x>0) x=x-3;
  update();
}

このように && で条件をつなげると「~かつ~ならば」という記述ができます。

  if (getkey(39)>0 && x<$screenWidth)                  x=x+3;
     ↑右がおされて ↑かつ、画面右端に到達してないなら ↑右に移動
  if (getkey(37)>0 && x>0)                             x=x-3;
     ↑左がおされて ↑かつ、画面左端に到達してないなら ↑左に移動

←目次次→チュートリアルWikiトップ