我如何解释在“选择你自己的冒险”游戏中如何和何时使用if语句和开关语句?
游戏基本上是结构化的,如果你提出了一个特定的答案,它会改变游戏的流程或方向。我通常用带函数的if-语句,但这是最有效和最简单的教学方法吗?
谢谢!
编辑:哇,谢谢你这么多伟大的答案!!最后一个注意:如果你是一个13岁的孩子,在没有任何编程知识的情况下试图掌握这个概念,你将如何尝试去理解它呢?说真的,非常感谢你的帮助!
发布于 2013-06-14 00:20:21
对于“我已经收到了这个输入,我现在该做什么”有五个不同的解决方案。
true
或false
的表达式。缺点是当你有很长的链子时,它会变得很混乱。case
标签必须是整数值(或char
值,而不是字符串、浮点值等)。if(table[index].something) ...
的表table
解决方案的一个变体,但不是存储函数指针,而是存储一些成员函数的对象,我们可以使用这些函数来“做您需要做的任何事情”。在这种情况下,正确的解决方案可能是对后三个中的一个进行组合/变体--至少在我看来。
发布于 2013-06-13 23:38:45
当您标识数值或序数值的情况时,请使用switch
语句。
switch (number)
{
case 1: DoSomething();
break;
case 2: DoSomethingElse();
break;
}
对于更复杂的条件,如数值范围,使用if
、elseif
和else
。
if (number > 0 && number <= 100)
{
DoSomething();
}
else if (number > 100 && number <= 1000)
{
DoSomethingElse()
}
else
{
NotifyOutOfRange();
}
发布于 2013-06-13 23:43:32
在这个场景中,您所描述的if
语句几乎是您最好的选择,因为代码需要将用户提供的答案与一些预定义的选项进行比较。
这些选项很可能是字符串。switch
语句在C++中不能在字符串上工作。因此,一系列if
语句可能会更简单。
当回答仅由一个数字或一个字符组成时,可以使用switch
语句。
例如,游戏主菜单的代码片段可能如下所示:
控制台输出:
Please select an action:
1) Start a new game.
2) Go to options screen.
3) Quit game.
代码:
int userChoice = getUserInput();
switch(userChoice){
case START_NEW_GAME: //1
startGame(); break;
case OPTIONS: //2
showOptions(); break;
case QUIT: //3
exit(); break;
}
https://stackoverflow.com/questions/17098950
复制相似问题