Index: [Article Count Order] [Thread]

Date:  Mon, 27 May 2002 21:29:15 +0900
From:  Kazuya Maebashi <********@*****.**.**>
Subject:  [oosquare-ml:02721] Re: オセロゲームのモデル
To:  ***********@***.***.*******.**.**
Message-Id:  <************.*******@***.*****.**.**>
In-Reply-To:  <**************.****.*******@*******.***>
References:  <**************.****.*******@*******.***>
X-Mail-Count: 02721

前橋です。

まとめてですみません。

lionさん:
>[プレイヤークラス]:プレイヤーをあらわします。派生で人プレイヤー、コンピュー
>タープレイヤー、ネットプレイヤーなど。
>[ゲームマスタークラス]:ゲームの進行を管理します。
>[データモデルクラス]:こまの状態などのデータを表すクラスです。
>[盤面ビュークラス]:モデルのオブザーバーであり、データの状態を表示します。
>
>ゲームマスターは次にどのプレイヤーに手を促すかなどのコントロールを行いま
>す。でプレイヤーは次の手を返してコントローラーがルール上のチェックを行い、
>正しければこまのを置き、必要ならひっくり返したりします。これはデータモデ
>ルクラスに対して行います。

「コントローラー」がクラスの一覧にないですが、「ゲームマスター」
さんが兼任? それとも別途作ります?

私ならこっち↓にしますね。

>ルールのチェックはデータモデルに持っていったほうがいいかなとも思います。

実はオセロの話はだいぶ前に別のMLに振ったこともありまして、
そのときの私の案はこちらにあります。

http://www.javaopen.org/jfriends/mlarchive/msg01390.html

Boardクラスがルールのチェックを行うことを除き、lionさんの
案によく似ていると思います。

>先手プレイヤーとかは作る人に対しては...なんでそれが必要なのかそうでな
>いのか自分のポリシーのもとにとくとくと説き伏せます。

問題は、このとき何と言って説き伏せるかなのですが...
********************

廣瀬さん:
>ふと思ったのですが、初心者の人はクラスとインスタンスを混同していることも
>多いのでは、と。

前のメイルにも書きましたが、先手プレイヤーと後手プレイヤーは、
同じ「プレイヤー」クラスの別インスタンスにするのが普通ですよね。
たぶん。

ただ、先手と後手とは「置く石の色が違う」という差異があるので、
初心者さんが継承を使おうとしても不思議ではないと思います。

私自身、昔テトリスを作ったときには、7種のブロックを継承で
作りました。でも、今にして思えば失敗だったと思います。

入門書の類でも、特に多重継承の話が出てくると、「それってクラス
じゃなくてインスタンスなんでは?」と思えるものがちょくちょく
あります。

「人間で男性でジャイアンツファンの山田さん」をクラスだと
主張してたトンデモ入門書はさておき、私が私的にバイブルだと
思っているMAYERさんの「オブジェクト指向入門」でも、
「フランスとアメリカの両方で運転する人」って話が...
これって私にはクラスというよりインスタンスの特性に見えますが。
********************

藤田さん:
>>石クラスは作りません。
>
>  僕は作るかもです。

その場合、盤面はStone(へのポインタ)の2次元配列で、何も置いて
いない場合はnullになるわけですね。

>とか。#ひっくり返したいし。

ひっくり返したいなら、flip(int x, int y) をBoardに付けても
よさそうですが。

ただ、私なら、ひっくり返す操作自体をBoardにやらせちゃいます。
********************

皆川@豆蔵さん:
> 「普通の」オセロだけを対象とするのであればこれで十分ですね。ですが、深
>読みして「三次元オセロ」や「六角オセロ」みたいな「変な」オセロ・ゲームを
>作る場合には…なんて事に発想が及んでしまうと、物理的なマス目の配置構造と
>論理的なマス目間の隣接関係とを別々に扱う…なんていうアイデアが出てきます。
>「石」をクラスにするか否かも、それがマス目の単純な状況を表すためだけに使
>われるならば列挙型で十分ですが、ゲームのルールに影響を及ぼすような特殊な
>「石」が導入される可能性を考えるとすると状況が変わってきます。

こういう時、下手に凝りすぎると「納期までにプログラムを完成さ
せる」という本来の目的を見失うことってありません?
なまじ技術者的には「面白い」からタチが悪いです (^^;

その辺の反省から生まれたのが、XPにおけるYANGIなんではないかと。

> {入門書|教科書}的な本には(良いところもありますが)機械的にできるかのよ
>うな誤解を招いてしまいがちな記述も結構多いですね。

これは確かにそう思います。

> この辺りは 磯田 定宏 さんの論文(※3)など、非常に興味深く読ませていただ
>きました。
>
>※3: 「実世界モデル化有害論 - オブジェクト指向モデル化技法の解明」
>     磯田 定宏, 電子情報通信学会論文誌 D-I Vol.J83-D-I No.9 pp.946-959, 2000
年9月

情報ありがとうございます。でも、会社でもとってないようなので、
探すのはちょっと難しそうですね…

------------------------------------------------------------
  前橋 和弥              ********@*****.**.**
                         http://member.nifty.ne.jp/maebashi/
------------------------------------------------------------