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

在上篇文章“使用 C# 开发智能手机软件:推箱子(五)”中,我对经过改进后的 Common/FindPath.cs 源程序文件进行了介绍。在这篇文章中,介绍 Common/Pub.cs 源程序文件。

以下是引用片段:
1 using System;
2 using System.Drawing;
3 using System.Text;
4 using System.IO;
5 using System.Reflection;
6
7 namespace Skyiv.Ben.PushBox.Common
8 {
9 ///
10 /// 公共的字段和方法
11 ///
12 static class Pub
13 {
14 public const int OverY = 4; // 允许在屏幕(Y)方向超过的像素数
15 public const int DefaultMaxLevelSize = 32; // 缺省的最大关尺寸(宽度和高度)
16 public const int DefaultStepDelay = 100; // 缺省移动时间间隔(毫秒)
17 public const int DefaultReplayDelay = 300; // 缺省回放时间间隔(毫秒)
18 public const int MaxDelay = 1000; // 允许的最大时间间隔(毫秒)
19 public readonly static string ConfigFileName = Path.Combine(baseDirectory, "PushBox.cfg"); // 配置文件全路径名
20 public readonly static Encoding Encode = Encoding.GetEncoding("GB2312"); // Windows Mobile 6.0 不支持 GB18030
21 static string baseDirectory { get { return Path.GetDirectoryName(Pub.CodeBases); } } // 本程序所在的目录
22
23 static Assembly Assembly { get { return Assembly.GetExecutingAssembly(); } }
24 static AssemblyName AssemblyName { get { return Pub.Assembly.GetName(); } }
25 public static Version Version { get { return Pub.AssemblyName.Version; } } // 本程序的版本
26 public static string TextDirectory { get { return Path.Combine(baseDirectory, "text"); } }
27 public static string DataDirectory { get { return Path.Combine(baseDirectory, "data"); } }
28 public static string StepsDirectory { get { return Path.Combine(baseDirectory, "steps"); } }
29 public const string TextExtName = ".bxa"; // 文本文件扩展名
30 public const string DataExtName = ".bxb"; // 数据文件扩展名
31 public const string StepsExtName = ".bxs"; // 通关步骤文件扩展名
32
33 ///
34 /// 本程序的全路径名
35 ///
36 public static string CodeBases
37 {
38 get
39 {
40 string codeBase = Pub.AssemblyName.CodeBase;
41 string uri = "file:///";
42 if (codeBase.StartsWith(uri)) codeBase = codeBase.Substring(uri.Length);
43 return codeBase;
44 }
45 }
46
47 ///
48 /// 给出指定尺寸的显示字符串,格式为: 宽x高
49 ///
50 /// 指定的尺寸
51 /// 指定尺寸的显示字符串
52 public static string ToString(Size size)
53 {
54 return size.Width + "x" + size.Height;
55 }
56
57 ///
58 /// 将走法步骤转换为字符串
59 ///
60 /// 走法步骤
61 /// 转换后的字符串
62 public static string ToString(Step[] steps)
63 {
64 StringBuilder sb = new StringBuilder();
65 foreach (Step step in steps) sb.Append((char)step);
66 char[] array = sb.ToString().ToCharArray();
67 Array.Reverse(array);
68 return new string(array);
69 }
70
71 ///
72 /// 给出指定版本的信息,格式为: x.x (build: yyyy-MM-dd)
73 ///
74 /// 指定的版本
75 /// 指定版本的信息
76 public static string GetVersionBuildString(Version version)
77 {
78 double days = version.Build + 2 * version.Revision / ((double)TimeSpan.TicksPerDay / TimeSpan.TicksPerSecond);
79 return string.Format("{0} (Build: {1})", version.ToString(2), (new DateTime(2000, 1, 1)).AddDays(days).ToString("yyyy-MM-dd HH:mm:ss"));
80 }
81
82 ///
83 /// 给出指定异常的信息,包含其内含异常的信息
84 ///
85 /// 指定的异常
86 /// 是否给出详细信息
87 /// 指定异常的信息
88 public static string GetMessage(Exception ex, bool isDebug)
89 {
90 StringBuilder sb = new StringBuilder();
91 for (Exception e = ex; e != null; e = e.InnerException)
92 {
93 sb.Append(isDebug ? e.ToString() : e.Message);
94 sb.Append(Fcl.NewLine);
95 }
96 return sb.ToString();
97 }
98 }
99 }
100

时间: 2024-10-31 15:29:04

用C#开发智能手机软件:推箱子(六)的相关文章

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

在上篇文章"使用 C# 开发智能手机软件:推箱子(六)"中,我对Common/Pub.cs 源程序文件进行了介绍.在这篇文章中介绍 Common/Step.cs 源程序文件. 以下是引用片段: 1namespace Skyiv.Ben.PushBox.Common 2{ 3 enum Direction { None, East, South, West, North } // 方向: 无 东 南 西 北 4 public enum Action { None, Create, Edi

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

在上篇文章"使用 C# 开发智能手机软件:推箱子(四)"中,我对Common/FindPath.cs 源程序文件进行了介绍.在这篇文章中介绍经过改进后的 Common/FindPath.cs 源程序文件.也就是说,已经实现了"使用 C# 开发智能手机软件:推箱子(四)"的第二个评论中的想法,将地图 ushort[,] map 改为 byte[,] map 了.下面就是改进后的 FindPath 类: 以下是引用片段: 1 using System; 2 using

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

在上篇文章"使用 C# 开发智能手机软件:推箱子(三)"中,我对推箱子程序作了总体介绍.在这篇文章中,介绍 Common/FindPath.cs 源程序文件. 以下是引用片段: using System; using System.Drawing; using System.Collections.Generic; namespace Skyiv.Ben.PushBox.Common { /// /// 寻找最短路线 /// static class FindPath { static

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

这是"使用 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; //

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

在上篇文章"使用 C# 开发智能手机软件:推箱子(一)"中,我对推箱子程序作了总体介绍.这次,我先介绍 Common/Fcl.cs 源程序文件. 以下是引用片段: 1 using System; 2 using System.IO; 3 using System.Drawing; 4 5 namespace Skyiv.Ben.PushBox.Common 6 { 7 /// 8 /// 这里是 .NET Framework 支持,而 .NET Compact Framework 不支

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

最近,使用 C# 开发了一款智能手机软件:推箱子.先介绍一下这款软件的特点: 1.可以在智能手机上运行,也可以在计算机上运行. 2.退出程序时可保护现场,下次再运行自动恢复到原来的状态. 3.玩家通关后可以使用"录像"功能保存通关步骤,以便将来"回放". 4.可以自由设计关卡,批量进行数据导出和导入. 如下图的"解决方案资源管理器"所示,该程序的源程序主要分布在"Window"和"Common"两个文件夹中

HTC寄望开发国产智能手机软件对抗谷歌和苹果

据知情人士称,HTC董事长王雪红密切关注着智能手机操作系统的开发工作,她正在同中国政府官员讨论合作事宜.据悉,该软件将深度整合微博,按计划将在年底前发布. 这项计划说明中国消费者对HTC来说越来越重要,以及中国开发国产软件以对抗谷歌(微博)和苹果等美国科技巨头的决心.对于HTC来说,这也是它在两年前宣布的自有操作系统开发计划的最终成果.在中国市场,HTC仍然只是一个新进的厂商,它从2010年才开始在中国市场销售其自有品牌的智能手机,以前使用的品牌为"多普达". 中国政府鼓励技术厂商开发

C#编推箱子游戏的一些问题

问题描述 1,如何用Keydown键控制小人的上下左右行走,坐标是如何计算的?2.怎么控制小人和箱子坐标重合后,箱子的移动. 解决方案 解决方案二:坐等来人.....坐标应该可以通过数组解决吧?人和箱子重合的时候判断哪一边...然后....不懂了--解决方案三:"坐标"有两个含义,一个是编程世界的坐标,一个是应用领域的坐标.应用领域的坐标其x.y可能就是从1到5,表示最多有5行.5列.而编程领域的坐标,则可能是像素坐标系的坐标(例如x.y都是从0到800或者从0到任意n数值之间映射).

JavaScript写一个小乌龟推箱子游戏

推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用了zepto的touch模块, 通过手指滑动屏幕就可以控制乌龟走不同的方向: 因为推箱子这个游戏比较简单, 直接用了过程式的方式写代码, 模块也就是两个View 和 Model, 剩下就是用户的事件Controller, 用户每一次按下键盘的方向键都会改变数据模型的数据,然后重新生成游戏的静态htm