silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight+WCF 新手实例 象棋 游戏房间(十二)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

转帖地址:http://www.cnblogs.com/cyq1162/archive/2010/07/12/1775715.html   加快手步,写多一篇,这节来创建游戏房间: 先上一张以前的房间图: 构成啊,就是上面文字,下面三个矩形框: 昨天调整了一下样式,看下新的房间图: 哪个好看点这个很难说的清了,不过新的图应用了新的brush画刷填充,当然了,你也可以用图片填充,后面可以教你怎么用图

转帖地址:http://www.cnblogs.com/cyq1162/archive/2010/07/12/1775715.html

 

加快手步,写多一篇,这节来创建游戏房间:

先上一张以前的房间图:

Silverlight+WCF 新手实例 象棋 游戏房间(十二)

构成啊,就是上面文字,下面三个矩形框:

昨天调整了一下样式,看下新的房间图:

Silverlight+WCF 新手实例 象棋 游戏房间(十二)

哪个好看点这个很难说的清了,不过新的图应用了新的brush画刷填充,当然了,你也可以用图片填充,后面可以教你怎么用图片

当然了,为了好看,用图片也不为过的,去QQ游戏大厅截两张小图就搞定了,不过这步就留给大伙自己去截了。

现在开始代码了:

我们要创建游戏房间类了,不过这下我们不用新的类库,也不放在象棋库中,我们直接在Silverlight应用程序中,右键,添加文件夹,

起名:Code,在Code文件夹右键->添加类-》输入:GameRoom.cs [顺便名称间的XXX.Code下的.Code去掉]

  ///   <sumMary>
    
///  游戏房间 by 路过秋天
    
///   </sumMary>
     public   class  GameRoom
    {

    }

 

接着我们要新增加一些属性

RoomWidth:房间的

RoomHeight: 房间的

InitPoint:房间的位置,会创建好多个的,像棋子一样,所以总有位置的。

RoomID:房间的ID

RedPlayerInChair:红色座位上是不是有人

BlackPlayerInChair:黑色座位上是不是有人

除了属性,我们再添加几个成员

Panel container;//最外层的窗口,所以的房间都被添加到这里

Canvas room;//房间,里成包括文字和三个矩形框。
Rectangle redChair;//红色座位
Rectangle blackChair;//黑色座位
Rectangle spectatorChair;//旁边观座位

public int gap = 8;//三个矩形框之间的间隔

说过属性,看代码

@H_502_111@

Panel container; // 外层容器,包括很多房间
        Canvas room; // 房间
         public   int  gap  =   8 ; // 座位的间隔
        rectangle redChair; // 红色座位
        rectangle blackChair; // 黑色座位
        rectangle spectatorChair; // 旁观者座位
       
        
///   <sumMary>
        
///  房间的位置,会创建好多个的,像棋子一样,所以总有位置的
        
///   </sumMary>
         public  Point InitPoint
        {
            
get ;
            
set ;
        }
        
///   <sumMary>
        
///  房间的
        
///   </sumMary>
         public   int  roomWidth
        {
            
get ;
            
set ;
        }
        
///   <sumMary>
        
///  房间的
        
///   </sumMary>
         public   int  roomHeight
        {
            
get ;
            
set ;
        }
        
///   <sumMary>
        
///  房间编号
        
///   </sumMary>
         public   int  roomID
        {
            
get ;
            
set ;
        }
        
///   <sumMary>
        
///  红色座位有人
        
///   </sumMary>
         public   bool  redPlayerInChair
        {
            
get ;
            
set ;
        }
        
///   <sumMary>
        
///  黑色座位有人
        
///   </sumMary>
         public   bool  BlackPlayerInChair
        {
            
get ;
            
set ;
        }
        
public  GameRoom( int  roomID,Point LOCATIOn, int  width)
        {
            roomWidth 
=  width;
            roomHeight 
=  roomWidth * 2 / 3 ;
            roomID 
=  roomID;
            initPoint 
=  LOCATIOn;
        }
        
public   void  DrawIn(Panel control)
        {
            container 
=  control;
            Draw();
        }
        
private   void  Draw()
        {
            
// 这里实现画房间了
        }

 

在这里,我让房间的高=宽的三分之二。这样是因为下面刚好三个座位,而高又分成上面文字下面座位,所以取2/3方便计算。

除了构造函数,还是那个DrawIn和Draw,是不是很熟悉了,棋子库里都基本是这个定式的代码

接下来就是要实现画房间了。其实和画棋子一个样,还是赋属性

看看红色座位:

redChair  =   new  rectangle() // 红色座位
            {
                Width 
=  roomWidth  /   3   -  gap,
                Height 
=  roomWidth  /   3   -  gap,
                
// 这个是直接填充色,就是上面那正规的红蓝黑图
                
// Fill = new SolidColorBrush(RedPlayerInChair?Colors.blue:Colors.Red),
                
// 这个是激变色,从红过度到透明,一个圆圈型的。
                Fill  =   new  radialGradientBrush(RedPlayerInChair  ?  Colors.blue : Colors.Red, Colors.Transparent),
                
// 你还可以通过ImageBrush来填充图片,这里留给大伙去实现了。
                
// 下面是房间的位置的计算。
                Margin  =   new  Thickness(gap  /   2 + RoomHeight  /   2   +  gap  /   2 0 0 )
            };

 

接着是观众座位:

GradientStopCollection fillCollection  =   new  GradientStopCollection();
            fillCollection.Add(
new  GradientStop(){ Color  =  Colors.Red, Offset  =   0  });
            fillCollection.Add(
new  GradientStop(){ Color  =  Colors.black,Offset  =   0.7  });
            LinearGradientBrush brush 
=   new  LinearGradientBrush(fillCollection,  0 ); // 线条渐变色,从红到黑色。
            spectatorChair  =   new  rectangle()
            {
                Width 
=  roomWidth  /   3 ,
                Height 
=  roomWidth  /   3 ,
                
// 这个是直接填充色,就是上面那正规的红蓝黑图
                
//  Fill = new SolidColorBrush(Color.bluE),
                Fill  =  brush, // 线型的渐变色
                Margin  =   new  Thickness(RoomWidth  /   3 , roomHeight  /   2 0 )
            };

 

再来是黑色座位:

blackChair  =   new  rectangle()
            {
                Width 
=  redChair.Width,
                Height 
=  redChair.Height,
                
// 这个是直接填充色,就是上面那正规的红蓝黑图
                
// Fill = new SolidColorBrush(BlackPlayerInChair? Colors.blue : Colors.black),
                
// 这个是圆型的渐变色,从黑过度到透明。
                Fill  =   new  radialGradientBrush(RedPlayerInChair  ?  Colors.blue : Colors.black,
                Margin 
=   new  Thickness(RoomWidth  *   2   /   3   +  gap  /   2 , redChair.Margin.Top,  0 )
            };

 

好了,座位都弄好了,最后剩下文字了:

TextBlock tex =   new  textBlock()
            {
                Foreground 
=   new  SolidColorBrush(Colors.brown),
                tex
=   " 房间  "   +  roomID,
                FontFamily 
=   new  FontFamily( " 宋体 " ),
                FontSize 
=  roomHeight  /   3 ,
                FontWeight 
=  FontWeights.bold,
                Margin 
=   new  Thickness(RoomWidth  /   6 0 )
            };

 

好,文字和三个座位都有了,我们要创建房间,然后把文字和座位都Add进去。

room  =   new  Canvas()
            {
                Width 
=  roomWidth,
                Height 
=  roomHeight,
                Margin 
=   new  Thickness(InitPoint.X, InitPoint.Y,  0 ),
                BACkground 
=   new  SolidColorBrush(Colors.LightGray),
                Opacity 
=   0.8
            };
            room.Children.Add(redChair);
            room.Children.Add(blackChair);
            room.Children.Add(spectatorChair);
            room.Children.Add(text);
            container.Children.Add(room);

 

当然最后就是把房间放到大容器里了。

好了,我们现在来改下代码,看下效果

我们Silverlight应用程序->右键-》添加新建项->Silverlight用户控件->Room.xaml

接着我们修改登陆页的转向:

我们把:
((App)(Application.Current)).RedirectTo(
new  MainPage());
改成为:
 ((App)(Application.Current)).RedirectTo(
new  room()));

 

这样我们登陆就后转到游戏房间去。

接着我们要在Room里面生成一个房间:

public   partial   class  room : UserControl
    {
        
public  room()
        {
            initializeComponent();
            GameRoom gameRoom 
=   new  GameRoom( 1 new  Point( 0 , 0 ),  120 );
            gameRoom.DrawIn(LayoutRoot);
        }
    }

 

OK,按F5,运行,出现登陆框,随便输入昵称,点击登陆:

Silverlight+WCF 新手实例 象棋 游戏房间(十二)

OK,效果出来了。

下节我们再添加一个Game类,来生成一批房间。

大佬总结

以上是大佬教程为你收集整理的Silverlight+WCF 新手实例 象棋 游戏房间(十二)全部内容,希望文章能够帮你解决Silverlight+WCF 新手实例 象棋 游戏房间(十二)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。