且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

更新时间:2022-03-10 17:06:42

在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示

上一系列四十篇索引:Silverlight+WCF 新手实例 象棋 专题索引

 

 

本篇紧接着上一篇:Silverlight+WCF 实战-网络象棋最终篇之房间装修-WCF端(二)

继续为房间进行如下的装修:

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

 

代码实现[Silverlight端]

说明:

由于更换背景引入图片,房间的属性发生了较大的变化,由此引发了客户端房间类较大的改动。

 

 

1:Silverlight端:GameRoom类大调整[被注释的是原来的代码,未注释的是修改的代码]

 

由于房间本次装修的变化较大,成本也是不低的。

a:增加的全局变量

TextBlock redText;//红色玩家文字
TextBlock blackText;//黑色玩家文字
private SolidColorBrush defaultBrush = new SolidColorBrush(Color.FromArgb(0000));//默认透明的背景色

 

b:增加的属性[同样删除两个字段RedPlayerInChair/BlackPlayerInChair]

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
        ///// <summary>
        
///// 红色座位有人
        
///// </summary>
        //public bool RedPlayerInChair
        
//{
        
//    get;
        
//    set;
        
//}
        ///// <summary>
        
///// 黑色座位有人
        
///// </summary>
        //public bool BlackPlayerInChair
        
//{
        
//    get;
        
//    set;
        
//}
        public bool IsGaming
        {
            
get;
            
set;
        }
        
public GameService.Player RedPlayer
        {
            
get;
            
set;
        }
        
public GameService.Player BlackPlayer
        {
            
get;
            
set;
        }
        
/// <summary>
        
/// 背景图片[还没玩游戏]
        
/// </summary>
        public ImageBrush BackgroundBrush
        {
            
get;
            
set;
        }
        
/// <summary>
        
/// 背景图片[游戏中]
        
/// </summary>
        public ImageBrush GamingBrush
        {
            
get;
            
set;
        }
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

 

c:调整构造函数,增加背景图传入[由于背景图片引入,原来的长方形房间变成正方形,由此改变了部分算法]

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
        public GameRoom(int roomID, Point location, int width, ImageBrush background, ImageBrush gaming)
        {
            RoomHeight
=RoomWidth = width;
            RoomID 
= roomID;
            InitPoint 
= location;
            BackgroundBrush 
= background;
            GamingBrush 
= gaming;
        }
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

 

d:绘房间和重绘房间函数,直接把以前的注释掉,写个新了

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)Draw/ReDraw函数

 

e:新增加的取用户头像图片的函数

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
        private ImageBrush GetPlayerBrush(string head)
        {
            ImageBrush headBrush 
= new ImageBrush()
            {
                ImageSource 
= new BitmapImage(new Uri("images/head/" + head, UriKind.Relative))
            };
            
return headBrush;
        }
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

 

f:点击黑色座位事件:blackChair_MouseLeftButtonDown

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
            //if (!BlackPlayerInChair)
            
//{
            
//    BlackPlayerInChair = true;
            
//    blackChair.Fill = new RadialGradientBrush(Colors.Blue, Colors.White);
            
//    Enter(2);
            
//}
            if (BlackPlayer == null)
            {
                BlackPlayer 
= App.player;
                blackChair.Fill 
= GetPlayerBrush(App.player.Head);
                blackText.Text 
= App.player.NickName;
                Enter(
2);
            }
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

 

g:点击红色座位事件:redChair_MouseLeftButtonDown

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
            //if (!RedPlayerInChair)
            
//{
            
//    RedPlayerInChair = true;
            
//    redChair.Fill = new RadialGradientBrush(Colors.Blue, Colors.White);
            
//    Enter(1);
            
//}
            if (RedPlayer == null)
            {
                RedPlayer 
= App.player;
                redChair.Fill 
= GetPlayerBrush(App.player.Head);
                redText.Text 
= App.player.NickName;
                Enter(
1);
            }
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

说明

GameRoom类的代码到此就改完了,差不多把整类都重写了,看,成本多高~~~房子啊房子~

 

 

2:Silverlight端:Game类调整

代码不多,把原来的函数注释掉,换个新的如下:

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)CreateGameRoom 创建房间

 

 

3:Silverlight端:Room.xaml调整

房间更新接收通过时,由于字段变化,需要调整一下:

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)
        void UpdateRoomState(GameService.Room gsRoom, GameRoom room)
        {
            
//room.RedPlayerInChair = gsRoom.RedInChair;
            
//room.BlackPlayerInChair = gsRoom.BlackInChair;
            room.RedPlayer = gsRoom.RedPlayer;
            room.BlackPlayer 
= gsRoom.BlackPlayer;
            room.IsGaming 
= gsRoom.IsGaming;
            room.ReDraw();
        }
Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)

还有构造函数原来创建了30个房间,为兼容高度,改成20个房间了。

game.CreateGameRoom(20);

 

 

 

4:Silverlight端:Login.xaml调整

登陆的时候,给用户设置一个默认头像,当然也可以改成选择头像的方式:

Silverlight+WCF 实战-网络象棋最终篇之房间装修-Silverlight端[带第九阶段源码](三)btnLogin_Click

 

第九阶段源码:点击下载

 

 

结言:

为了装修房间,大动干戈了一场,不过看到最后结果,相信还是值的。

 

版权声明:本文原创发表于博客园,作者为路过秋天,原文链接:

http://www.cnblogs.com/cyq1162/archive/2010/10/13/1849939.html