用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 相关新闻>>最新推荐更多>>>
|