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

    xiaoxiao2022-07-09  208

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

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

     

     

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

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

     

    代码实现[Silverlight端]

    说明:

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

     

     

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

     

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

    a:增加的全局变量

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

     

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

             /// //  <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 ;         }

     

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

             public  GameRoom( int  roomID, Point location,  int  width, ImageBrush background, ImageBrush gaming)         {             RoomHeight = RoomWidth  =  width;             RoomID  =  roomID;             InitPoint  =  location;             BackgroundBrush  =  background;             GamingBrush  =  gaming;         }

     

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

    Draw/ReDraw函数

     

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

             private  ImageBrush GetPlayerBrush( string  head)         {             ImageBrush headBrush  =   new  ImageBrush()             {                 ImageSource  =   new  BitmapImage( new  Uri( " images/head/ "   +  head, UriKind.Relative))             };              return  headBrush;         }

     

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

                 // 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 );             }

     

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

                 // 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 );             }

    说明

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

     

     

    2:Silverlight端:Game类调整

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

    CreateGameRoom 创建房间

     

     

    3:Silverlight端:Room.xaml调整

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

             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();         }

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

    game.CreateGameRoom(20);

     

     

     

    4:Silverlight端:Login.xaml调整

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

    btnLogin_Click

     

    第九阶段源码:点击下载

     

     

    结言:

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

     

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

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

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)