当前位置:首页>>开发编程>>VS.NET>>新闻内容
教你用C#开发智能手机游戏:推箱子
作者: 发布时间:2007-10-18 11:43:26 文章来源:yesky

这次,我先介绍 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 不支持的东东
  9 /// 
  10 static class Fcl
  11 {
  12 /// 
  13 /// 获取为此环境定义的换行字符串。-- Environment
  14 /// 
  15 public static string NewLine { get { return "\r\n"; } }
  16
  17 /// 
  18 /// 打开一个文本文件,将文件的所有行读入一个字符串,然后关闭该文件。-- File
  19 /// 
  20 /// 要打开以进行读取的文件
  21 /// 包含文件所有行的字符串
  22 public static string ReadAllText(string path)
  23 {
  24 string text = "";
  25 if (File.Exists(path))
  26 {
  27 using (StreamReader sr = new StreamReader(path, Pub.Encode))
  28 {
  29 text = sr.ReadToEnd();
  30 }
  31 }
  32 return text;
  33 }
  34
  35 /// 
  36 /// 创建一个新文件,在其中写入指定的字符串,然后关闭该文件。-- File
  37 /// 
  38 /// 要写入的文件
  39 /// 要写入文件的字符串
  40 public static void WriteAllText(string path, string contents)
  41 {
  42 using (StreamWriter sw = new StreamWriter(path, false, Pub.Encode))
  43 {
  44 sw.Write(contents);
  45 }
  46 }
  47
  48 /// 
  49 /// 将指定的 Size 添加到指定的 Point。-- Point
  50 /// 
  51 /// 要添加的 Point
  52 /// 要添加的 Size
  53 /// 加法运算的结果
  54 public static Point Add(Point point, Size size)
  55 {
  56 return new Point(point.X + size.Width, point.Y + size.Height);
  57 }
  58
  59 /// 
  60 /// 将一维数组的大小更改为指定的新大小。-- Array
  61 /// 
  62 /// 数组元素的类型
  63 /// 要调整大小的一维数组
  64 /// 新数组的大小
  65 public static void Resize(ref T[] array, int newSize)
  66 {
  67 if (array != null && array.Length == newSize) return;
  68 if (array == null) array = new T[0];
  69 T[] newArray = new T[newSize];
  70 Array.Copy(array, newArray, Math.Min(array.Length, newArray.Length));
  71 array = newArray;
  72 }
  73 }
  74 }


  俗话说,工欲善其事,必先利其器。我们知道,Microsoft .NET Compact Framework 只是 Microsoft .NET Framework 的一个子集,她省略了一些不常用的功能。但是,如果我们恰好需要这些功能,只好自己重新实现一下了。这个 Fcl 静态类就是起这个作用的。源程序代码的注释已经写得很清楚了。

  Fcl.NewLine 我原本是想写成这样的:

以下是引用片段:
static class Fcl
  {
  static static string newLine;
  /// 
  /// 获取为此环境定义的换行字符串。-- Environment
  /// 
  public static string NewLine
  {
  get
  {
  if (newLine == null)
  {
  newLine = (Environment.OSVersion.Platform != PlatformID.Unix) ? "\r\n" : "\n";
  }
  return newLine;
  }
  }
  }


  可惜的是,这段代码无法在 .NET Compact Framework 下通过编译(如果是 .NET Framework 则没有问题)。原因是 PlatformID 枚举的成员:

  Unix 操作系统为 Unix。

  Win32NT 操作系统为 Windows NT 或较新的版本。

  Win32S 操作系统为 Win32s(Win32 子集)类型。

  Win32Windows 操作系统为 Windows 95 或较新的版本。

  WinCE 操作系统为 Windows CE。

  PlatformID.Unix 并不被 .NET CF 所支持。这实在是一件很奇怪的事,既然 .NET CF 都支持 PlatformID 的 Win32NT、Win32S、Win32Windows、WinCE 成员,为什么就不能支持 Unix 成员呢?这样,这个程序将来要移植到 Linux 操作系统时就有些小麻烦了。

  要知道,这在主窗体的代码中用以下一段代码来实现在智能手机上禁用“前端显示”功能。

以下是引用片段:
public partial class MainForm : Form
  {
  protected override void OnLoad(EventArgs e)
  {
  base.OnLoad(e);
  miTopMost.Enabled = (Environment.OSVersion.Platform != PlatformID.WinCE);
  env.LoadConfig();
  env.LoadGroup();
  LoadLevel(true);
  if (env.IsSave) Restore(env.Steps);
  }


[首页]    [上一页]    [下一页]    [末页]    

最新更新
·C#中使用Split分隔字符串的技
·VS2008开发中Windows Mobile
·PC机和移动设备上绝对路径的
·C#程序加壳的方法(使用Sixx
·当前上下文中不存在名称Conf
·请插入磁盘:Visual Studio 2
·用VS.NET读取Flash格式文件信
·在ASP.NET中使用AJAX的简单方
·VS.NET 2005中常用的一些代码
·安装VS.NET 2005 SP1补丁全攻
相关信息
·C#中使用Split分隔字符串的技巧
·PC机和移动设备上绝对路径的获取(C#)
·C#程序加壳的方法(使用Sixxpack)
·当前上下文中不存在名称ConfigurationManager的解决方法
·C#的支付宝Payto接口代码
·C#实现窗口最小化到系统托盘
·解密QQ的MsgEx.db消息文件格式
·QQ的TEA填充算法C#实现
·C#用Guid获取不规则的唯一值(标识)
·基于Windows Mobile 5.0的掌上天气预报设计
画心
愚爱
偏爱
火苗
白狐
画沙
犯错
歌曲
传奇
稻香
小酒窝
狮子座
小情歌
全是爱
棉花糖
海豚音
我相信
甩葱歌
这叫爱
shero
走天涯
琉璃月
Nobody
我爱他
套马杆
爱是你我
最后一次
少女时代
灰色头像
断桥残雪
美了美了
狼的诱惑
我很快乐
星月神话
心痛2009
爱丫爱丫
半城烟沙
旗开得胜
郎的诱惑
爱情买卖
2010等你来
我叫小沈阳
i miss you
姑娘我爱你
我们都一样
其实很寂寞
我爱雨夜花
变心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK绷
贝多芬的悲伤
哥只是个传说
丢了幸福的猪
找个人来爱我
要嫁就嫁灰太狼
如果这就是爱情
我们没有在一起
寂寞在唱什么歌
斯琴高丽的伤心
别在我离开之前离开
不是因为寂寞才想你
爱上你等于爱上了错
在心里从此永远有个你
一个人的寂寞两个人的错