让我们想象一下我们想要实现TTT更有娱乐性的一个版本(这是大部分游戏中 最重要的特色)。例如,TTT的一种变体允许玩家每次只能占据3个格子,去除第 一步在下第四步的时候,去除第二步在下第五步的时候,,以此类推。为了实现 这个变体,我们需要保持对每一步按顺序跟踪——可以利用PlayMover类,如示 例5-20。
示例5-20
namespace TicTacToe {
public class PlayerMove {
private string playerName;
public string PlayerName {
get { return playerName; }
set { playerName = value; }
}
private int moveNumber;
public int MoveNumber {
get { return moveNumber; }
set { moveNumber = value; }
}
public PlayerMove(string playerName, int moveNumber) {
this.playerName = playerName;
this.moveNumber = moveNumber;
}
}
}
现在,取代以为每个按钮对象的内容使用一个简单的字符串,我们将用示例 5-20中的一个PlayMover实例鲜明显示这样的一个改动。
示例5-21
namespace TicTacToe {
public partial class Window1 : Window {
int moveNumber;
void NewGame( ) {
this.moveNumber = 0;
}
void cell_Click(object sender, RoutedEventArgs e) {
// Set button content
//button.Content = this.CurrentPlayer;
button.Content =
new PlayerMove(this.CurrentPlayer, ++this.moveNumber);
}
}
}