在上一节 Silverlight+WCF 网络象棋 基础篇 该谁下棋-A下B停(二十八),我们在最后聊天对话中看到,双方棋手用的竟然都是红色,这个......
这节,我们来让双方使用不同的颜色下棋:
我们通过什么来决定棋手的颜色?其实,Player玩家属性里,不就有一个ColorValue么,有了这个,一切就好办了。
我们回到Chess象棋类里,增加一个属性,玩家颜色,同时,
上一节,我们实现了“开始”游戏,并互相通知可以开始游戏了;可是我们并没有对棋子进行限制,双方都可以随时的下;
所以,接下来我们要实现对棋子的限制,A下B停,B下A停,同时,要传递棋步,对方收到棋步,要反转棋步坐标,还得自动移动棋子。
说了这么多,我们从哪里开始下手呢?其实我也想了很久......
让我们回到Chess象棋类,于是添加一个属性IsCanMove
//象棋类 
一开始,还是截张小图过来吧,每次截图都要花很多时间上传的。
好了,我们现在知道,事件区其实就是几个按钮了,本节实现第一个按钮,“开始”游戏。别看就一个按钮,要做的事情可不少:
先总体说说这按钮要做什么事情:
1。双方进入座位时,要提示我可以点“开始”游戏;
2。我点开始“开始”,要WCF通讯,提示对方。
3。对方收到“开始游戏请求”,回复“同意/拒绝”;
4。我根据对方的回复,初
这节我们实现上节没实现的纠结的进出房间的消息提示
我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了:
在线用户区说:反正我是没权直接去实时聊天区写东西,没办法,找中介委托设置一下了。
那谁是中介呢?委托谁呢?当然是衣食父母Index.xaml了,是它撑着整个家庭的。
好了,知道中介了,那我就签个委托书了:
回到
这节我们实现“实时聊天区”:
这节内容几乎和上节一个样的逻辑
1:新建一个用户控件:就叫:Chat.xaml,用来在线聊天
2: 界面拖一个Border到Index.xaml,现在界面上有三个Border了,第三个chatBoard就是新添加进去的了。宽和高设置为230*280了
<Grid x:Name="LayoutRoot" Background=
这节我们来实现在线用户区的显示,把上两节介绍那张图再弄来,看在线用户区是哪块:
一眼扫过看到了,是第四区,现在开始了,还是上次下棋区域一样的逻辑,往Index.xaml里拉一个Board控件,然后后台写两行代码代码一下。
当然了,得新建一个用户控件:就叫:OnlineUser.xaml,好,空白的在线用户建完了,下面还是两步实现加载:
1:界面拖一个Board到Index
虽然有在线演示,不过还是要写一个介绍,因为并没有实时更新到在线演示
说是介绍,其实就是阶段进度报告,现在看一下最近的更新吧:
先来总体截一下图看看变化吧:
1.登陆:
增加了初始作者文字显示[没用户时默认文字],和在当前线用户数显示。
我开了三个浏览器窗口才截到这图。
2:房间:
这里从QQ象棋里弄了两张背景图过来,换了一下之前的房间背景,如果是游戏对战中,桌面背景就变成了:
这节我们要布局Index.xaml界面。
首先,我们定义一下全局的宽和高:1000*620[数字差不多就行了]
一堆代码,都是自动生成的,只是改了两个数字,不说大伙也知道改啥数字了。
<UserControl x:Class="NewChessProject.Index" xmlns="http://schemas.mi
上节是当有用户进入某个房间时,我的某个房间状态被通知,并被通知更新。
这节说说首次进入房间大厅时,我们自己创建了N个房间,默认都是初始状态的,这时我们需要获取服务端的所有已更新的房间状态,
下到本地之后,进行批量更新状态。
于是开始了,首先从服务端开始,我们要获取所有已更新的房间,于是到WCF服务端添加一个方法:
到IService.cs添加方法接口
[Operati
这节开始,标题里就去掉"回归WCF通讯应用"几字了。
上节我们成功实现了进入房间,服务端也收到用户进入房间的请求了。
这节,我们服务端收到进入房间请求后,通知在房间大门外的人更新房间状态。
我们要增加一个回调方法,ICallBack接口那,忘记的人回去看看WCF通讯那几篇(十四到十七节)。
方法如下,以前说过了,回调的方法是给客户端实现的,服务端只管调就行了:
using System.ServiceModel;namespace GameService{ interface ICallBack { [OperationContract(IsOne