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

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.76/5 (11投票s)

2007年8月17日

CPOL

7分钟阅读

viewsIcon

93495

downloadIcon

6716

Lingo 是一款简单的五字母单词游戏,使用 C# 编写。它基于同名的流行电视游戏节目。游戏的理念很简单:你有五次机会猜出一个五字母单词,游戏开始时会给出该单词中的两个字母。

引言

Screenshot - Lingo.pngingo 是一款简单的单词游戏,基于同名的流行电视游戏节目。游戏理念是让玩家有五次机会猜出一个五字母单词,游戏开始时会给出该单词中的两个字母。在过程中,对于每一次猜测,如果猜测中的某个字母与原单词中的字母位置相同,或者某个字母存在于原单词中但位置不同,玩家将得到提示。

游戏玩法

Lingo 具有以下游戏元素:

  • 五次机会猜出一个五字母单词
  • 开始时会标出两个字母
  • 正确字母以及存在于原单词但位置不正确的字母将高亮显示
  • 检查玩家输入的单词是否有效(如果单词无效,玩家将失去一次机会)
  • 得分基于猜出单词所需的次数。第一次猜对得 5 分,最后一次尝试猜对得 1 分
  • 提供一种选择游戏难度的方法。有三个级别(简单、中等和困难)。每个级别都有自己独特的单词集,总的五字母单词词典有超过 12,000 个单词。大多数单词非常生僻,但这是一个很好的列表。
  • 提供一种机制,让您可以从任何需要您休息 5 分钟的事情中获得一个急需的 5 分钟休息时间。 :)

这是 Lingo 启动时的屏幕样子。

Screenshot - Screen_New.jpg

Edition Black 版本看起来如下。

Screenshot - Edition_Black.jpg

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

一个典型的游戏过程如下:

Screenshot - Screen_New_InGame.jpg

开始时,游戏提供两个字母“n”和“o”。我们必须在最多五次尝试中猜出这个单词。我们的第一次尝试是“notes”,其中“n”、“o”和“t”用红色高亮显示,表示它们不在正确的位置,而“s”用绿色高亮显示,表示它在正确的位置。如果输入无效单词(“sugam”),您将有效地错过一次机会,并且字母将不会被处理。

游戏允许您控制难度级别。右键单击窗体可选择将难度设置为简单、中等或困难。选择难度级别后,游戏中需要猜测的单词将是该难度级别的单词。

Screenshot - Screen_New_Options.jpg

游戏使用一个包含超过 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 分钟时引起您的注意。
享受。

© . All rights reserved.