设为首页 收藏本站
查看: 1369|回复: 0

win8 开发之旅(5)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-21 13:06:15 | 显示全部楼层 |阅读模式
  上节说道了对这个游戏  面向对象的分析,各位读者 ,有什么不懂,尽情给我留言把!!!!!!
  闲话少说,这节我们对 游戏的实体类,先进行伪代码分析,然后进行源代码的分析。
  我们先看这些类的整体的架构如下图所示:
  
DSC0000.jpg
  Piece类  代表相应的棋子的类, 他应该有 位置这个属性,而位置的最好的体现是通过纵坐标横坐标来体现;相应形状这个属性代表是黑色用户控件还是白棋的用户控件。
  类型属性代表代表这是黑棋, 还是白棋;
  索引属性  插入相应的索引的位置。  相应源代码如下:
  private UserControl _shape;
  private Position _position;
  ///
      /// Gets or sets the X.
     ///
    /// The X.
     public int X
{
    get { return _position.X; }
     set { _position.X = value; }
  }
  ///
   /// Gets or sets the Y.
   ///
  /// The Y.
   public int Y
  {
   get { return _position.Y; }
   set { _position.Y = value; }
  }
  ///
  /// Gets or sets the position.
  ///
  /// The position.
  public Position Position
{
            get { return _position; }
            set { _position = value; }
        }
  public PieceType Type { get; set; }
  public int Index { get; set; }
  ///
/// Initializes a new instance of the  class.
//
  public Piece()
{
  _position = new Position(0,0);
  }
  ///
  /// Gets the shape.
  ///
  /// The shape.
  public UserControl Shape
{
get
{
if (_shape == null)
{
if (Type == PieceType.Black)
_shape = new BlackPieceComponent();
if (Type == PieceType.White)
_shape = new WhitePieceComponent();
}
return _shape;
}
}
  PieceBoard(棋盘) 这个类 是用于对棋盘进行面向对象的处理后的类,   他有那些属性和方法了
  首先,考虑整块游戏只需要一块棋盘,因此我们是不是用单例模式来产生这快棋盘。 说道单例模式的话,有一个 相应类事例和产生单独一个对象的方法。
  棋盘棋盘本身就是盛放棋子的容器,因此我们这里需要一个盛放棋子的数组,为什么是数组啊? 因为棋盘是15*15方格子。
  相应的源代码如下
  public class PieceBoard
   {
    static PieceBoard _Instance { get; set; }
  public Piece[,] pieces { get; set; }  
  private PieceBoard()
  {
  Init();
  }
  private void Init()
  {
   pieces = new Piece[AppConfig.BoardWidth, AppConfig.BoardWidth];
    }
    public static PieceBoard GetPieces()
  {
  lock (_Instance)
  {
  if (_Instance==null)
  {
   _Instance = new PieceBoard();
   }
  }
  return _Instance;
  }
  }
  怎么知道谁赢了,当然是有一套复杂判断连五子的方法,显然,我们需要一套复杂,的算法。这节我们不说他,说一说储存胜利结果的类。
  WinningResult 他有哪些属性,谁取胜的一个枚举的属性,一个那种棋子属性,一个棋子的泛型数组。可能读者就纳闷了,前两个属性需要
  还好理解,而一个棋子的泛型数组  是干嘛的,首先他不是吃饭的。他是把每个胜利结果下的棋子储存起来,以做以后判断使用。
  相应的源代码如下:
  
  
  public class WinningResult
  {
  public WinningType wtype { get; set; }
  public PieceType ptype { get; set; }
  public List piecs;
  public WinningResult()
  {
  piecs = new List();
  }
}
  这里说他两个枚举类型,源代码就不用多贴了,PieceType棋子的类型分别 代表的   白色、黑色类型。  WinningType 胜利的类型,        有水平,垂直,斜起方向。
  你会问我为什么要枚举,简而言之,就是避免魔鬼数字, 更好的见名之义。 增强源代码的可读性。      是1更好理解, 还是Black更好的理解,你说了
  我这节说的够多了,就此休笔把!!!      欲知后事如何,且听下回分解。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69256-1-1.html 上篇帖子: win8.1右键没有“新建”选项 下篇帖子: 后知后觉win8下载地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表