C# で Connect 4 コンソール ゲームを作成しています。関数を除いて、すべてのアプリケーションをセットアップして正しく動作させていhasGameBeenWon()
ます。この関数はメインの do...while ループで呼び出され、ゲームに勝っていない場合は false を返します。
static bool gameHasEnded(int currentTurn)
{
int currentTurnPiece;
if (currentTurn.Equals(1))
{
currentTurnPiece = BLUE;
}
else if (currentTurn.Equals(2))
{
currentTurnPiece = RED;
}
return false;
}
(明らかに、このコードは不完全です)
...現在の外観currentTurn
です。var は現在のプレイヤーのターンの int 値です (1 または 2 のいずれか)。BLUE と RED は、アプリケーションがコンソールに出力するときに、ボード上で青と赤の色に変換される 1 と 2 の値が割り当てられる定数です。
今、ゲームが効率的かつできるだけ簡単に勝ったかどうかを確認する方法にこだわっています。ボードは と呼ばれる配列に格納されていboard
ます。4 つの同じ値のセットが上/下、左/右、およびすべての方向に対角線上にあるかどうかを確認する必要があります。上下左右のチェックはそこまで難しくないのですが、斜めは毎回チェックするのが少し遅いかなと思いました。
とにかく、ボード全体のチェックを高速化するか、ボード全体のチェックをスキップして、関連する領域のみを検索することはできますか?