私はこの作業溶液が見つかりました:jGraphTを使ってTicTacToeのゲームの勝利条件を確認することは可能ですか?
private int[] winningPatterns = { 0b111000000, 0b000111000, 0b000000111, // rows
0b100100100, 0b010010010, 0b001001001, // cols
0b100010001, 0b001010100 // diagonals
};
/** Returns true if thePlayer wins */
private boolean hasWon(int thePlayer) {
int pattern = 0b000000000; // 9-bit pattern for the 9 cells
for (int row = 0; row < 3; ++row) {
for (int col = 0; col < 3; ++col) {
if (cells[row][col].content == thePlayer) {
pattern |= (1 << (row * 3 + col));
}
}
}
for (int winningPattern : winningPatterns) {
if ((pattern & winningPattern) == winningPattern)
return true;
}
return false;
}
を私はグラフのロジックを使用して、よりエレガントな解決策があるかどうかを知りたいです。
更新:3x3ボードのさまざまなバリエーションで自分の知識を使用することも検討していますが、このアプローチは審美的に拡張できないと私は考えています。例えば
:25 25によるボードのhttps://en.wikipedia.org/wiki/Teeko
それは十分にエレガントなようです探している? –
私はグラフの設定にもっと投資し、次にmyGraph.isItWon()を呼び出すことができます。 –
このアプローチは、64セル(つまり8x8)のボードを簡単にスケールアップするのに便利です –