Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-回放-结局(四十)
在Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-回放(三十九) 中,我们实现了用户的棋谱回放,在文章的下面,我们曾留下了两个问题:
1:下棋者在下棋过程,要不要开放“回放”功能,如果开放,需要注意什么?
2:观众在回放过程中,突然又传来一个棋步,需要注意什么?
在解答这两个问题之前,我们先来解答上一篇的截图中发现的问题:
http://cyqdata.cn/chess/article-detail-2665
Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-回放(三十九)
在Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-布局写谱(三十六)节中,我们完成了下棋双方的棋谱传递
在Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-获取列表(三十八)节中,我们完成了观棋者获取棋谱列表
在本节中,我们要进行最一步了,棋谱回放:
首先,当用户进入列表后,获取完棋谱信息之后,第一个动作,就是要把棋谱按顺序播放一下,这样,用户看到棋局就是双方正
http://cyqdata.cn/chess/article-detail-2664
Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-获取列表(三十八)
在Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-布局写谱(三十六) 中,我们完成下棋双方的棋谱显示,这节,我们为观众增加棋子列表:
观众进入房间后,第一时间当然也要获取棋步列表了,不然进来干麻呢?你当这是聊天室啊,光聊天不看棋。
首先,当然是要在服务端添加一个获取棋步列表的接口方法了:
WCF服务端,IService.cs:
 
http://cyqdata.cn/chess/article-detail-2663
Silverlight+WCF 网络象棋 基础篇 棋子移动-规则补充(三十七)
在Silverlight+WCF 网络象棋 基础篇 棋子移动-规则[附加上半盘限制](十)中,由Silenus-G提出规则还有点bug:
红车竟然可以走到红马的地盘:这是由于鼠标点在棋子之外的地方时,我们产生的是棋子移动[不是吃子],而在移动之时,我们又没有判断要移动到的位置上是不是有其它棋子从而引发了经济纠纷。因此,解决这个问题,我们只需在点击事件里增加一下判断棋子存不存在就可以了。
而在移
http://cyqdata.cn/chess/article-detail-2662
Silverlight+WCF 网络象棋 基础篇 主界面-棋谱-布局写谱(三十六)
这节,我们要实现棋谱列界面布局和棋谱的获取,先上一张久远的图片:
看清楚了,到本节为止,除了第三区棋谱区,其它的区域我们都已完成了,所以,我们抓紧时间,赶紧吧:
好了,先布局,和以往一样:
1:界面拖一个Border到Index.xaml,到第三区的位置,设置好宽和高[212*602]:
<UserControl ...省略... &
http://cyqdata.cn/chess/article-detail-2661
Silverlight+WCF 网络象棋 基础篇 棋盘-楚河汉界(三十五)
本节是昨天突然想起,看到棋盘好像少了点什么,才突然想到棋盘中间少了“楚河汉界”四个字;
所以本节,就轻松点,在棋盘里补上这四个字了,顺便提供第七阶段的源码;
OK,在棋盘上添加四个字,其实很简单了,添加四个TextBlock,注意一下margin的位置,就可以了:
我们在Board棋盘类里添加一个方法用于绘制四个字,然后调用一下就行了:
/// <
http://cyqdata.cn/chess/article-detail-2660
Silverlight+WCF 网络象棋 基础篇 主界面-状态重置(三十四)
正如我们在:Silverlight+WCF 网络象棋 基础篇 主界面-事件区-求和认输(三十二) 里面提到的一样:
“游戏结束了,要干点什么呢?当然就是棋盘复位了,按钮重置了,如果还有棋谱之类的,全都得重置。这些,我们留下到另一节优化处理吧。”
所以,本节就做这些手尾工作了。
由于游戏结束,我们复位的工作很多,至少有N个控件需要复位,
因此,Silverlight
http://cyqdata.cn/chess/article-detail-2659
Silverlight+WCF 网络象棋 基础篇 主界面-事件区-返回退出(三十三)
还是那张图:
本节实现返回大厅和退出系统:
一:返回大厅,其实很简单的说,就是转向房间列表了。
可是,转向前也有很多事情要处理的:
1:退出前要通知服务器,说我要退出了,不然其它人看到你在房间里占着毛坑又不拉。
2:如果已经在游戏中,你还得先“认输”
3:没其它事了,直接就返回大厅了。
二:退出系统,和返回大厅一样,只是最后结果的转向不一样,只是转向登陆界面。
http://cyqdata.cn/chess/article-detail-2658
Silverlight+WCF 网络象棋 基础篇 主界面-事件区-求和认输(三十二)
事隔几篇,我们又回到事件区,继续其它两个按钮事件,来张图吧:
在 Silverlight+WCF 网络象棋 基础篇 主界面-事件区-游戏开始(二十七) 和之后的几篇,我们实现了游戏开始,
在这篇之前,基本上双方已可以对战了,看似主体功能已完成。只是,大伙都知道,细节的东西,才是花时间的,漫长的路还在后面.......
如标题所示,这节实现“求和+认输”两个事件。
http://cyqdata.cn/chess/article-detail-2657
Silverlight+WCF 网络象棋 基础篇 介绍四(三十一)
由于新增加了功能,所以,又要小小的介绍一下了
这节的介绍应该是非常简短了,因为新加的功能不多
1:首先,入场的是登陆,看小图,发现有点小变化了吧:
增加了单机入口,单机测试版本正式登陆!
2:用户对战增加默认[30分钟]计时
红方开始计时开始:
黑方计时开始:
3:接下来进入到我们的单机版本了界面了:
A:默认进入的界面
http://cyqdata.cn/chess/article-detail-2656
Silverlight+WCF 网络象棋 基础篇 该谁下棋-B下A停(三十)
在:Silverlight+WCF 网络象棋 基础篇 该谁下棋-A下B停(二十八) 节中
我们实现了“开始”游戏后,对棋子的限制,A下B停
这节,我们要实现:B下A停,[同时,传递棋步,对方收到棋步,要反转棋步坐标,自动移动棋子]。所以呢,这节我们要实现的东西是比上上一节相对多一点。
少废话,开始了:
按流程来了,A移动棋子之后,要干点什么事呢?
//---
http://cyqdata.cn/chess/article-detail-2655
Silverlight+WCF 网络象棋 基础篇 棋手颜色(二十九)
在上一节 Silverlight+WCF 网络象棋 基础篇 该谁下棋-A下B停(二十八),我们在最后聊天对话中看到,双方棋手用的竟然都是红色,这个......
这节,我们来让双方使用不同的颜色下棋:
我们通过什么来决定棋手的颜色?其实,Player玩家属性里,不就有一个ColorValue么,有了这个,一切就好办了。
我们回到Chess象棋类里,增加一个属性,玩家颜色,同时,
http://cyqdata.cn/chess/article-detail-2654
Silverlight+WCF 网络象棋 基础篇 该谁下棋-A下B停(二十八)
上一节,我们实现了“开始”游戏,并互相通知可以开始游戏了;可是我们并没有对棋子进行限制,双方都可以随时的下;
所以,接下来我们要实现对棋子的限制,A下B停,B下A停,同时,要传递棋步,对方收到棋步,要反转棋步坐标,还得自动移动棋子。
说了这么多,我们从哪里开始下手呢?其实我也想了很久......
让我们回到Chess象棋类,于是添加一个属性IsCanMove
//象棋类 
http://cyqdata.cn/chess/article-detail-2653
Silverlight+WCF 网络象棋 基础篇 主界面-事件区-游戏开始(二十七)
一开始,还是截张小图过来吧,每次截图都要花很多时间上传的。
好了,我们现在知道,事件区其实就是几个按钮了,本节实现第一个按钮,“开始”游戏。别看就一个按钮,要做的事情可不少:
先总体说说这按钮要做什么事情:
1。双方进入座位时,要提示我可以点“开始”游戏;
2。我点开始“开始”,要WCF通讯,提示对方。
3。对方收到“开始游戏请求”,回复“同意/拒绝”;
4。我根据对方的回复,初
http://cyqdata.cn/chess/article-detail-2652
Silverlight+WCF 网络象棋 基础篇 主界面-控件消息传递(二十六)
这节我们实现上节没实现的纠结的进出房间的消息提示
我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了:
在线用户区说:反正我是没权直接去实时聊天区写东西,没办法,找中介委托设置一下了。
那谁是中介呢?委托谁呢?当然是衣食父母Index.xaml了,是它撑着整个家庭的。
好了,知道中介了,那我就签个委托书了:
回到
http://cyqdata.cn/chess/article-detail-2651
Silverlight+WCF 网络象棋 基础篇 主界面-实时聊天区(二十五)
这节我们实现“实时聊天区”:
这节内容几乎和上节一个样的逻辑
1:新建一个用户控件:就叫:Chat.xaml,用来在线聊天
2: 界面拖一个Border到Index.xaml,现在界面上有三个Border了,第三个chatBoard就是新添加进去的了。宽和高设置为230*280了
<Grid x:Name="LayoutRoot" Background=
http://cyqdata.cn/chess/article-detail-2650
Silverlight+WCF 网络象棋 基础篇 主界面-在线用户区(二十四)
这节我们来实现在线用户区的显示,把上两节介绍那张图再弄来,看在线用户区是哪块:
一眼扫过看到了,是第四区,现在开始了,还是上次下棋区域一样的逻辑,往Index.xaml里拉一个Board控件,然后后台写两行代码代码一下。
当然了,得新建一个用户控件:就叫:OnlineUser.xaml,好,空白的在线用户建完了,下面还是两步实现加载:
1:界面拖一个Board到Index
http://cyqdata.cn/chess/article-detail-2649
Silverlight+WCF 网络象棋 基础篇 介绍III(二十三)
虽然有在线演示,不过还是要写一个介绍,因为并没有实时更新到在线演示
说是介绍,其实就是阶段进度报告,现在看一下最近的更新吧:
先来总体截一下图看看变化吧:
1.登陆:
增加了初始作者文字显示[没用户时默认文字],和在当前线用户数显示。
我开了三个浏览器窗口才截到这图。
2:房间:
这里从QQ象棋里弄了两张背景图过来,换了一下之前的房间背景,如果是游戏对战中,桌面背景就变成了:
http://cyqdata.cn/chess/article-detail-2648
Silverlight+WCF 网络象棋 基础篇 主界面-棋盘区(二十二)
这节我们要布局Index.xaml界面。
首先,我们定义一下全局的宽和高:1000*620[数字差不多就行了]
一堆代码,都是自动生成的,只是改了两个数字,不说大伙也知道改啥数字了。
<UserControl x:Class="NewChessProject.Index" xmlns="http://schemas.mi
http://cyqdata.cn/chess/article-detail-2647
Silverlight+WCF 网络象棋 基础篇 获取房间状态列表更新(二十一)
上节是当有用户进入某个房间时,我的某个房间状态被通知,并被通知更新。
这节说说首次进入房间大厅时,我们自己创建了N个房间,默认都是初始状态的,这时我们需要获取服务端的所有已更新的房间状态,
下到本地之后,进行批量更新状态。
于是开始了,首先从服务端开始,我们要获取所有已更新的房间,于是到WCF服务端添加一个方法:
到IService.cs添加方法接口
[Operati
http://cyqdata.cn/chess/article-detail-2646