HSP3 ゲームのプログラミング
 ラケット・ゲーム制作 前へ 目次へ 次へ 

(3) 得点・手持ちボールの処理

 得点加算、手持ちボールなどの処理を追加し、その情報を情報領域に表示する。

 タイトル(ラケット・ゲーム)
ゲーム領域
・8ドット単位で幅60(60×8=480ドット)とする。
・ボールサイズは2×2、ラケットは4×1とする。
・一度打ち返すと10ポイントとする。
情報領域
・幅は640-480=160
・ゲームタイトル表示
・得点表示
・残りボール表示


サンプル追加・修正する処理を示す。

○ タイトルバー
 タイトルバーにゲームのタイトルを表示する。命令はtitleで次のようにする。

title "ラケット・ゲーム"

○ 得点の処理
 得点は変数tokutenに格納することにする。初期値として0を格納する。ボールとラケットの衝突判定で衝突と判定されたとき、得点を加算する。得点加算後、情報領域に得点を表示する。情報領域への表示はほかにもあるので、サブルーチンとする。

tokuten = 0    ;得点初期化
if abs(x0 - x1 - 1) <= 2 & y0 + 2 = y1 {    ;衝突判定
    dy0 = -dy0    ;方向反転
    tokuten = tokuten + 10    ;得点加算
    gosub *joho    ;情報領域表示
}

○ 残りボール等の処理
 3個のボールを手持ちのボールとして、3回の失敗でゲームオーバーとする。ボールの個数は変数ballに格納することにする。失敗の判定は、ボールが下壁に衝突したときである。
 残りボールを表示する方法として、数字で表示する方法とボールを表示する方法がある。ここでは、残りの個数分のボールを表示する方法でプログラムする。

ball = 2    ;残りボール
if y0 >= winy {    ;下壁衝突
    ball--    ;ボール減
    break     ;ループを抜ける
}

 ループを抜けた後、「もう一度しますか。」のダイアログが表示される。残りボールがある間はダイアログを表示せずに次のボールでゲームが再開するようにする必要がある。

if ball >= 0 {    ;残りボールあり
    gosub *joho   ;情報領域表示
    goto *start   ;ゲームスタート
}

 「もう一度しますか。」のダイアログが表示され[はい]をクリックした後、ゲームを新しく再開する。ただし、ラベル*startにジャンプするのではなく、得点と残りボールを初期化する部分に戻る必要があるので、ラベル*restartを適切な場所に追加する。

dialog "もう一度しますか。", 2
if stat = 6 : goto *restart

○ 情報領域表示の処理
 サブルーチンjohoとして作成する。

*joho
    color 0, 0, 128    ;青色
    boxf 60 * mm , 0   ;情報表示領域消去
    ;タイトル
    color 255, 128, 128
    pos 61 * mm, 0
    mes "ラケット・ゲーム"
    ;得点
    color 128, 192, 255
    pos 62 * mm, 3 * mm
    mes strf("得点 = %06d", tokuten)
    ;残りボール
    repeat ball
        pos (62 + cnt * 3) * mm, 56 * mm
        gcopy 1, 0, 0
    loop
    return

 表示される文字が弱いので、次の命令を初期設定に追加して太くする。

font "MS ゴシック", 18, 1    ;フォント設定



課題(racket92.hsp)
 サンプルで示した処理を前の課題(racket91.hsp)に追加・修正せよ。


(リスト)新しいウィンドウで開く


 ラケット・ゲーム制作 前へ 目次へ 次へ 
2007 © Hiroshi Masuda

 

 

inserted by FC2 system