Lingo - C# 中的简单文字游戏






4.76/5 (11投票s)
Lingo 是一款简单的五字母单词游戏,使用 C# 编写。它基于同名的流行电视游戏节目。游戏的理念很简单:你有五次机会猜出一个五字母单词,游戏开始时会给出该单词中的两个字母。
引言
ingo 是一款简单的单词游戏,基于同名的流行电视游戏节目。游戏理念是让玩家有五次机会猜出一个五字母单词,游戏开始时会给出该单词中的两个字母。在过程中,对于每一次猜测,如果猜测中的某个字母与原单词中的字母位置相同,或者某个字母存在于原单词中但位置不同,玩家将得到提示。
游戏玩法
Lingo 具有以下游戏元素:
- 五次机会猜出一个五字母单词
- 开始时会标出两个字母
- 正确字母以及存在于原单词但位置不正确的字母将高亮显示
- 检查玩家输入的单词是否有效(如果单词无效,玩家将失去一次机会)
- 得分基于猜出单词所需的次数。第一次猜对得 5 分,最后一次尝试猜对得 1 分
- 提供一种选择游戏难度的方法。有三个级别(简单、中等和困难)。每个级别都有自己独特的单词集,总的五字母单词词典有超过 12,000 个单词。大多数单词非常生僻,但这是一个很好的列表。
- 提供一种机制,让您可以从任何需要您休息 5 分钟的事情中获得一个急需的 5 分钟休息时间。 :)
这是 Lingo 启动时的屏幕样子。

Edition Black 版本看起来如下。

您将获得一个五字母单词中的两个字母(蓝色),您需要在五次或更少的猜测中找出这个单词。对于您每一次猜测,如果一个字母处于正确的位置,或者一个字母存在于单词中但不在正确的位置,您都会得到通知。如果程序认为您在某个单词上有困难,它会给您一个额外的奖励字母(在屏幕顶部,第一个屏幕上用橙色标出)。
一个典型的游戏过程如下:

开始时,游戏提供两个字母“n”和“o”。我们必须在最多五次尝试中猜出这个单词。我们的第一次尝试是“notes”,其中“n”、“o”和“t”用红色高亮显示,表示它们不在正确的位置,而“s”用绿色高亮显示,表示它在正确的位置。如果输入无效单词(“sugam”),您将有效地错过一次机会,并且字母将不会被处理。
游戏允许您控制难度级别。右键单击窗体可选择将难度设置为简单、中等或困难。选择难度级别后,游戏中需要猜测的单词将是该难度级别的单词。

游戏使用一个包含超过 12,000 个单词的单词列表。我无法验证列表中的所有单词,因为我从各种来源收集了它们,并在此过程中将它们合并在一起。(大量搜索帮助了我很多!)
在玩家完成一个单词后,窗体底部附近会出现一个链接,点击该链接应可转到WordNet网站,并使用其在线应用程序获取该单词的定义。并非所有单词都能获得定义,因为 Lingo 中使用的单词列表非常大(大多数单词过于生僻)。
那么,为什么不立即下载源代码和可执行文件,试一试这个小游戏呢?
您可以单独下载可执行文件。有一个基本版本和一个 Edition Black 版本。
Using the Code
整个解决方案和源代码文件都包含在 zip 文件中。该解决方案文件是在 Visual Studio 2008 Orcas Beta 2 中创建的。如果您无法打开它,您可能需要在您的 Visual Studio 版本中创建一个新项目,并将 Lingo 文件夹下的所有文件添加到其中。图标和单词列表文件(Lingo\Words\Lingo.txt)需要作为嵌入资源添加到程序集中。它使用 .NET 2.0 编译。
我不会在这里给出任何代码的描述或片段;代码已经相当完善,应该很容易理解。[毕竟,这只是一个简单的游戏。 :)]
更新:我为游戏添加了一些淡入淡出效果。我在窗体上大量使用了标签,并扩展了 Label
类来创建 FadeLabel
类。这个新标签能够过渡其前景色和背景色。不妨看看。
更新 (2007 年 8 月 22 日):我上传了游戏的Edition Black 版本供下载。目前没有源代码,因为它仍在开发中。完成后我会尽快上传。在技术方面,我在这款游戏中大量使用了图像(截图中的那些彩色字母),整体采用黑色主题。在 UI 方面还需要一些打磨,但游戏应该至少是可玩的。
关注点
编写这个游戏时,我唯一需要真正思考的方面就是如何满足以下我提出的要求:
假设要猜测的单词是“lingo”。假设“oodle”是您建议的一个单词。
处理您的猜测后,应输出以下内容:
- 正确字母:无
- 位置错误的字母:第一个位置的“o”,第四个位置的“l”
请注意,第二个“o”不应被列为位置错误的字母,因为我们已经报告了前面的一个“o”。所以,如果您输入“ooooo”,只有最后一个字母会被高亮显示,因为它处于正确的位置;如果您输入“ooooz”,只有第一个字母会被高亮显示,而不是其他“o”们。希望您能明白其中的意思。
乍一看,这似乎很简单(而且最终确实很简单)。但我建议,在您查看代码了解我是如何解决这个问题的之前,请先自己尝试设计一个算法(如果您愿意的话,这只需要几分钟时间,如果您喜欢这类东西,会很有趣)。当您准备好一个算法后,再与我实现的解决方案进行比较。如果您的算法更简单,也请告诉我。
历史与更新
- 2007 年 8 月 17 日:初始发布
- 2007 年 8 月 18 日:已添加小型增强和新功能
- [+] 如果程序检测到您在某个单词上有困难,它将给您一个额外的奖励字母,以便您能够猜出该单词
- [+] 包含一个奖励分数计数器,当您猜出单词时会加到您的基础分数中。其理念是,您猜出单词的速度越快,分数就越高。
- [~] UI 已进行了微调,使其看起来更好
- [~] 修改了初始两个随机字母的选择方式
- 2007 年 8 月 19 日:新功能
- [+] 添加了淡入淡出标签。有关更多详细信息,请参阅源代码文件中的
FadeLabel
类 - [+] 为游戏创建了主 Lingo 图标
- [+] 添加了淡入淡出标签。有关更多详细信息,请参阅源代码文件中的
- 2007 年 8 月 22 日:Edition Black 发布
- [+] 游戏新版本。UI 进行了大量增强。此版本采用黑色主题和彩色字母按钮
- [+] 为游戏创建了许多新图标,主要用于 Edition Black
致谢
应用程序中的图标来自Silk Icon Set[^],可从 FamFamFam.com[^] 免费获取。该图标集包含 1000 个 16x16 的图标。该网站还有其他图标集。请看一看。
上面来源中未使用的图标是我使用 Inkscape、Paint.NET 和 GIMP 组合制作的。
最后的收尾
就这些了。现有应用程序可以进行许多增强,从代码重构到 UI 增强,添加计时器、音乐、图形和效果,多人游戏?(嗯)……欢迎提出您的想法。
最后,如果您喜欢文字游戏,我希望 Lingo 能在您度过有趣的 5 分钟时引起您的注意。
享受。