首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >开关语句与“选择您自己的冒险”中的If语句

开关语句与“选择您自己的冒险”中的If语句
EN

Stack Overflow用户
提问于 2013-06-13 23:35:43
回答 6查看 2.1K关注 0票数 0

我如何解释在“选择你自己的冒险”游戏中如何和何时使用if语句和开关语句?

游戏基本上是结构化的,如果你提出了一个特定的答案,它会改变游戏的流程或方向。我通常用带函数的if-语句,但这是最有效和最简单的教学方法吗?

谢谢!

编辑:哇,谢谢你这么多伟大的答案!!最后一个注意:如果你是一个13岁的孩子,在没有任何编程知识的情况下试图掌握这个概念,你将如何尝试去理解它呢?说真的,非常感谢你的帮助!

EN

回答 6

Stack Overflow用户

发布于 2013-06-14 00:20:21

对于“我已经收到了这个输入,我现在该做什么”有五个不同的解决方案。

  1. 如果.如果.链条。优点是您可以使用任何可以生成truefalse的表达式。缺点是当你有很长的链子时,它会变得很混乱。
  2. 开关-伟大的“有许多几乎类似的事情要做”。缺点是case标签必须是整数值(或char值,而不是字符串、浮点值等)。
  3. 使long if/else变成一个简单得多的if(table[index].something) ...的表
  4. 函数指针--某种形式的表指针变体--存储一个指向函数的指针,如果你朝这个方向移动,它可以做你想做的任何事情。
  5. 对象使用虚拟函数。同样,table解决方案的一个变体,但不是存储函数指针,而是存储一些成员函数的对象,我们可以使用这些函数来“做您需要做的任何事情”。

在这种情况下,正确的解决方案可能是对后三个中的一个进行组合/变体--至少在我看来。

票数 3
EN

Stack Overflow用户

发布于 2013-06-13 23:38:45

当您标识数值或序数值的情况时,请使用switch语句。

代码语言:javascript
运行
复制
switch (number)
{
    case 1: DoSomething();
        break;

    case 2: DoSomethingElse();
        break;
}

对于更复杂的条件,如数值范围,使用ifelseifelse

代码语言:javascript
运行
复制
if (number > 0 && number <= 100)
{
   DoSomething();
}
else if (number > 100 && number <= 1000)
{
   DoSomethingElse()
}
else
{
   NotifyOutOfRange();
}
票数 2
EN

Stack Overflow用户

发布于 2013-06-13 23:43:32

在这个场景中,您所描述的if语句几乎是您最好的选择,因为代码需要将用户提供的答案与一些预定义的选项进行比较。

这些选项很可能是字符串。switch语句在C++中不能在字符串上工作。因此,一系列if语句可能会更简单。

当回答仅由一个数字或一个字符组成时,可以使用switch语句。

例如,游戏主菜单的代码片段可能如下所示:

控制台输出:

代码语言:javascript
运行
复制
Please select an action:
1) Start a new game.
2) Go to options screen.
3) Quit game.

代码:

代码语言:javascript
运行
复制
int userChoice = getUserInput();

switch(userChoice){
case START_NEW_GAME: //1
    startGame(); break;
case OPTIONS: //2
    showOptions(); break;
case QUIT: //3
    exit(); break;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17098950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档