65.9K
CodeProject 正在变化。 阅读更多。
Home

PocketPC 或 .NET 的颜色入侵

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.83/5 (15投票s)

2004年5月29日

CPOL

6分钟阅读

viewsIcon

53945

downloadIcon

333

这是我为 2004 年 5 月的 .NET CF 竞赛提交的作品。这是一款利用 PocketPC 的 .NET Compact Framework 的游戏,展示了 .NET CF 的易用性和强大功能。游戏支持单人模式(对抗电脑)或网络或互联网连接的多人模式。

Sample Image - ColorInvasion_PocketPC.jpg

引言

这款游戏展示了简单而强大的 .NET Compact Framework,它允许同时为 PocketPC 和 PC 进行开发。代码演示了多线程、通过 TCP/IP 进行网络通信、使用图形进行绘图以及简单的游戏和 AI 机制。这款游戏基于我在一个卡车停靠站看到的一款类似《风险》的街机游戏。

背景

此版本游戏灵感来源于 2004 年 5 月的 .NET Compact Framework 竞赛。它使用 C# 编写。网络代码是此次的亮点,代表了我第一次尝试网络编程,而 .NET CF 使这项工作变得非常简单。

使用代码

.NET Framework 的优势在于,源代码包含了一个编译后的帮助文件(.chm),其中记录了命名空间、类及其方法/属性。

要编译代码,您需要 VC.NET,并且可能需要下载 Microsoft 的嵌入式 VC 4.0。只需编译并部署到 PocketPC、Pocket 模拟器,或直接从您的机器运行。

关注点

这是我第一次尝试制作游戏,也是第一次进行网络编程。.NET CF 使我能够非常快速地完成这两件事。

我注意到 .NET 和 .NET CF 为我提供了许多好处。

  • 更快的开发速度! .NET Compact Framework 提供了您所需的命名空间和类,触手可及,您可以利用自动完成功能快速完成开发。
  • 可移植性! 用 C# 开发,并在 PC 和 PocketPC 上运行。一旦我将 PC 版本转换为 .NET,就可以轻松地在 PC 或 PocketPC 上执行二进制文件!有了 .NET CF,我可以为其他移动设备重新编译!测量一次,切割两次……无限循环
  • 网络通信。 WAN 卡最酷的用途莫过于与其他 PocketPC 用户对战!我告诉您:玩同一款游戏、同一个可执行文件,对抗运行您新款 WAN PocketPC 的电脑用户。也许您没有 Pocket……电脑对电脑——通过互联网!
    1. 可绕过防火墙工作——只需连接到网络上未受防火墙保护的其他人。
    2. 可通过局域网工作——它会显示您的 IP 地址,以便即时通讯或告诉朋友如何连接。如果您在防火墙后面,您的互联网 IP 地址将与您的局域网 IP 地址相同。
  • 更优的绘图代码
    1. 更小的分发包,因为我使用了 .NET 中的 GDI+ 类,而不是位图。
    2. Graphics 类允许仅重绘更新的图块,而不是重绘整个屏幕。
    3. 使用 .NET GDI+ 绘制复杂的填充多边形。
  • 带有垃圾回收的集合! 无需像使用通用容器那样使用外部工具集,集合与 C# .NET 的风格和约定保持一致。
  • 源代码文档: .NET 指定了一种用于注释的模式,该模式允许生成 XML 格式的注释。遵循规则,使用 IDE 提供的工具,您就可以生成供您或您的团队将来引用的文档!

规则

  1. 每个玩家都从各自的角落以默认颜色开始。主机(或单人游戏)位于左下角。加入游戏的客户端位于右上角。
  2. 他们轮流切换颜色。
  3. 您不能切换到与对手相同的颜色。

游戏玩法

当您切换颜色时,您当前集合周围的任何图块都会被添加到您的集合中。游戏的目的是占据棋盘上的大部分区域。如果您通过 TCP 与另一个人玩游戏,则轮流进行。如果您是单人玩家,则电脑 AI 会立即轮流并返回。您赢得的游戏越多,AI 就会越难。如果您连赢 6 场,AI 将达到最难的级别。如果您能击败它,那么您就需要与人类对战!

多人模式

要使多人游戏正常工作,您必须遵循以下步骤:

  1. 在两台机器上执行可执行文件,然后在单人游戏对话框中选择“否”。
  2. 记下主机的 IP 地址,并将其转告给另一位玩家。启动您的局域网或互联网连接的主机。
    • 如果“网络”和“局域网”IP 地址相同,则此客户端无法通过互联网托管游戏,但它可以加入在互联网上托管的游戏。
    • 如果您要通过互联网托管,请选中“网络”单选按钮,然后按“主机”。
    • 如果两台机器都在本地区域网络(LAN)上,则任何一台机器都可以托管。
  3. 主机运行后,让客户端在框中输入 IP 地址,然后按“加入”按钮。
    • 即使您在防火墙后面,您也应该能够连接到互联网上未受防火墙保护的主机。
    • 如果两台机器都在防火墙后面,则无法建立连接。
    • 如果两台机器都在同一防火墙后面,请通过局域网连接。
  4. 连接建立后,主机将生成一个棋盘并将其发送给加入的玩家。
  5. 主机是第一个玩家,在两台机器上都位于左下角。主机先走第一步。直到轮到加入的客户端时,它的按钮才会被启用。
  6. 客户端是第二位玩家,它的图块位于右上角。
  7. 游戏结束后,它会告诉您谁赢了,并询问您是否要再次玩。如果您想再次玩,请选择“是”。
  8. 如果您连接到一台机器,它会询问您是否想使用相同的连接再玩一局。

要求

需要您下载并安装 .NET CF 到您的移动设备上。这只需要做一次,就可以享受后续的大量应用程序了。

屏幕截图

这是模拟器和桌面电脑之间比赛开始时的截图。注意,棋盘是相同的,这意味着它们已连接并且正在玩!

这是计算机和另一台计算机之间比赛开始时的截图。注意,棋盘是相同的,这意味着它们已连接并且正在玩!

这是网络连接框的截图。如果您单击“网络”,您将获得您的连接 IP 服务。如果您在防火墙后面,您将在此框中获得局域网 IP。如果您单击“局域网”,您可以看到您的局域网 IP 地址。

特别感谢

没有亲人和朋友,我们将何去何从? 特别感谢所有测试并为本项目提出建议的人。

  • 测试者
    • 我亲爱的妻子,谢谢。
    • 我的家人为测试它。
    • 我的父亲告诉我,“仅仅因为我写了它”,并不意味着他不能轻易击败我。
    • GameDev.Net 的团队测试了 Win32 版本。
  • 建议者
    • 以上所有。

特别感谢 Lewey Geselowitz 先生,他帮助我调试了这个应用程序,在她的 PocketPC 上编译和测试,并提供了各种有益的建议。干杯!

© . All rights reserved.