【Prominence3D】もよろしく!!
あのRPGツクールの開発部もおすすめする
2Dゲーム用の3Dエフェクト作成ソフト!!
無料体験版を是非触ってみてください!!
トップページ > HSPのひきだし > 完成
2013年04月07日

完成

Pocket

★を少しずつ増やす

★が一気に200個も飛んできたのではゲームになりません。

最初は3つくらいにしておいて、徐々に増えるようにしてみましょう。

表示される“数”が“変”わるので、新たに変数を用意します。

    ;フォントの設定
    font "MS ゴシック", 32

    ;表示される星の数
    star_num = 3
*メインループ
    redraw 0

【メモ】
変数名は何でもいいのですが、何かの数(個数)を表す変数は「○○num」という名前にすることが多いです。
numはナンバーの略ですね。

 

別に従わなくてもいいのですが、いつか他人が作ったプログラムを見る機会があった場合、
こういったルールを知っていると、コメントが書いてなくても何をする変数なのかわかりやすくなります。

次に、★の表示や移動を200回ずつ繰り返していましたが、これをstar_num回に修正します。

    ;星の移動
    repeat star_num
        star_x(cnt) -= star_speed(cnt)
    loop;

    星の表示
    color 255, 255, 0
    repeat star_num
    pos star_x(cnt), star_y(cnt)
    mes "★"
    loop

    ;★が左端に出た
    repeat star_num
    if(star_x(cnt) < -32){
        star_x(cnt) = 800     ;ふたたび右端へ
        star_y(cnt) = rnd(480-32)    ;高さはランダム
        star_speed(cnt) = rnd(5) + 2    ;速度もランダム
    }
    loop

    ;自機と★の衝突判定
    repeat star_num
    if((star_x(cnt) > player_x – 20) and ・・・・・・・・・・
        end     ;プログラム終了
    }

これで実行すると、★が3個だけ飛んでくると思います。

次に、★を増やします。

★が左端までたどり着いたら1個増えるようにしましょう。

star_numを+1すればいいだけです。

    ;★が左端に出た
    repeat star_num
    if(star_x(cnt) < -32){
        star_x(cnt) = 800             ;ふたたび右端へ
        star_y(cnt) = rnd(480-32)     ;高さはランダム
        star_speed(cnt) = rnd(5) + 2  ;速度もランダム
        star_num = star_num + 1    ;星を1個増やす
    }
    loop

実行してみてください。

これで、ほぼ完成です。

【メモ】
どんどん★が増えていって200個を超えるとプログラムは停止します。
配列を200個分しか用意してないからですね
しかし、私のキーボードさばきではどう頑張っても200個を超えることはなかったので、問題ないと思います。
もし、200個を超えてしまう可能性がある場合は、配列の個数をもっと増やす必要があります。

 

結果表示

★と接触したら、下図のような結果表示をしたいと思います
09_01
このウィンドウは「ダイアログボックス」と呼ばれるものです。

よくパソコンを使っていると、
「○○しますか?」と表示されて「はい」「いいえ」のボタンがあって…

っていうのを見かけますよね?

あれです。

ダイアログボックスを表示するには、次のように書きます。

dialog "タイトル", 種類, "表示内容"

種類は、「OKボタンだけ」とか「“はい”“いいえ”ボタンがある」とか選べます。

詳しくはヘルプ(F1キー)を見てください 。

今回はOKボタンだけでいいので、種類は0番になります。

タイトルは「"終了"」という文字。文字は""で囲むのを忘れないでください。

表示内容は「"★の数=" + star_num」となります。

文字の足し算ができるんでしたよね?

では、★と接触した時の処理に追加しましょう。

    repeat star_num
    if((star_x(cnt) > player_x – 20) and ・・・・・・・
        dialog "★の数=" + star_num, 0, "終了" 
        end         ;プログラム終了
    }
    loop

これで、★と接触した瞬間ダイアログが表示されます。

ダイアログが表示されると、
ダイアログ上のボタンが押されるまでプログラムは停止します。

ボタンが押されると、続きから再開しますが、
今回の場合は次の行に「end」と書いてあるので、
OKボタンを押したらプログラムが終了します。

 

移動制限

これで、完成!!

・・・と思っていたんですが、プレイしてみたら大事なことを忘れていました。

今のままだと自機を画面外まで移動できちゃいますね。

これじゃ無敵ですw

自機の移動範囲を画面内に限定しましょう。

そんなに難しい話じゃありません。

たとえば、player_xが0より小さくなったら、
画面左にはみ出しているということですよね?

その場合はplayer_xを無理やり0にしてやります。
これで、画面左端からそれ以上左に移動できなくなります。

ということを、上下左右の4方向に適用してやればいいわけです。

    ;自機移動
    (一部省略)

    ;自機の移動制限
    if(player_x < 0){          ;左端にはみ出た
        player_x = 0
    }
    if(player_y < 0){          ;上にはみ出た
        player_y = 0
    }
    if(player_x > 800 – 32){   ;右端にはみ出た
        player_x = 800 – 32
    } 
    if(player_y > 480 – 32){   ;下にはみ出た
        player_y = 480 – 32
    }

   
;星の移動
    repeat star_num

右と下の時は32(自機のサイズ)を引くのを気を付けてください。

player_xとplayer_yが自機の左上を指しているからですね。

よくわからない場合は「-32」の部分を消してみてください。

ちなみに、この処理をどこに書くかはそんなに重要じゃありません。

自機の移動に関わることなんで、その直後に書くのが自然かな~

くらいの考えでOK。

 

今回のポイント

  • ダイアログボックスを表示するには
    「dialog "タイトル", 種類, "表示内容"」と書く。

Pocket


コメントを残す

メールアドレスが公開されることはありません。

 ■ツール・ゲーム  ■講座  ■素材  ■その他  ■管理人へ
  Prominece3D   エフェクト画像の描き方   戦闘エフェクト素材   CG作品   お問い合わせ
  ウディタミネンス   ロゴの描き方   投稿エフェクト   書籍   管理人を応援
  Relocater   HSP講座      
  Prominece        

Copyright © 2011-2015 藤宮翔流 All Rights Reserved.