扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:wayne编译 来源:yesky 2007年11月13日
关键字:
private ITicTacToeservice TTT = null; private int Game = 0; private int TTTIsWinnerGame = 0; |
private void Init_TTT() { if (TTT == null) try { TTT = new ITicTacToeservice(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Error"); } } private void Clear_Board() |
在我们可以编写事件处理程序之前,我们还需要再实现两个方法:ComputerMove和HumanMove。 显然,我们必须知道人(1)和计算机(2)之间的差异,并且我硬编码了计算机使用字符"42"而人使用十字叉作为棋子。 如果你感到愿意,你也可以放心地在这里添加你自己的表示棋子的方法,甚至是图像。
const int Human = 1; private void ComputerMove() private void HumanMove(object NewMove) |
此时,我们可以实现两个菜单选择事件处理程序。 第一个菜单选择事件处理程序(menuItem3_Click)是当"Computer Starts"选项被选中的时候启动,第二个菜单选择事件处理程序(menuItem4_Click)是当" Human Starts"选项(实际用户)被选中的时候启动。 这两个都调用前面说到的Init_TTT和Clear_Board,并且调用NewGame来取得一个唯一的新游戏句柄。作为调试之用,应用程序把新游戏的Game句柄放在对话框的标题中。 井字游戏服务器可以同时运行许多游戏,并且不在内存保存这些游戏状态(但是对于每个游戏,在本地有一个.ini文件)。 相当于客户端在维护它自己在游戏板上的状态。
private void menuItem3_Click(object sender, System.EventArgs e) private void menuItem4_Click(object sender, System.EventArgs e) |
最后,我们可以实现九个按钮的单击事件处理程序。 它们应该都指向相同的事件处理程序(所以只要实现左上角的btn8按钮的事件处理程序一次,然后指出所有其他的为相同的btn8_Click事件处理程序即可)。 因为每个按钮都有它们不同的Tag属性值,所以很容易使用这个来识别游戏板上不同位置的值。
private void btn8_Click(object sender, System.EventArgs e) { if (Game == 0) menuItem4_Click(sender, e); switch (TTTIsWinnerGame) { case Computer: MessageBox.Show("Computer has already won!"); break; case Human: MessageBox.Show("You have already won!"); break; default: if ((sender as Button).Text == "") { (sender as Button).Text = "X"; Update(); HumanMove((sender as Button).Tag); }; break; } } |
如果你需要,你可以添加更多装饰材料,例如一个窗体图标,你可以设置MaximizeBox为False,并且避免调整窗体大小,设置MaximumSize和MinimumSize为Size属性的值(当使用大字体的时候,可能导致应用程序看上去很难看,我在这里就不再试验了)。
编译并运行
现在,保存你的工作,第一次编译并运行它。注意为了到达井字游戏服务器,你需要一个Internet联接-否则这客户端将出现一个异常。
为了部署这个应用程序,设置Project Options为Release,并且最后一次编译。注意 C# Builder创建的.NET可执行程序需要1.1版本的.NET框架,因此可执行程序不会在.NET1.0框架上运行。
总结
在本文中,我已经示范如何创建一个新的C# Builder应用程序,导入Web服务(通过添加一个Web引用)并且编译,运行和部署这个应用程序。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者