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 &lt; 3; i++)      <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> j = 0; j &lt; 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 &lt; 0) ||<font color=#0000ff> </font>(i &gt; 2) ||<font color=#0000ff> </font>(j &lt; 0) ||<font color=#0000ff> </font>(j &gt; 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 + -
显示快捷键?