HSP3 ゲームのプログラミング
 レース・ゲーム制作 前へ 目次へ 

(7) 移動量と乱数

 キャラクタの移動量にばらつきを持たせて、競争をする(している)ように見せる。前のサンプルでは移動量を1としているが、ときどき移動量を2として移動にばらつきを持たせる。ばらつきは乱数で作る。
 直線コース((2) キャラクタ移動と着順判定)で使用した移動量の計算式を使うことにする。

car_x(cnt) += 1 + rnd(2)  (car_x(cnt) = car_x(cnt) + 1 + rnd(2)と同じ)

サンプルrace13.hsp
 各キャラクタの移動量にばらつきを持たせる。

;race13.hsp
    screen 0, 640, 480
    randomize       ;乱数初期化
    car_max = 8         ;台数
    dim car_x, car_max      ;x座標
    dim car_y, car_max      ;y座標
    foreach car_y
        car_y(cnt) = cnt + 1    ;コース番号1-8
    loop
    repeat
        redraw 0
        gosub *disp_course      ;コース描画
        foreach car_x   ;台数分
            x = car_x(cnt) : y = car_y(cnt)
            gosub *xy_henkan        ;座標変換
            hsvcolor cnt * 20, 255, 255
            boxf x, y, x + 8, y + 8         ;キャラクタ描画
            car_x(cnt) += 1 + rnd(2)        ;移動量・乱数
            if car_x(cnt) > 131 : car_x(cnt) = 0
        loop
        redraw 1
        await 200
    loop
    stop
;-------------------------------
;座標変換 -----
*xy_henkan
    <<省略>>
; コース描画 -----
*disp_course
    <<省略>>
        return

実行各キャラクタのスピードがバラバラで移動する。競争しているように見える。


○ 乱数の実験

 rnd(2)では、0または1の乱数が発生する。0と1の発生する確率はそれぞれ50%で、2回に1回は移動量が2となるので全体のスピードが上がったように見える。5回または10回に1回程度、移動量が2になるような計算式を検討する。

サンプル実行

試してみよう

課題

ヒント


 レース・ゲーム制作 前へ 目次へ 
2007 © Hiroshi Masuda 

 

 

inserted by FC2 system