技术开发 频道

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


【IT168技术文档】

  在这篇文章中,介绍 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 static void BoxIn(ref ushort block)   74 {   75 block += (Box0 - Land);   76 }   77   78 public static void BoxOut(ref ushort block)   79 {   80 block -= (Box0 - Land);   81 }   82   83 public static bool IsSlot(ushort block)   84 {   85 return block == Slot || block == Box1 || block == Man1;   86 }   87   88 public static bool IsBlank(ushort block)   89 {   90 return block == Land || block == Slot;   91 }   92   93 public static bool IsBox(ushort block)   94 {   95 return block == Box0 || block == Box1;   96 }   97   98 public static bool IsMan(ushort block)   99 {   100 return block == Man0 || block == Man1;   101 }   102 }   103 }
0
相关文章