ゲーム化!tomo_manaのブログ

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

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

Unity×会計#5 決算処理 (Unity 2019.4.4f1)

f:id:tomo_mana:20211220010205p:plain

今回は、仕訳の初期化と決算ボタンを追加して、売買の結果が損益計算書貸借対照表に反映されるようにします。

これまでの流れ

貸借対照表
tomo-mana.hatenablog.com

損益計算書
tomo-mana.hatenablog.com

仕訳
tomo-mana.hatenablog.com

今回は、仕訳の初期化と決算ボタンを追加して、売買の結果が損益計算書貸借対照表に反映されるようにします。

今回追加する処理は単純ですが、仕訳が決算書に反映されるのを見るのは、なかなか面白いです。

追加するボタン

第4回で追加した仕訳ボタン(仕入、売上)に、決算ボタンとリセットボタンを追加します。

f:id:tomo_mana:20210814221555p:plain
入力フォーム Step2

Hierarchy

f:id:tomo_mana:20210814221750p:plain
Hierarchy - 入力フィールド

決算(動詞)は Settle を使用するようですね。

コード

第4回のコードを以下のように変更します。

※注 2021.9.19)損益計算が間違っていました(Unity×簿記#5の計算方法が正しい)。コードは第9回で修正しました。
tomo-mana.hatenablog.com


(以下は修正前のコード)

public class InputWindow2 : MonoBehaviour
{
    /* 中略 */
   
    void ExecuteReset()
    {
        InitializeJournal();
        
        if( !ReferenceEquals(bs, null) ){
            bs.ChangeAreaValues( 10000, 0, 0, 0, 0 );
            pl.ChangeAreaValues( 0, 0 );
        }
    }
    void ExecuteSettle()
    {
        if( !ReferenceEquals(bs, null) ){
            bs.ChangeAreaValues( tb.cash, tb.q_remain * unitPrice, 0, 0, 0 );
            pl.ChangeAreaValues( tb.purchase, tb.sales );
        }
    }
    void ButtonClicked(int buttonNo)
    {
        switch( buttonNo ){
        case (int)BUTTON_NAME.BUTTON_PURCHASED:
            ExecutePurchase();
            break;
        case (int)BUTTON_NAME.BUTTON_SALED:
            ExecuteSale();
            break;
        case (int)BUTTON_NAME.BUTTON_SETTLE:
            ExecuteSettle();
          break;
        case (int)BUTTON_NAME.BUTTON_RESET:
            ExecuteReset();
          break;
        }
    }
    /* 以下略 */
}

貸借対照表損益計算書にもそれぞれ以下のコードを追加しています。

貸借対照表 (BalanceSheet.cs)

public class BalanceSheet : MonoBehaviour
{
    /* 略 */
    
    public void ChangeAreaValues( int v0, int v1, int v2, int v3, int v4 )
    {
        bsArea[(int)BS_AREA.BS_CASH].value = v0;
        bsArea[(int)BS_AREA.BS_FLA].value = v1;
        bsArea[(int)BS_AREA.BS_FIA].value = v2;
        bsArea[(int)BS_AREA.BS_FLL].value = v3;
        bsArea[(int)BS_AREA.BS_FIL].value = v4;
        RedrawBalanceSheet();
    }
}

損益計算書 (ProfitAndLoss.cs)

public class ProfitAndLoss : MonoBehaviour
{
    /* 略 */
    
    public void ChangeAreaValues( int v0, int v1 )
    {
        plArea[(int)PL_AREA.PL_EXP].value = v0;
        plArea[(int)PL_AREA.PL_REV].value = v1;
        RedrawProfitAndLoss();
    }
}

動作テスト

決算仕訳を追加したことで、一気にゲーム感が出てきました。実質、これがゲームのコアになります。そろそろ動画にした方が分かりやすい感じになってきました。

リセットを押すと、損益がゼロ、貸借対照表は現金10000でスタートします。

f:id:tomo_mana:20210814223949p:plain
RESET時

1個仕入れて、その商品が売れないまま決算を迎えると、仕入れた商品は流動資産となり、損益上は損失になります。(仕入単価1000固定)

f:id:tomo_mana:20210814224123p:plain
仕入

先ほど仕入れた商品を無事売り上げると、売り上げた商品(流動資産)は現金化し、損益上は利益になります。(売上単価1500固定)

f:id:tomo_mana:20210814224230p:plain
売上

これだけ単純な仕訳でシミュレートしてみると、最初は大量に商品を仕入れられないため、一気に利益を増やせないことが体感できます。


ゲームのURL(前回までと同じURLです)
tomo-mana.hatenablog.com

次回

今回、決算処理に貸借対照表を使用したことで、第3回で作った入力フォームと、今回の決算処理用の入力フォームが、同じ貸借対照表を使う状態になりました(リソース競合)。次回は、機能の表示・非表示を切り替えるスイッチ(タブの代わり)を追加します。

以降、
●言語切替
仕入価格の変化
●商品の複数化
●複数年での決算書の比較(決算書の追加・削除)
などを実装していきます。