本节书摘来自异步社区出版社《C++游戏编程入门(第4版)》一书中的第2章,第2.1节,作者:【美】Michael Dawson(道森),更多章节内容可以访问云栖社区“异步社区”公众号查看。
C++游戏编程入门(第4版)像while循环一样,do循环也可以基于表达式重复执行部分代码。区别在于,do循环在每次循环迭代之后验证表达式。这意味着循环体总是至少要执行一次。下面给出do循环的一般形式:
do statement; while (expression)``` 程序执行statement,且只要验证为true,循环就重复进行。一旦expression验证为false,则循环终止。 ###2.7.1 Play Again 2.0程序简介 Play Again 2.0程序在用户看来和原始的Play Again一样。Play Again 2.0同样通过显示**Played an exciting game**模拟用户玩了一个令人兴奋的游戏,并询问用户是否再玩一次。只要用户输入y,就可以继续玩下去。然而,这次程序使用do循环来完成代码的重复执行。程序如图2.7所示。 从Cengage Learning网站(www.cengageptr.com/downloads)上可以下载到该程序的代码。程序位于Chapter 2文件夹中,文件名为play_again2.cpp。// Play Again 2.0// Demonstrates do loops
using namespace std;int main(){ char again; do { cout << "nPlayed an exciting game"; cout << "nDo you want to play again? (y/n): "; cin >> again; } while (again == ’y’); cout << "nOkay, bye."; return 0;}`
程序在do循环开始前声明了char型变量again。然而,并不需要对它进行初始化,因为直到第一次循环结束才会对其进行验证。循环体为again从用户获取新的值。然后在循环表达式中验证again。如果again等于y,则重复循环;否则,循环终止。
陷阱 如果在玩游戏的过程中陷入了相同的没有尽头的循环,那么有可能是遇上了无限循环,即没有终点的循环。下面给出一个无限循环的简单例子:
int test = 10; while (test == 10) { cout << test; }```` 在这种情况下,因为test值为10,程序进入循环。但因为test值从未改变,循环不会停止。结果是用户将必须强制终止运行程序。这段代码要说明什么?确保循环的表达式最后能成为false,或者有其他方式来终止循环。2.8节将介绍这种方式。 现实世界 尽管while和do循环都可以使用,大多数程序员都使用while循环。虽然do循环在某些情况下看来更自然,但while循环的优势在于循环表达式出现在循环的开头,这样就不用去循环结尾寻找。