用C#开发智能手机软件:推箱子(三)

来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 09:13 点击:
这是“使用 C# 开发智能手机软件推箱子”系列文章的第三篇。在这篇文章中,介绍 Common/Block.cs 源程序文件。

以下是引用片段:
  1 namespace Skyiv.Ben.PushBox.Common
  2 {
  3 /// 
  4 /// 基本单元格: 地 槽 墙 砖 箱子 工人
  5 /// 
  6 static class Block
  7 {
  8 public const byte Land = 0; // 地
  9 public const byte Slot = 1; // 槽
  10 public const byte Wall = 2; // 墙
  11 public const byte Brick = 3; // 砖: 等同于墙,一般放在墙的外围
  12 public const byte Box0 = 4; // 箱子放在地上
  13 public const byte Box1 = 5; // 箱子放在槽上
  14 public const byte Man0 = 6; // 工人站在地上
  15 public const byte Man1 = 7; // 工人站在槽上
  16
  17 const string mask = "-+#%xX()"; // (*.bxa)文件用,依次代表以上各项
  18
  19 public static string GetPenName(byte block)
  20 {
  21 return "地槽墙砖箱箱人人"[block & 0x07].ToString();
  22 }
  23
  24 public static char GetChar(ushort block)
  25 {
  26 return mask[block & 0x07];
  27 }
  28
  29 public static byte GetByte(char block)
  30 {
  31 return (byte)mask.IndexOf(block);
  32 }
  33
  34 public static bool IsOk(ushort block)
  35 {
  36 return block <= Man1;
  37 }
  38
  39 public static void CleanAllMark(ushort[,] bb)
  40 {
  41 for (int i = 0; i < bb.GetLength(0); i++)
  42 for (int j = 0; j < bb.GetLength(1); j++)
  43 bb[i, j] &= 0x07;
  44 }
  45
  46 public static void Mark(ref ushort block, int value)
  47 {
  48 block |= (ushort)(value << 3);
  49 }
  50
  51 public static int Value(ushort block)
  52 {
  53 return block >> 3;
  54 }
  55
  56 public static void Update(ref ushort block, byte pen)
  57 {
  58 if (IsSlot(block) && pen == Block.Man0) pen = Block.Man1;
  59 if (IsSlot(block) && pen == Block.Box0) pen = Block.Box1;
  60 block = pen;
  61 }
  62
  63 public static void ManIn(ref ushort block)
  64 {
  65 block += (Man0 - Land);
  66 }
  67
  68 public static void ManOut(ref ushort block)
  69 {
  70 block -= (Man0 - Land);
  71 }
  72
  73 public&n
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 用C#制作屏幕捕获程序
    • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
    • 遍历ArrayList易犯错误
    • C#对XML操作:一个处理XML文件的类(1)
    • .NET简谈反射(动态调用)
    • 使用C#编写LED样式时钟控件
    • DataList嵌套问题 如何删除内层子DataList的记录
    • 怎样用C#实现完整文档打印功能
    • .NET简谈自定义事务资源管理器
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1