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

 ドラムに貼り付けられた数字や絵柄が回転し、ボタンで停止させたときの数字や絵柄の組み合わせで掛け点が戻ってくるゲームである。ここでは、数字を使って作成していく。

(1) 数字(画像)の移動

 数字が回転する様子をアニメーションの手法でプログラムしていく。まず、数字の画像を用意する。一つの数字は50×50ドットとしている。
 50×50ドットの画像を順番に表示していくだけでは、紙芝居のように数字が変わっていくだけで回転しているようには見えない。図のように、"1"を表示して、次に"1"と"2"を半分ずつ表示し、次に"2"を表示する。このように、50×50ドットの枠を少しずつずらして表示することで、回転しているように見せる。実際には、枠が移動するのではなく、枠の中を数字の帯が移動するようなイメージである。
 移動させる量は、10ドットずつ、20ドットずつなどドット単位で設定は可能である。いろいろな移動量で試してみたが、半分(25ドット)ずつずらせば十分に回転しているように見える。
ダウンロード
slot.bmp (140KB)

サンプル(slot11.hsp)
 数字の回転アニメーションを作成する。

;slot11.hsp
    buffer 1
    picload "slot.bmp"      ;数字画像
    screen 0
    gmode 0, 50, 50         ;コピーモード設定50*50
*start
    suu1 = 0
    repeat
        suu1 = suu1 + 1
        if suu1 = 10 : suu1 = 0
        pos 100, 100
        gcopy 1, 0, 25 * suu1   ;画像描画,yを25ドット単位で
        await 100
    loop
    end

実行黒色の数字が回転するように表示される。

 "gcopy 1, 0, 25 * suu1"で数字画像の部分を描画(コピー)している。y座標を計算することで描画開始位置を決定している。描画サイズはgmode命令で設定した50×50ドットである。変数suu1との関係は次の通りである。これで、"5"の下に"1"がある理由がわかったと思う。



(2) 計画

 図のような背景画像(400×240)を用意して、四角形のの中に数字の回転アニメーションを表示させる。
 四角形の中の数字は、四角形の左上の座標である。この座標から縦横50ドットのサイズで四角形を配置している。座標は左から(60,80)、(140,80)、(220,80)である。
 回転開始や停止はボタンのオブジェクトを配置してプログラムを作成する予定である。
ダウンロード
slot2.bmp (281kb)

 ゲームの手順(流れ)は、次の通りである。

  1. コイン(賭点)を入力する。
  2. 回転開始ボタンをクリックする。
  3. 回転停止ボタンをクリックする。
  4. 数字の並びを判定し、得点を加減する。

 持ち点は、2000点とし、同じ数字が3つ並んだら賭点の3倍得られることにする。マウスだけで操作できるように、賭点入力はボタンをクリックするたびに10ずつ加算されるような仕組みにする。

サンプル(slot12.hsp)
 背景、回転アニメーション、ボタンを配置する。

;slot12.hsp
    ;ウィンドウ、画像の設定
    buffer 1
    picload "slot.bmp"      ;数字画像
    screen 0
    picload "slot2.bmp"     ;背景画像
    gmode 0, 50, 50         ;コピーモード設定50*50
    ;その他の設定
    randomize
    font "MS Pゴシック", 20, 1
    title "スロット・ゲーム"
    ;ボタン等オブジェクトの配置
    pos 50, 160
    button gosub "STOP", *teishi    ;obj ID0
    pos 130, 160
    button gosub "STOP", *teishi    ;obj ID1
    pos 210, 160
    button gosub "STOP", *teishi    ;obj ID2
    pos 320, 160
    button gosub "START", *kaishi   ;obj ID3
    pos 320, 60
    button gosub "COIN", *coinin    ;obj ID4
*start
    ;ゲーム初期設定
    suu1 = 0
    repeat
        ;回転アニメーション
        suu1 = suu1 + 1
        if suu1 = 10 : suu1 = 0
        pos 60, 80
        gcopy 1, 0, 25 * suu1   ;画像描画,yを25ドット単位で
        await 100
    loop
    end
;--------------------
; サブルーチン -----
*teishi
    return
*kaishi
    return
*coinin
    return

実行背景画像の中で、黒色の数字が回転するように表示される。回転停止・開始等のボタンが表示される。ボタンをクリックしても何も起こらない。

 "button gosub "STOP", *teishi"はボタンに「STOP」と表示し、カレント座標に配置する。このボタンをクリックするとサブルーチン*teishiにジャンプし、return命令で戻る。(クリックしたときに実行した命令の次の命令に戻る。)



課題(slot61.hsp)
 数字の回転アニメーションを2カ所追加する。最初に表示される数字は乱数で決定する。3カ所の数字は別々に動作する。

ヒント
・数字の初期設定
 suu1 = rnd(5) * 2  または  suu1 = rnd(10)
・回転アニメーション
 次の4行で1セットである。
        pos 60, 80
        suu1 = suu1 + 1
        if suu1 = 10 : suu1 = 0
        gcopy 1, 0, 25 * suu1    ;画像描画,yを25ドット単位で
 2つ目、3つ目は、変数suu2, suu3で管理する。次は2つ目の例である。
        suu2 = suu2 + 1
        if suu2 = 10 : suu2 = 0
        pos 140, 80
        gcopy 1, 50, 25 * suu2    ;画像描画,yを25ドット単位で


(リスト)


 スロット・ゲーム制作 目次へ 次へ 
2007 © Hiroshi Masuda 

 

 

inserted by FC2 system