tictactoe-ttt1.html
来自「经典的数据结构源代码(java 实现)」· HTML 代码 · 共 57 行
HTML
57 行
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre><font color = #ff0080>/** Simulation of a Tic-Tac-Toe game (does not do strategy). */</font><font color=#8000a0>public</font> <font color=#8000a0><font color=#ff8000>class</font> </font>TicTacToe { <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>final</font> </font><font color=#8000a0>int</font> X = 1, O = -1; <font color=#ff0080>// players</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>final</font> </font><font color=#8000a0>int</font> EMPTY = 0; <font color=#ff0080>// empty cell</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> board[][] = <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#8000a0>int</font>[3][3]; <font color=#ff0080>// game board</font> <font color=#8000a0><font color=#8000a0>protected</font> </font><font color=#8000a0>int</font> player; <font color=#ff0080>// current player</font> <font color = #ff0080>/** Constructor */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#0000ff>TicTacToe</font>() { <font color=#0000ff>clearBoard</font>(); } <font color = #ff0080>/** Clears the board */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>void</font> <font color=#0000ff>clearBoard</font>() { <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i = 0; i < 3; i++) <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> j = 0; j < 3; j++) board[i][j] = EMPTY; <font color=#ff0080>// every cell should be empty</font> player = X; <font color=#ff0080>// the first player is 'X'</font> } <font color = #ff0080>/** Puts an X or O mark at position i,j */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>void</font> <font color=#0000ff>putMark</font>(<font color=#8000a0>int</font> i, <font color=#8000a0><font color=#8000a0>int</font> </font>j) <font color=#8000a0><font color=#ff8000>throws</font> </font>IllegalArgumentException { <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff></font>(i < 0) ||<font color=#0000ff> </font>(i > 2) ||<font color=#0000ff> </font>(j < 0) ||<font color=#0000ff> </font>(j > 2)) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>IllegalArgumentException</font>(<font color=#008000>"Invalid board position"</font>); <font color=#ff8000>if</font><font color=#0000ff> </font>(board[i][j] != EMPTY) <font color=#8000a0><font color=#ff8000>throw</font> </font><font color=#ff8000>new</font> <font color=#0000ff>IllegalArgumentException</font>(<font color=#008000>"Board position occupied"</font>); board[i][j] = player; <font color=#ff0080>// place the mark for the current player</font> player = - player; <font color=#ff0080>// switch players (uses fact that O = - X)</font> } <font color = #ff0080>/** Checks whether the board configuration is a win for the given player */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>boolean</font> <font color=#0000ff>isWin</font>(<font color=#8000a0>int</font> mark) { <font color=#ff8000>return</font><font color=#0000ff> </font>(<font color=#0000ff></font>(board[0][0] + board[0][1] + board[0][2] == mark*3) <font color=#ff0080>// row 0</font> ||<font color=#0000ff> </font>(board[1][0] + board[1][1] + board[1][2] == mark*3) <font color=#ff0080>// row 1</font> ||<font color=#0000ff> </font>(board[2][0] + board[2][1] + board[2][2] == mark*3) <font color=#ff0080>// row 2</font> ||<font color=#0000ff> </font>(board[0][0] + board[1][0] + board[2][0] == mark*3) <font color=#ff0080>// column 0</font> ||<font color=#0000ff> </font>(board[0][1] + board[1][1] + board[2][1] == mark*3) <font color=#ff0080>// column 1</font> ||<font color=#0000ff> </font>(board[0][2] + board[1][2] + board[2][2] == mark*3) <font color=#ff0080>// column 2</font> ||<font color=#0000ff> </font>(board[0][0] + board[1][1] + board[2][2] == mark*3) <font color=#ff0080>// diagonal</font> ||<font color=#0000ff> </font>(board[2][0] + board[1][1] + board[0][2] == mark*3)); <font color=#ff0080>// diagonal</font> } <font color = #ff0080>/** Returns the winning player or 0 to indicate a tie */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>int</font> <font color=#0000ff>winner</font>() { <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isWin</font>(X)) <font color=#ff8000>return</font><font color=#0000ff></font>(X); <font color=#8000a0><font color=#ff8000>else</font> </font><font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isWin</font>(O)) <font color=#ff8000>return</font><font color=#0000ff></font>(O); <font color=#ff8000>else</font> <font color=#ff8000>return</font><font color=#0000ff></font>(0); }</dl></body></html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?