寻找用C#重写的Nibbles游戏

8
我正在编写一个控制台应用程序,它将启动长时间运行的进程。因此,我不想让用户盯着屏幕几分钟,我希望将我的处理放在后台线程中,让用户同时玩游戏。
如果你和我一样老,你肯定记得Nibbles游戏,它是使用QBasic编写的,并且多年来都随DOS一起发行。我记得几年前有人将其重写为C#控制台模式。但我找不到它。有人知道我可以在哪里获取它吗?

只是不要被Namco起诉,这是在加载屏幕期间进行小游戏的专利。 - Scott Chamberlain
现在每件事情都有专利,哈哈,不用理会它们。 - o0'.
1个回答

12

我看到了你的问题,立即开始将原始的NIBBLES.BAS直接翻译成了C#。

当然,这段代码充满了Basic语言的特点;特别是数组从1开始。我已经更改了sammycolorTable数组,使它们从0开始,但是arena数组没有更改(这个现在有一个未使用的索引0)。

在C#中可以有很多更“适当”的方式来做(例如,应该使用枚举而不是数字1、2、3、4来表示上下左右方向;应该使用ConsoleColor枚举而不是整数来表示颜色)。

尽管如此,我还是用了一些C#专有的特性:在初始屏幕上的闪烁效果是在一个单独的线程中完成的,以便我可以只使用Console.ReadKey()等待用户输入。

因为C#的Console只允许我读取Num Lock、Caps Lock和Scroll Lock的状态而无法更改它们,所以我必须注释掉设置/取消这些状态的代码。我本可以使用WinAPI来实现,但我认为这可能有点过头了。

所有注释都来自原始版本。

编辑:现在已经完成了此版本,并且在github上发布。我已将上面的链接更改为github仓库,而不是pastebin。对于那些仍然对原始版本感兴趣的人,这里是原始的pastebin链接


InitColors 函数中也存在一个 bug。在调用 Console.Clear 之前需要设置背景颜色(黑色)。有一小部分概率(我在大约玩了 25 关时看到过一次)在关卡更改之前背景颜色不是黑色。 - Tergiver
@Tergiver: 谢谢,我会明天查看它。现在我已经在我的端上相当地“修复”了代码,删除了所有的 Basic 主义风格并使其更像 C#。我会尝试合并你的更改,然后上传到 Codeplex 或其他地方,可以吗? - Timwi
@Timwi:很酷。我本来想自己整理一下的,但是由于我做了一些更改,它变得更加混乱,但我被编写QBasic PLAY例程所分心,以便我可以放入声音。我现在有一个使用DirectSound的工作版本,但它使用SlimDX,我想删除任何第三方DX包装器(没有SlimDX / MDX)。只有少数几个DX调用,但是如果不使用不安全代码进行操作,则需要大量包装器代码。 - Tergiver
@Tergiver: 完成。(我没有复制你的所有代码——字符代码更改并不是必要的。我已经实现了自己简陋的PLAY版本,但它并不能很好地工作——如果你愿意,请完全替换它。) - Timwi
@Timwi:不错。我提交了几个问题报告。这些笔记主要是为了自己看一下,但现在无法处理它。 - Tergiver
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接