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


//@pnavi
[[←前>敵の動きに変化をつける]]  [[次→>弾、爆発を削除する]]  [[トップ>シューティングゲームの作成]]

**得点を表示する [#ucac1aac]
***文字オブジェクトを作る [#s13e1b43]

やっつけた敵に応じて得点を表示するようにしましょう。

まず得点を表示するためのオブジェクトを作ります。[[オブジェクトを作る>オブジェクトを作る]]を参考にオブジェクトを作成します。
「オブジェクトの種類」を「テキスト」にします。

&ref(newtext.png);

> ''間違えて「テキスト」でなく、「スプライト」でオブジェクトを作ってしまったら....''
>
>この場合、オブジェクトをダブルクリックし、プログラム先頭の extends SpriteChar;を  >extends  TextChar ; に変更し、一回実行し停止させるとテキストオブジェクトに変わります。

オブジェクトをダブルクリックして、次のように入力します。

//prog


 extends TextChar;
 $score=0;
 while(1) {
   text="Score:"+$score;
   update();
 }


***文字を表示する [#wf5b3cc9]

テキストオブジェクトは、文字をするためのオブジェクトです。
変数textに文字列を代入すると、その内容が画面に表示されます。
上のプログラムでは、文字列"Score:"の後ろに変数$scoreの内容を
付け加えたものをtextに代入しています。

***グローバル変数を使う [#m6cb6c47]

$scoreという変数には頭に"$"がついています。$で始まる変数はグローバル変数といい、どのオブジェクトからも参照できる変数です。
逆に、$がついていない変数は、そのオブジェクトが固有にもっている変数です。これをオブジェクト変数と呼びます。オブジェクト変数は、同じ名前でもオブジェクトが違っていれば全く別の変数となります。

$scoreをグローバル変数にしたのは、敵などの他のオブジェクトが得点計算を行う必要があり、表示をこの得点表示用のオブジェクトが行う必要があるからです。

とりあえず実行させてみると、画面上にScore : 0という文字が出ています。

***得点計算をする [#c09ccd57]

敵が弾にあたってやられた時に得点が増えるようにしましょう。
敵をダブルクリックし、次のように変更します。

//prog


 extends SpriteChar;
 function onDie() {
   appear(new Bomb(x , y ,$pat_Sample+4));
 }
 function atariHantei() {
   for (t in $chars) {
    if ( t is Tama && crashTo(t) ) {
      die();
      $score=$score+10;
    } 
   }
   if (crashTo($myChar)) $myChar.die();
 }
 nexty=rnd(50)+100;
 while (y<nexty) {
   y=y+2;
   atariHantei();
   update();
 }
 if (x<$myChar.x) vx=2; else vx=-2;
 while (y<$screenHeight) {
   y=y+3;
   x=x+vx;
   atariHantei();
   update();
 }


実行すると、敵をやっつけるたびに得点がふえていきます。

//@pnavi
[[←前>敵の動きに変化をつける]]  [[次→>弾、爆発を削除する]]  [[トップ>シューティングゲームの作成]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS