gushwell / TicTacToo

Tic Tac Too Application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TicTacToo

いわゆる3目並べのプログラムです。

ゲームの概要

3×3の格子盤を用意し、二人が交互に「○」と「×」を書き込んでいき、先に3つ並べたほうが勝ちになるゲームでです。 日本では○×ゲーム、海外ではTic tac tooとして知られている誰でも一度はやったことのあるゲームだと思います。

このゲームは、両者が最善手を打った場合は、必ず引き分けになります。

プログラムの概要

人間とコンポユータが対戦を行う形式としました。コンピュータは常に最善手を打つようにプログラムしています、絶対に負けません(僕のプログラムが正しければですが...)

主要なクラス

主要なクラスは、以下の通りです。

Controllerクラス

ゲームを制御するクラスです。先手後手を決め、ゲームを開始します。ゲームが終了したら再度ゲームをするかを確認します。実質的なメインプログラムです。

このクラスは、IObserver<Board> を実装しています。いわゆる購読者クラスで、ゲームの状況が変わるとその盤面の状況を受け取ることができます。盤面が変化するとその内容を表示します。

Gameクラス

1回のゲームを表すクラスです。PerfectPlayerとHumanPlayerを交互に呼び出しゲームを進めます。 このクラスはIObservable<Board> を実装しています。いわゆる発行者クラスです。1手指すたびにその状況を購読者に通知します。そのため、見た目とは完全に独立したクラスになっています。

Boardクラス

盤の状態を表すクラスです。

Stoneクラス

○×を表すクラスです。

IPlayerインターフェイス

プレイヤーを表すインターフェース。

PerfectPlayerクラス

コンピュータ側のプレイヤーを表すクラスです。相手が最善手を指すものと仮定して、最後まで先読みをします。自分が勝つ手があればそれを指し、なければ引き分けの手を、引き分けもなければ、負けの手を指します。でも、このゲームに限っては負ける手を指すことはないはずです。最低でも引き分けの手を指します。

HumanPlayerクラス

人間のプレイヤーを表すクラスです。キーボードから手を入力します。

About

Tic Tac Too Application


Languages

Language:C# 100.0%