ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

ちいさなどうぐや 来店/退店処理

f:id:tomo_mana:20220102233538p:plain

お客さんが来店する処理について、備忘の為にまとめました。

来店/退店の流れ

来店/退店の流れを書き出してみると、概ね以下のようになるのでは、と思いました。

f:id:tomo_mana:20220102233938p:plain
来店/退店の流れ

お客さんが発生する部分と、お客さんに対応する部分(来店/退店)との間に、行列があるイメージです。

f:id:tomo_mana:20220102234504p:plain
イメージ

開店

開店前はチラシを見たり噂を聞きつけたり、またはいつものお店に何か用事が合って来客します。

f:id:tomo_mana:20220102231000p:plain
開店/お客さん生成

※処理

ニーズの生成(開店後の来店):T1

開店時以外にも、お店が閉店するまでには、様々な用事でお客さんが来ます。このタイミングがタイマT1です。

行列

開店前だったり、お店のオペレーション能力を超えてお客さんが来たときは、お店の前やレジの前に行列ができます。

f:id:tomo_mana:20220102230734p:plain
行列

来店/退店

行列の先頭にいるお客さんは、お店からの応対を受けることができます。これが来店/退店処理です。

f:id:tomo_mana:20220102230755p:plain
来店/退店

お店が閑散とした状態(一時的な待ち):T2

もしお客さんが集まる速さよりお店のオペレーションが早ければ、お店は一時的に閑散とした状態(というか待ち)になります。この場合、店の奥でくつろいでいたり、居眠りしていない限りは、お客さんを発見し次第応対できます。これがタイマT2です。

f:id:tomo_mana:20220102230818p:plain
閑散としている場合

閉店:T3

24時間営業でない限り、または24時間営業でも時々は、開店から一定時間経過後に閉店を迎えます。閉店までに買い物ができなかったお客さんは、一度家に帰って、また明日なり他の日なりに来店するでしょう。もしかしたら競合のお店に行ってしまうかもしれません。

f:id:tomo_mana:20220102232330p:plain
閉店(行列の解散)

実装例

ここまでの処理をまとめると、下のようなコードになるのではと思いました。

開店前処理

void GameStart()
{
    for( i = 0; i < 開店時生成最大; i++ ){
        お客さん生成();
    }
    ニーズ生成タイマON();
}

お客さんの発生

Queue<お客> 行列 = new Queue<お客>();

void お客さん生成()
{
    お客さん = ニーズ生成();
    
    if( どの店に入るか() == 自分の店 ){
        // 行列に並ぶ
        行列.Enqueue( お客さん );
    }
}

来店~退店

void 来店処理( お客さん )
{
    // Yes/Noボタン有効化
}
void YESボタン()
{
    退店処理();
}
void 退店処理()
{
    // Yes/Noボタン無効化
    
    退店処理開始();     // 退店処理タイマ
}
void 来客確認()
{
    if( 行列.Peek() ){
        お客さん = 行列.Dequeue();
        来店処理( お客さん );
    }
}

タイマ

void Update()
{
    foreach( タイマ ){
        if( タイマーON ){
            タイマ処理();
        }
    }
}

タイマ タイムアウト処理

void T1_ニーズ生成タイマ_タイムアウト()
{
    // 店の傾向、市場傾向などから
    for( i = 0; i < タイマタイムアウト時生成最大; i++ ){
        お客さん生成();
    }
}
void T2_来客監視タイマ_タイムアウト()
{
    if( !接客中 ){
        来客確認();
    }
}
void T3_閉店タイマ_タイムアウト()
{
    行列.Clear();
}
void 退店処理タイマタイムアウト処理()
{
    // タイマ処理と同じ
    来客確認();
}

使用したドット画について

以下のドット画を使わせて頂きました。ありがとうございます。
●キャラ:ぴぽやネット
●お店:ドット絵世界

(以上)