WPF(Windows Presentation Foundation)是微软最近推出的一套界面实现技术。该技术实现了界面设计和逻辑代码的分离。在WPF技术中,界面设计由xaml文件来完成。 xaml文件是XML格式的,用于设置用户界面中的各种控件(如文本框、列表框、按钮等)的属性和事件。WPF中的逻辑代码目前可以使用C#或 VB.Net来编写。编写的方式和传统的.net程序类似。在本文采用了WPF作为界面实现技术来完成五子棋程序。
本文实现的五子棋程序从表面上看只是个普通的联机对战的棋牌类游戏,但实际上,该联机对战游戏并不需要自己编写服务端程序,更不需要为玩游戏而准备24小 时开机的服务器。本游戏的内部通讯协议采用了MSN协议,因此,可以直接使用MSN帐号(一个E-mail地址)进行登录,并在好友之间展开对弈。
本文提供的五子棋游戏使用了一个开源的MSN协议实现(dotmsn2.0)来进行MSN用户之间的通讯。dotmsn2.0可从如下的网址下载:
http://www.xihsolutions.net/dotmsn/download.html
如果读者想了解更多关于MSN协议的内容,可以访问如下的网址:
http://www.hypothetic.org/docs/msn/index.php
在本游戏程序中使用了Linq技术来读取XML文件中保存的MSN帐号,并将用户最后一次成功登录的MSN帐号写入XML文件。为了安全起见,本程序并未在XML文件中保存密码,因此,在每次登录游戏时,都必须输入MSN帐号的密码。
二、实现原理
使用dotmsn2.0可以非常容易使用MSN帐号进行登录,并和好友进行聊天。然而,在本文提供的程序中使用了一些特殊的信息(信息前面带有特殊前缀) 来传送下棋的命令(玩家棋子走的位置)和控制命令。如果双方使用的都是五子棋程序,下棋命令和控制命令并不会在聊天记录中出现。系统会将这些命令解释成相 应的动作。如当一个玩家走一步棋后,系统就会将该玩家所走的棋子的位置发送给另外一个玩家,而另外一个玩家的五子棋程序会将该命令解释成棋子的位置,并在 棋盘的相应位置放上对方所下的棋子。当这个玩家走棋后,也会采用同样的方式处理。