スロットゲームサンプル
概要
スロットマシンのサンプルです。
チップを指定位置に設置し、そのチップを増減させることでベット処理や配当処理を行います。
ソースがわかりやすいように、スロットの絵柄が必ず揃う設計になっています。
サンプルシーンを開く
サンプルシーンAssets/RamenVCI/Casino/SlotSampleを開くとスロットゲームのサンプルがあります。
SlotSampleオブジェクトからVCI出力すると、そのまま遊べます。
カジノゲームのサンプルのゲーム内容
ベットエリアへチップ設置して、チップから指定額を賭けてスロットを回すと、出てきた絵柄によって設置したチップが増えます。
|
プレイの説明 |
1 |
エリアにチップを設置する。
このチップは払い戻しができるクレジットのような扱いになります。
|
|
2 |
BetボタンをUseすると、設置したチップから$100ベットします。 最高$500までベットできます。 |
|
3 |
StartボタンをUseしてスロットゲームを開始する。
この時に揃った絵柄によって、設置したチップが増えます。
※必ず何かしらの絵柄が揃います。
|
|
チュートリアル:サンプルと同等のVCIを作る
||BETAREA||チップ置き場
ここにチップを設置します。
|
SlotTextX
スロットの絵柄を制御するテキストオブジェクトです。
実際にはスクリプトのSetTextで文字を変えて絵柄を変更します。
|
BetText
ベットされた回数を表示するテキストオブジェクトです。
|
BetButton StartButton
ベット・ゲーム開始ボタンです。
|
カジノライブラリの初期化
カジノライブラリ(モジュール)を読み込みと、ゲームコード・ベットエリアを登録します。
今回は一人プレイゲームのため、RegistBetAreaの引数にfalseを指定することで、一人だけしか賭けれないチップエリアを作成します。
- --カジノライブラリ読み込み
- local Casino = require("Casino")
- --ゲームコード登録
- Casino.RegistGameCode("SampleGame_Slot_CreatedByXXXXX")
- --ベットエリア登録
- Casino.RegistBetArea("||BETAREA||チップ置き場", false) --一人プレイのため、falseを指定することで一人だけしか賭けれない状態にする
main.lua
チップが設置されている判定を作成
Bet/StartボタンをUseした時の処理は、どちらもチップが設置されていることが前提になるので、GetBetAreaDataからベットエリアに設置されているチップデータがあるか取得する。
- function onUse(use)
- --ボタンの操作の前提として、ベットエリアに誰かがチップを設置している事が条件
- --1番目に登録したベットエリアのデータを取得する
- local betAreaData = Casino.GetBetAreaData(1)
- --ベットエリアに設置されたチップが1つでもあるかチェックする
- if #betAreaData.betChipData > 0 then
- local chipData = betAreaData.betChipData[1] --
- local chipVciID = chipData.chipVciID --チップVCIのInstanceID
- local chipNum = chipData.chipNum --設置されたチップ額
- print("ベットエリアに$" .. chipNum .. "チップが設置されています"")
- end
- end
main.lua
Betボタンからベット処理を行う
Betボタンを押して、設置チップから$100減らしてベットする処理を追加します。
最大5回までベットします。
- --1プレイにベットした回数
- local betCount = 0
- function onUse(use)
- --ボタンの操作の前提として、ベットエリアに誰かがチップを設置している事が条件
- --1番目に登録したベットエリアのデータを取得する
- local betAreaData = Casino.GetBetAreaData(1)
- --ベットエリアに設置されたチップが1つでもあるかチェックする
- if #betAreaData.betChipData > 0 then
- local chipData = betAreaData.betChipData[1] --
- local chipVciID = chipData.chipVciID --チップVCIのInstanceID
- local chipNum = chipData.chipNum --設置されたチップ額
-
print("ベットエリアに$" .. chipNum .. "チップが設置されています"")
- --BetボタンがUseされた場合
- if use == "BetButton" then
- --ベット回数がMAX5回まで達していない場合
- if betCount < 5 then
- --$100以上チップがある場合
- if chipNum >= 100 then
- --設置チップから$100減らす
- Casino.AddChipNumByFixedValue(1, chipVciID, -100)
- --ベット一回分加算する
- betCount = betCount + 1
- vci.assets._ALL_SetText("BetText", betCount)
- end
- end
- end
- end
- end
main.lua
Startボタンからゲーム処理を行う
Startボタンを押して、スロットの絵柄を表示して配当処理(チップの増加)を行う。
- --絵柄
- local SLOT_PICTURE = {"🍒", "🍆", "🍉", "🔔", "🍜", "<size=150%><color=red>7</color></size>"}
- --絵柄に対する配当倍率
- local REWARD_RATE = {1, 2, 3, 5, 10, 30}
- function onUse(use)
- --ボタンの操作の前提として、ベットエリアに誰かがチップを設置している事が条件
- --1番目に登録したベットエリアのデータを取得する
- local betAreaData = Casino.GetBetAreaData(1)
- --ベットエリアに設置されたチップが1つでもあるかチェックする
- if #betAreaData.betChipData > 0 then
- local chipData = betAreaData.betChipData[1] --
- local chipVciID = chipData.chipVciID --チップVCIのInstanceID
- local chipNum = chipData.chipNum --設置されたチップ額
- --BetボタンがUseされた場合
- if use == "BetButton" then
- ~ベット処理~
- end
- --StartボタンがUseされた場合
- if use == "StartButton" then
- --表示する絵柄をランダムに選択
- local picNum = math.random(1, #SLOT_PICTURE)
- for slotID = 1, 3 do
- vci.assets._ALL_SetText("SlotText" .. slotID, SLOT_PICTURE[picNum])
- end
- --絵柄によって設置チップを増額する
- --計算式(ベット回数 x $100 x 配当倍率)
- Casino.AddChipNumByFixedValue(1, chipVciID, (betCount * 100 * REWARD_RATE[picNum]))
- --ベット回数をゼロにリセットする
- betCount = 0
- vci.assets._ALL_SetText("BetText", betCount)
- end
- end
- end
main.lua