5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

『吾輩は猫である』の書生から猫を逃がすフローチャート|文章題で身に付くプログラミング思考入門️(12/25)

Posted at

はじめに

この記事は、以下の前提で進行しています。

  • 35度以上のお湯が存在しない優しい世界です
  • 猫を「食う」という表現は全て、猫を「吸う」という意味で捉えています
    • 言葉を置き換えても良かったのですが、原作への敬意も込めてそのまま使わせて頂いてます

『文章題で身に付くプログラミング思考入門️』は、日常や文章問題からプログラミング思考を身に付けていく、簡単で身近で、あなたをちょっと輝かせてくれるシリーズです。

今回は、フローチャートについて考えていきます。

これまでのまとめ

対象者

  • プログラミングの考え方を学びたい人
  • プログラミングに挫折したことのある人
  • 論理的思考を鍛えたい人
  • 文系の人
  • エンジニアの思考を理解したい人

概要

次の文章は、夏目漱石著『吾輩は猫である』の一節です。

この書生というのは時々我々を捕えて煮て食うという話である。

ということで、お風呂に入れたがり・猫吸いしたがりの書生(はじめにを参照のこと)からネコチャンを逃がすゲームの流れを作ってみたいと思います。

さて、以下記事にて猫と書生の行動を洗い出しました。

こちらを利用して猫と書生のバトルを作っていきましょう。

【猫:データ】
名前:吾輩猫
一人称:吾輩
生まれ:見当がつかない場所
鳴き声:ニャーニャー

【猫:行動】
- 泣く
- 記憶する(泣いていた事)
- 見る(人間を)
- 聞く(書生という人間であった/書生は猫を食う)
- 思う(恐ろしいと)


【書生:データ】
名前:初エンカ書生

【書生:行動】
- 捕える(猫を)
- 煮る(猫を)
- 食う(猫を)

こうして見てみると、猫の行動があまりに無力ですね。
猫を強化していきましょう。

猫が鳴くと可愛いので破壊力があります。書生の心を破壊できそうです。「泣く」は攻撃として残し、それ以外は全て削除しましょう。
シンプルに考えるためです。

【猫:データ】
名前:吾輩猫
鳴き声:ニャーニャー

【猫:行動】
- 泣く

【書生:データ】
名前:初エンカ書生

【書生:行動】
- 捕える(猫を)
- 煮る(猫を)
- 食う(猫を)

これは書生と猫のバトルですから、ゲームのルールが必要です。
どんなルールにしましょうか?

そうですね、今回は
書生が「捕える」→「煮る」→「食う」と行動する中で、猫は「泣く」ことによって書生を攻撃して倒して逃げる
というルールにしましょう。

まず、書生の行動が大きな流れとなりますから、そこの部分を図にしてみます。
簡単なフローチャートです。
フローチャートとは、流れ図のことです。

さて、あまりに理不尽な流れ図ができました。
このままでは猫が抵抗できず、お風呂に入れられ、吸われてしまいます。

ということで、猫のターンを追加していきたいのですが、その前に、バトルのルールを整理しましょう。
猫の攻撃によって書生を倒すことができたらハッピーエンドとしましょうか。
猫は泣き声によって書生の心を破壊するので、書生の心の数値化が必要ですね。
書生にはMPを持たせましょう。

そして、バトルといえばターン制が一般的かなと思いますので、書生と猫は1回ずつ交代で行動するようにしましょうか。

整理します。

  • バトル終了条件
    • 猫が食われたら、書生の勝ち(デッドエンド)
    • 書生のMPが0になったら、猫の勝ち(ハッピーエンド)
  • バトル進行の流れ
    • 書生と猫は交代で行動する

では、一つずつ要素を足していきましょう。
まずは、ハッピーエンドを作りましょうか。

次に、ハッピーエンドに到達する流れを作っていきましょう。

  • 書生が行動したら、次は強制的に猫の行動に移ります。
  • 猫は「泣く」ことだけできます。

こうなります。

そして、猫が泣くことによって、

  • 書生のMPが0以下になったら、ハッピーエンドへ移る
  • そうでなければ、次の書生の行動へ移る

わけですね。
ということは、猫が泣いた後は毎回、書生のMPが0以下になったかどうかをチェックする必要があります。条件分岐ですね。

これを図に追加すると、

こうなります。ちょっと見にくいですね。
見やすいように要素を移動してみましょうか。

ちょっと見やすくなりましたかね?
縦軸で見てみると、以下のように区分けできます。

  • 書生は、「捕える」→「煮る」→「食う」とステータスが変わる
  • ゲームマスターは書生のMPとステータスをチェックし、バトル終了を判断する
  • 猫はひたすら泣く

と役割分担させることができますね。
もちろんこの流れ図が正解というわけではなく、もっと上手いやり方もあると思います。
どのようにしたらもっと良い仕組みになるでしょうか?
ぜひ試してみてください。

なお、この流れ図は miro を使って作成しました。
無料でも使える便利なツールなので、よかったら試してみてください。
ただし、無料だと非公開モードが選択できないなどのデメリットもあります。
ツールを利用する前にしっかり仕様を読み、メリットとデメリットを把握してから使うようにしましょう。

miroの料金プラン別仕様は こちら

発展

さらに、猫に「泣く」以外の行動を取らせることができたら、どのように流れ図が変化するでしょうか?
また、その際には、猫の行動を選択するための分岐が必要になります。
例えば、書生・ゲームマスター・猫以外に、プレイヤーという役割分担が発生し、プレイヤーが猫の行動を選択することになるかもしれませんね。

きっちり役割分担をし、独立した部品作りを心がけると、システムの拡張性は高まります。

次回は、デバッグ思考について考えていこうと思います。

まとめ

  • 順を追って、少しずつ流れ図を作っていきました。
  • きっちり役割分担をし、独立した部品作りを心がけると、システムの拡張性は高まります。

最後に

ここまで読んでくださってありがとうございます!
少しでも役に立ったら「いいね」をください。続ける励みになります。
原作の言葉をそのまま使おうとしてこの形になったのですが、いっそのこと「書生が猫をお風呂に入れる」「書生が猫を吸う」に変えちゃった方が良かったかもしれません。アドバイスください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?