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 |