Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マインスイーパーをモブプロする

Koji NAKAMURA
September 27, 2024
110

 マインスイーパーをモブプロする

Koji NAKAMURA

September 27, 2024
Tweet

Transcript

  1. なんでマインスイーパー? - ルールが割と簡単 - 分からなかったら「マインスイーパー」でググってプレイできる - オブジェクトっぽいもの、いくつかすぐ出てきそうじゃん? - 会話しながらオブジェクトのモデリングにチャレンジしたい -

    minesweeper を Ruby で実装して gem 公開している人が結構いる - https://rubygems.org/search?query=minesweeper - どういった概念をモデリングして Rubyでどう表現しているのかはあとで参考にしよう
  2. Appendix(1): マインスイーパーの要件 - m 行 n列のマスに x 個の爆弾がランダムに配置される ( m

    * n > x ) - 初期状態では全てのマスが伏せられた状態(爆弾が置かれているかどうかがユー ザーは識別できない) - ユーザーは3つの操作のいずれかを繰り返す - 1. 伏せられているマスを開く - 2. 伏せられているマスに旗を立てる - 3. 立てられた旗を取り下げる - マスを開いた際、そのマスに爆弾があれば終了(ゲームオーバー) - 開いたマスには周辺マス(斜め隣含む8マス)に置かれている爆弾の数と等しい数 の数字が書かれている(0〜8) - 旗は最大で全ての爆弾数と同じ数だけマス上に同時に立てることができる - 爆弾が置かれているマスには旗を立て、それ以外のマスは全て開ければゲームク リア
  3. Appendix(2): モデリングの話 (2) kozy4324の解釈 - 手続き型プログラミング - コンピュータが実行すべき命令や手続き(プロシージャ)を順に記述していくことでプログラムを構成 するスタイル -

    主に扱う概念とモデリング対象は「命令や手続き」「処理」 - オブジェクト指向プログラミング - オブジェクトとは、プログラミング視点ではデータ構造とその専属手続きを一つにまとめたものを指 しており、分析/設計視点では情報資源とその処理手順を一つにまとめたものを指している。 ...(中 略)... オブジェクトを基礎要素にし、メッセージと形容されるオブジェクト間の相互作用を重視して、ソ フトウェア全体を構築しようとする - 主に扱う概念とモデリング対象は「オブジェクト」 - 関数型プログラミング - 関数を主軸にしたプログラミングを行うスタイルである。ここでの関数は、数学的なものを指し、引数 の値が定まれば結果も定まるという参照透過性を持つものである - 主に扱う概念とモデリング対象は「関数」