カテゴリー「エクセル」の記事

コンピュータ対戦版(実装)

2013年4月13日 / エクセル, パソコン, 仕事

内部設計に基づいて実装しましたが、コンピュータの攻撃の判定がなかなか難しくって・・・・・・
結局、半徹夜。明け方の地震で起こされた時は完全に寝ぼけてました。

一応完成しましたが、コンピュータの手を考える処理を次の一手だけで行っているため弱いみたいです(私には勝ちますが、嫁には負けます)

考える処理の理屈は以下の通りです。(優先度が高い順が優先順位とする)

  1. 基本は反転数が多い順に順序付けする(反転数を優先度にする)
  2. 以下の場合、優先度を変える
    1. 4隅を打つことができれば最優先(優先度+12)
    2. 4隅から1つ飛ばしたところは2番目に優先(優先度+6)
    3. 4辺の真ん中は、優先度を1にする
    4. 4隅の隣は、優先度ゼロ

こうすれば強くなるという理論(ただし1手判定に限ります)があれば教えてください。

コンピュータ対戦オセロ0

コンピュータ対戦版(実装)

2013年4月13日 / エクセル, パソコン, 仕事

内部設計が出来たら実装します。

大規模のシステムであれば、更にプログラム設計を行います。
プログラム設計は、通常、共通のモジュールから設計します。
プログラム設計で重要なことは、インターフェースと処理内容を明確にすることです。
例えば、勝敗判定モジュールで現在の攻撃者をインターフェースでやり取りするのかオプションボタンの状態で判定するのかなどです。

今回は一人で実装するのと、対戦型のプログラムが利用できるのでプログラム設計は割愛します。

プログラムはメインモジュール(Worksheet_SelectionChange)と打った手の反転処理、勝敗判定処理、コンピュータの処理の4つです。内容によっては更にサブモジュール化しますが、これも一人なので実装しながら決めていきます。(二人以上で開発する場合は、完全にモジュールを決定する必要があります)対戦型では、戦績ファイルの書き込みなどをサブモジュール化しています。
サブモジュール化の基準は、複数の場所で同じ処理があるか?、プログラムを修正する際にわかりやすくなるか?などで決定しますが、できるだけ独立性が高くなるよう設計します。

内部設計で忘れていましたが、初期化処理も差必要ですね^^;;

実装の結果は、完成したから報告します^^

 

コンピュータ対戦版(内部設計)

2013年4月13日 / エクセル, パソコン, 仕事

以下の手順に従い内部設計を行います。

  1. ファイル設計
  2. モジュール設計

1.ファイル設計

  1. 戦績ファイル
    対戦型と同じ
  2. 打ち手判定ファイル
    可能な打ち手、優先順位、反転できる駒(数は可変)

2.モジュール設計(メインモジュールは1本で、人間がセルをクリックしたら起動する)

  1. 場所の判定(盤面上で、空白の場所か?)
    打てない場所の場合、処理終了
  2. 打った手の反転処理(共通モジュール化する)
    打った手とオプションボタンの状態から打てる手かどうかの判定を行いながら反転する。
    同時に、戦績ファイルに記録する
  3. 上記処理の結果、打てない場所の場合は処理終了
  4. 勝敗判定(モジュール化)
    オプションボタンの状態とすべてのセルのチェックで以下の判定を行う

    1. 終了(打てる場所なし、全部黒または全部白
    2. 黒の攻撃(オプションボタンが白で黒の攻撃可能)
    3. 白の攻撃(オプションボタンが黒で白の攻撃可能)
  5. 勝敗判定で終了又は黒の攻撃の場合、処理終了
  6. 上記以外の場合、コンピュータの処理を行う
    1. 空白のセルをすべて調べ、打ち手判定ファイルを作る
    2. 打ち手判定ファイルを調べ、打ち手を決定する
    3. 決定した打ち手で、打った手の判定処理を行う
  7. 4.の勝敗判定に戻る

こんな感じでしょうか?

2.と4.と6.の処理をサブモジュール化します。

 

プロフィール

志多木義浩
732-0821
広島市南区大須賀町17-5-709
TEL  080-3622-4171


大きな地図で見る

カテゴリー

WordPress

セキュリティニュース


TOPへ戻る

PAGE TOP