一、前言

    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帐号进行登录,并和好友进行聊天。然而,在本文提供的程序中使用了一些特殊的信息(信息前面带有特殊前缀) 来传送下棋的命令(玩家棋子走的位置)和控制命令。如果双方使用的都是五子棋程序,下棋命令和控制命令并不会在聊天记录中出现。系统会将这些命令解释成相 应的动作。如当一个玩家走一步棋后,系统就会将该玩家所走的棋子的位置发送给另外一个玩家,而另外一个玩家的五子棋程序会将该命令解释成棋子的位置,并在 棋盘的相应位置放上对方所下的棋子。当这个玩家走棋后,也会采用同样的方式处理。