« スロットゲームを作ろう | メイン | uimeが密かにアップデート、、ブログのサイドバーが変なことに »

スロットゲームを作ろう その2 何事ものんびりと(2007/04/05)

 こんにちは。なんちゃってパチプロになったUIEngineだです。さて、今日も昨日の収支報告から。早速、前回に引き続きスロットゲームを作っていこう。今のうちに断っておくと、手元に完成したスロットゲームがあるわけではなく、このブログの更新と同じ速度で作っているので、ソースコードの美しさとか、そういったものは期待しないでもらいたい。

 つまり、スパゲッティを生産している。もしかしたら、途中でがっつり変更を入れ、それまでの流れをぶち壊しにするのだが、しばらくこのスタイルで続けよう。ではなく、ソースコードを貼り付けておく。追加した点は、ゲームの進行を管理するステート変数sGameStatusを例によってint型で追加した点。

<state-var name="sGameStatus" type="int"/>

このステート変数sGameStatusが何をするかと言えば、実に簡単。sBaseStatusの値が1の間、スロットゲームの進行状態を管理するわけだ。スロットゲームのインタフェースは実に簡単である。それは、

・コイン投入口
・スタートレバー
・ボタン1
・ボタン2
・ボタン3

の5つのインタフェースが極めてシンプルにユーザーと機械をつないでいる点だ。強く押そうが、連打しようが当りはずれに関係無い(笑)。以前はレバーに細工するとあたりはずれが云々と言う裏技があったようだが。

 今回、sBaseStatus=1つまりゲーム中になると、コイン投入から始まりボタン3を押すところまで、FIREボタンでゲームの状態が次の状態に遷移するようsGameStatusの値を変更している。こんな感じで、sGameStatusの値と紐づいたゲームの状態を作りこんで行けばよいはずだ。いまのところ、予想している内容を書いておくと

・コイン投入
→投入すると、どこかのランプが点灯
・スタートレバー
→全ドラムが回転 画像が上から下に流れる感じで
・ボタン1
→左のドラムが停止※反対から押す場合はどうしようかな?
・ボタン2
→中央のドラムが停止
・ボタン3
→右のドラムが停止
→何かあたったらクレジットが増える、、クレジットという仕組は面倒、つける必要あるのだろうか?

こんな感じ。まぁ、面倒なのはドラムの回転部分だろう。停止の制御というものがあるらしいのだが、はい、全く原理がわかりかねる。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ujml PUBLIC "-//UIEVOLUTION//DTD UJML 2.1//EN"
"http://www.uievolution.com/dtd/ujml-2.1.dtd" [
]>

<!--
    Copyright (c) 2007, uienginda.blogs.com.
    http://uienginda.blogs.com スロットゲームを作ろう
-->

<ujml>
    <application>
   
        <state-variables>
            <state-var name="sBaseStatus" type="int"/>
            <state-var name="sGameStatus" type="int"/>
        </state-variables>
   
        <script>
            sBaseStatus = 0;
        </script>

        <display>
            <!-- Display F1 function key for exiting app -->
            <fn>
                <text>終了</text>
                <event name="onselect">
                    <accelerators>
                        <key>F1</key>
                    </accelerators>
                    <script>
                        _unload();
                    </script>

                </event>
            </fn>
            <fn>
                <text>次へ</text>
                <event name="onselect">
                    <accelerators>
                        <key>F2</key>
                    </accelerators>
                    <script>
                        if(sBaseStatus==0){
                            sBaseStatus = 1;
                        }else if(sBaseStatus==1){
                            sBaseStatus = 2;
                        }else if(sBaseStatus==2){
                            sBaseStatus = 0;
                        }
                    </script>

                </event>
            </fn>
        </display>
        <states>
            <state var="sBaseStatus">
                <transition value="0">
                    <comment>スタート画面の状態:各種機能メニュー等を表示</comment>
                    <display>
                        <label>
                            <text>スタート画面</text>
                        </label>
                    </display>
                </transition>
                <transition value="1">
                    <comment>ゲーム中</comment>
                    <display>
                        <label>
                            <text>ゲーム中</text>
                        </label>
                    </display>
                    <script>
                        sGameStatus = 1;
                    </script>

                </transition>
                <transition value="2">
                    <comment>ゲーム終了 結果表示等</comment>
                    <display>
                        <label>
                            <text>ゲーム終了:結果表示</text>
                        </label>
                    </display>
                    <script>
                        sGameStatus = 0;
                    </script>

                </transition>
            </state>
            <state var="sGameStatus">
                <transition value="1">
                    <comment>スタート待ち、、</comment>
                    <display>
                        <label><text>金を投入</text><y>30</y></label>
                        <box>
                            <event name="onselect">
                                <accelerators><key>FIRE</key></accelerators>
                                <script>
                                    sGameStatus = 2;
                                </script>

                            </event>
                        </box>
                    </display>
                </transition>
                <transition value="2">
                    <comment>ドラム回転中</comment>
                    <display>
                        <label><text>回転中</text><y>30</y></label>
                        <box>
                            <event name="onselect">
                                <accelerators><key>FIRE</key></accelerators>
                                <script>
                                    sGameStatus = 3;
                                </script>

                            </event>
                        </box>
                    </display>
                </transition>
                <transition value="3">
                    <comment>停止</comment>
                    <display>
                        <label><text>第一停止</text><y>30</y></label>
                        <box>
                            <event name="onselect">
                                <accelerators><key>FIRE</key></accelerators>
                                <script>
                                    sGameStatus = 4;
                                </script>

                            </event>
                        </box>
                    </display>
                </transition>
                <transition value="4">
                    <comment>停止</comment>
                    <display>
                        <label><text>第二停止</text><y>30</y></label>
                        <box>
                            <event name="onselect">
                                <accelerators><key>FIRE</key></accelerators>
                                <script>
                                    sGameStatus = 5;
                                </script>

                            </event>
                        </box>
                    </display>
                </transition>
                <transition value="5">
                    <comment>停止</comment>
                    <display>
                        <label><text>第三停止</text><y>30</y></label>
                        <box>
                            <event name="onselect">
                                <accelerators><key>FIRE</key></accelerators>
                                <script>
                                    sGameStatus = 1;
                                </script>

                            </event>
                        </box>
                    </display>
                </transition>
            </state>
        </states>
    </application>
</ujml>

トラックバック

この記事のトラックバックURL:
https://www.typepad.com/services/trackback/6a00d8341c2e2e53ef00e550ab05a28834

スロットゲームを作ろう その2 何事ものんびりとを参照しているブログ:

コメント

この記事へのコメントは終了しました。