TOPカジノゲームVCI > スロットゲームサンプル

スロットゲームサンプル

概要

スロットマシンのサンプルです。
チップを指定位置に設置し、そのチップを増減させることでベット処理や配当処理を行います。
ソースがわかりやすいように、スロットの絵柄が必ず揃う設計になっています。


サンプルの説明

サンプルシーンを開く

サンプルシーンAssets/RamenVCI/Casino/SlotSampleを開くとスロットゲームのサンプルがあります。
SlotSampleオブジェクトからVCI出力すると、そのまま遊べます。

カジノゲームのサンプルのゲーム内容

ベットエリアへチップ設置して、チップから指定額を賭けてスロットを回すと、出てきた絵柄によって設置したチップが増えます。

プレイの説明
1 エリアにチップを設置する。
このチップは払い戻しができるクレジットのような扱いになります。
2 BetボタンをUseすると、設置したチップから$100ベットします。
最高$500までベットできます。
3 StartボタンをUseしてスロットゲームを開始する。
この時に揃った絵柄によって、設置したチップが増えます。
※必ず何かしらの絵柄が揃います。



チュートリアル:サンプルと同等のVCIを作る


オブジェクトの説明

||BETAREA||チップ置き場

ここにチップを設置します。

SlotTextX

スロットの絵柄を制御するテキストオブジェクトです。
実際にはスクリプトのSetTextで文字を変えて絵柄を変更します。

BetText

ベットされた回数を表示するテキストオブジェクトです。

BetButton StartButton

ベット・ゲーム開始ボタンです。



スクリプトの組み込み

カジノライブラリの初期化

カジノライブラリ(モジュール)を読み込みと、ゲームコード・ベットエリアを登録します。
今回は一人プレイゲームのため、RegistBetAreaの引数にfalseを指定することで、一人だけしか賭けれないチップエリアを作成します。

  1. --カジノライブラリ読み込み
  2. local Casino = require("Casino")
  3. --ゲームコード登録
  4. Casino.RegistGameCode("SampleGame_Slot_CreatedByXXXXX")
  5. --ベットエリア登録
  6. Casino.RegistBetArea("||BETAREA||チップ置き場", false) --一人プレイのため、falseを指定することで一人だけしか賭けれない状態にする
  7. main.lua

チップが設置されている判定を作成

Bet/StartボタンをUseした時の処理は、どちらもチップが設置されていることが前提になるので、GetBetAreaDataからベットエリアに設置されているチップデータがあるか取得する。

  1. function onUse(use)
  2.     --ボタンの操作の前提として、ベットエリアに誰かがチップを設置している事が条件
  3.     --1番目に登録したベットエリアのデータを取得する
  4.     local betAreaData = Casino.GetBetAreaData(1)
  5.     --ベットエリアに設置されたチップが1つでもあるかチェックする
  6.     if #betAreaData.betChipData > 0 then
  7.         local chipData = betAreaData.betChipData[1] --
  8.         local chipVciID = chipData.chipVciID --チップVCIのInstanceID
  9.         local chipNum = chipData.chipNum --設置されたチップ額
  10.         print("ベットエリアに$" .. chipNum .. "チップが設置されています"")
  11.     end
  12. end
  13. main.lua

Betボタンからベット処理を行う

Betボタンを押して、設置チップから$100減らしてベットする処理を追加します。
最大5回までベットします。

  1. --1プレイにベットした回数
  2. local betCount = 0
  3. function onUse(use)
  4.     --ボタンの操作の前提として、ベットエリアに誰かがチップを設置している事が条件
  5.     --1番目に登録したベットエリアのデータを取得する
  6.     local betAreaData = Casino.GetBetAreaData(1)
  7.     --ベットエリアに設置されたチップが1つでもあるかチェックする
  8.     if #betAreaData.betChipData > 0 then
  9.         local chipData = betAreaData.betChipData[1] --
  10.         local chipVciID = chipData.chipVciID --チップVCIのInstanceID
  11.         local chipNum = chipData.chipNum --設置されたチップ額
  12.         print("ベットエリアに$" .. chipNum .. "チップが設置されています"")
  13.         --BetボタンがUseされた場合
  14.         if use == "BetButton" then
  15.             --ベット回数がMAX5回まで達していない場合
  16.             if betCount < 5 then
  17.                 --$100以上チップがある場合
  18.                 if chipNum >= 100 then
  19.                     --設置チップから$100減らす
  20.                     Casino.AddChipNumByFixedValue(1, chipVciID, -100)
  21.                     --ベット一回分加算する
  22.                     betCount = betCount + 1
  23.                     vci.assets._ALL_SetText("BetText", betCount)
  24.                 end
  25.             end
  26.         end
  27.     end
  28. end
  29. main.lua

Startボタンからゲーム処理を行う

Startボタンを押して、スロットの絵柄を表示して配当処理(チップの増加)を行う。

  1. --絵柄
  2. local SLOT_PICTURE = {"🍒", "🍆", "🍉", "🔔", "🍜", "<size=150%><color=red>7</color></size>"}
  3. --絵柄に対する配当倍率
  4. local REWARD_RATE = {1, 2, 3, 5, 10, 30}
  5. function onUse(use)
  6.     --ボタンの操作の前提として、ベットエリアに誰かがチップを設置している事が条件
  7.     --1番目に登録したベットエリアのデータを取得する
  8.     local betAreaData = Casino.GetBetAreaData(1)
  9.     --ベットエリアに設置されたチップが1つでもあるかチェックする
  10.     if #betAreaData.betChipData > 0 then
  11.         local chipData = betAreaData.betChipData[1] --
  12.         local chipVciID = chipData.chipVciID --チップVCIのInstanceID
  13.         local chipNum = chipData.chipNum --設置されたチップ額
  14.         --BetボタンがUseされた場合
  15.         if use == "BetButton" then
  16.             ~ベット処理~
  17.         end
  18.         --StartボタンがUseされた場合
  19.         if use == "StartButton" then
  20.             --表示する絵柄をランダムに選択
  21.             local picNum = math.random(1, #SLOT_PICTURE)
  22.             for slotID = 1, 3 do
  23.                 vci.assets._ALL_SetText("SlotText" .. slotID, SLOT_PICTURE[picNum])
  24.             end
  25.             --絵柄によって設置チップを増額する
  26.             --計算式(ベット回数 x $100 x 配当倍率)
  27.             Casino.AddChipNumByFixedValue(1, chipVciID, (betCount * 100 * REWARD_RATE[picNum]))
  28.             --ベット回数をゼロにリセットする
  29.             betCount = 0
  30.             vci.assets._ALL_SetText("BetText", betCount)
  31.         end
  32.     end
  33. end
  34. main.lua