C# 寻找用C重写的Nibbles游戏#

C# 寻找用C重写的Nibbles游戏#,c#,qbasic,C#,Qbasic,我正在编写一个控制台应用程序,它将启动长时间运行的进程。因此,与其让用户盯着屏幕看几分钟,我更愿意将我的处理过程放到后台线程上,让用户同时玩游戏 如果你和我一样大,你肯定还记得用QBasic编写的Nibbles游戏,这是DOS多年来提供的。我记得几年前读到有人用C#控制台模式重写了它。但是我找不到它。有人知道我在哪里可以拿到它吗?我看到了你的问题,立即开始将原始的NIBBLES.BAS直接翻译成C。 当然,法典充满了基本原则;特别是,数组从1开始。我已经更改了sammy和colorTabl

我正在编写一个控制台应用程序,它将启动长时间运行的进程。因此,与其让用户盯着屏幕看几分钟,我更愿意将我的处理过程放到后台线程上,让用户同时玩游戏


如果你和我一样大,你肯定还记得用QBasic编写的Nibbles游戏,这是DOS多年来提供的。我记得几年前读到有人用C#控制台模式重写了它。但是我找不到它。有人知道我在哪里可以拿到它吗?

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

当然,法典充满了基本原则;特别是,数组从1开始。我已经更改了
sammy
colorTable
数组,使它们从0开始,但没有更改
arena
数组(这个数组现在有一个未使用的索引
0

在C#中,许多事情可以更“正确”地完成(例如,对于上、下、左、右方向,应该使用枚举而不是数字1、2、3、4;对于颜色,应该使用
ConsoleColor
enum而不是整数)

不过,我确实使用了一些C#ism:初始屏幕上的闪烁效果是在一个单独的线程中完成的,因此我可以使用
Console.ReadKey()
等待用户输入

我不得不注释掉设置/取消设置Num Lock、Caps Lock和Scroll Lock的代码,因为C#的
控制台
只允许我读取它们的状态,而不允许更改它们。我将不得不使用WinAPI来实现这一点,我认为这已经超出了极限

所有评论都来自原文


编辑:到目前为止,此版本的完成版本已在github上。我已经将上面的链接改为转到github回购,而不是pastebin。对于那些仍然对最初的第一个版本感兴趣的人来说,.

只是不要被lol起诉,现在一切都有专利。别理他们,一个投诉。如果在DOS窗口的属性中选择了Lucida控制台字体,则效果良好。但是如果你选择了光栅字体(我认为这是默认的),屏幕就会乱七八糟。@AngryHacker:我知道。这很不幸。如果你知道解决这个问题的方法,我很想听听。我不知道如何以编程方式更改控制台字体,甚至不知道如何确定字体。如果我至少能确定它,那么当它是光栅字体时,我可以使用旧的DOS代码页。@Timwi:我修复了它,使其同时使用光栅字体和TT字体。我还添加了其他一些小改动,比如正确恢复控制台。
InitColors
中还有一个bug。在调用
控制台之前,需要设置背景色(黑色)。清除
。有一个很小的机会(我在大约25个关卡中看过一次)在关卡改变之前背景颜色是非黑色的……那将是可着色的[3],而不是黑色。