热到飚血了。。。

上次创建了一房间了,现在要创建多个房间了。

我们像添加一个Chess类来创建很多棋子一样,现在创建一个Game类来创建很多房间:

Code文件夹右键,添加新建项->类->Game.cs,同样的,名称空间去掉[.Code]

namespace NewChessProject
{
    /// <summary>
    /// 游戏 by 路过秋天
    /// </summary>
    public class Game
    {

}
}

先上一个房间列表的属性:

 public List<GameRoom> GameRoomList//房间列表
        {
            get;
            set;
        }

接下来就是一个创建房间的方法了:

public void CreateGameRoom(int count)
        {
            GameRoomList = new List<GameRoom>();
            int margin = 40;
            int GameRoomWidth = 120;
            int pageWidth = 800;
            int x = 0, y = 0;
            Point location;
            for (int i = 0; i < count; i++)
            {
                //计算房间位置
                x = i % (pageWidth / GameRoomWidth) * GameRoomWidth + margin + i % (pageWidth / GameRoomWidth) * 20;
                y = (i / (pageWidth / GameRoomWidth)) * GameRoomWidth + margin;
                location = new Point(x, y);
                GameRoom GameRoom = new GameRoom(i + 1, location, GameRoomWidth);
                GameRoomList.Add(GameRoom);
            }
        }
        public void DrawIn(Panel control)
        {
            for (int i = 0; i < GameRoomList.Count; i++)
            {
                GameRoomList[i].DrawIn(control);
            }
        }

由于我们设置了页面总宽为800,我们需要到Room.xaml设置一下Canvas的宽和高:

<Grid x:Name="LayoutRoot" Background="White" Width="800" Height="600" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,0,0,0">

</Grid>

OK,现在我们回到Room.xaml.cs代码里,创建30个房间:

public partial class Room : UserControl
    {
        public Room()
        {
            InitializeComponent();
            //GameRoom gameRoom = new GameRoom(1, new Point(0,0), 120);
            //gameRoom.DrawIn(LayoutRoot);
            Game game = new Game();
            game.CreateGameRoom(30);
            game.DrawIn(LayoutRoot);
        }
    }

运行F5,看下效果:

怎么全挤在一堆了,我查了查,调了调,又比较了一下,发现:

原来Grid布局和Canvas布局的区别。

因此,把Grid标签换成Canvas标签就行了:

<Canvas Background="White" Height="600" HorizontalAlignment="Left" Margin="0,0,0,0" Name="LayoutRoot" VerticalAlignment="Top" Width="800" >
    </Canvas>

OK,再F5运行,房间正常了:

OK,列表出来了。

下一节开始要讲WCF通讯,同时后面章节会对之前的很多代码会做调整与补充。

现在提供第3部分代码:点此下载

转载于:https://www.cnblogs.com/cyq1162/archive/2010/07/12/1775774.html

Silverlight+WCF 新手实例 象棋 游戏房间列表(十三)相关推荐

  1. Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 演示已更新到此节介绍:Silverlight+WCF 新手实例 象棋 介绍III(二十三) 本节连着Silverlight+WC ...

  2. Silverlight+WCF 新手实例 象棋 主界面-棋谱-获取列表(三十八)

    2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 在Silverlight+WCF 新手实例 象棋 主界 ...

  3. Silverlight+WCF 新手实例 象棋 该谁下棋-B下A停(三十)

    2019独角兽企业重金招聘Python工程师标准>>> 在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 上上一节,就是二十八节:Silverlight+WCF ...

  4. Silverlight+WCF 新手实例 象棋 主界面-事件区-返回退出(三十三)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 还是那张图: 本节实现返回大厅和退出系统: 一:返回大厅,其实很简单的说,就是转向房间列表了. 可是,转向前也有很多事情要处理的 ...

  5. Silverlight+WCF 新手实例 象棋 主界面-事件区-求和认输(三十二)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 事隔几篇,我们又回到事件区,继续其它两个按钮事件,来张图吧: 在Silverlight+WCF 新手实例 象棋 主界面-事件区- ...

  6. Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放-结局(四十)

    在线演示地址: Silverlight+WCF 新手实例 象棋 在线演示 在Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放(三十九)中,我们实现了用户的棋谱回放,在文章的下面,我们 ...

  7. Silverlight+WCF 新手实例 象棋 主界面-棋谱-回放(三十九)

    在线演示地址:Silverlight+WCF 新手实例 象棋 在线演示 本节完后,同时会更新Silverlight+WCF 新手实例 象棋 专题索引,并顺路提供第八阶段源码 在Silverlight+ ...

  8. Silverlight+WCF 新手实例 象棋 棋子移动-规则[附加上半盘限制](十)

    上上一节,我们对棋子的下半盘棋子做了所有的规则限制,因为我们下棋的总是用下半盘的棋子来下,总没人用上半盘棋来下那么高境界的吧. 不过这节简单追加点代码,让那些企图高境界的人士可以临时性的自己和自己下. ...

  9. Silverlight+WCF 新手实例 象棋 棋盘(二)

    2019独角兽企业重金招聘Python工程师标准>>> 1.先新建一个和棋子相关的类库 打开VS2010后->新建->项目->Silverlight类库,名称就定为 ...

最新文章

  1. 疫情期间自我提升指南:十大资源,为你铺平数据科学家之路!
  2. SPOJ - BITDIFF: Bit Difference [神妙の预处理]
  3. ruby中DBI连接MySQL数据库步骤详解
  4. 关于应用程序启动,你可能不知道的东西
  5. 简单支付验证(SPV)与创新
  6. NumPy 百题大冲关,冲鸭!
  7. Scribefire发CSDN博客
  8. 【CodeForces - 864C】Bus (模拟,有坑)
  9. 【剑指offer】面试题63:股票的最大利润(Java)
  10. 和整数相乘_小学数学基础概念归纳总结:整数篇
  11. wifi 2.4g 5g 区别_关于路由器的2.4G以及5G,你不知道的那些事
  12. 浅谈java 之 Map
  13. paip.提升效率---源码生成流程图工具
  14. java下载不了怎么_如何下载和安装Java
  15. 外汇EA真的有用吗?外汇EA如何设置
  16. Android Unable to execute dex: method ID not in [0, 0xffff]: 65536 问题解决方法
  17. 【心理咨询师考试笔记】操作技能(四)——心理咨询方法
  18. MATLAB的画家之旅
  19. 拼团系统开发|全民拼购商业模式解读
  20. 快问快答,MySQL面试夺命20问

热门文章

  1. leetcode —— 513. 找树左下角的值
  2. leetcode - 1201. 丑数 III
  3. Matlab将多个柱形图放于一个图中
  4. 消息中间件的技术选型心得-RabbitMQ ActiveMQ和ZeroMQ
  5. [git] 基础操作-02 分支和主支合并
  6. 【读书笔记0102】Beginning linux programming-3rd
  7. intel编译器_试试吧!用 Go 写一个即时编译器(JIT)
  8. n1运行linux,斐讯 N1 运行 ArchLinuxARM
  9. python什么时候用进程什么时候用线程_Python多线程/多进程释疑:为啥、何时、怎么用?...
  10. 如何用python写数值运算_如何理解Python的数值运算?