要求:随机生成一个1-100之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或者过小,如果猜对恭喜玩家胜利,并且退出游戏。
实现历程:
一开始是在main()函数中直接实现简单的猜数字游戏,后来经过一步步探索,增加了一个选择界面:玩家选择1 开始游戏,选择0 直接退出游戏,输入其他选项 重新输入;把猜数字游戏封装为myGuess函数,并增加一个计数的功能。
随机数范围:
int num = rand() % n + a; a是起始值,n+a-1是终止值,n是整数的范围。
创建随机数种子:
srand((unsigned int)time(NULL)); 利用当前系统时间生成随机数,防止每次随机数都一样。
另外,在switch语句中,结束程序我选择了return和exit,因为使用break的话,只是会退出switch语句,程序会再次执行while,开始下一轮游戏。
程序如下:
#include <iostream>
using namespace std;
void myGuess()
{
int num = rand() % 100 + 1;//生成1到100的随机数
//cout << num << endl;//用于查看随机数具体是多少,方便测试
int myNum = 0;
cout << "请输入你的猜测(只能是 1~100):" << endl;
int count = 0;//用于计数猜了多少次
bool flag = false;//设置标志位 为true时结束猜数
while (!flag)
{
cin >> myNum;
if (myNum >= 0 && myNum <= 100)
{
if (myNum > num)
{
cout << "猜大了,重新猜" << endl;
count++;
flag = false;
}
else if (myNum < num)
{
cout << "猜小了,重新猜" << endl;
count++;
flag = false;
}
else if (myNum == num)
{
count++;
cout << "恭喜你,用了" << count << "次猜出来" << endl;
flag = true;//猜出来了 标志设为 true
}
}
if (count > 4)//一共有5次猜测机会
{
cout << "抱歉,你的机会已经用完" << endl;
flag = true;
}
if (flag == true)
{
break;//退出while循环
}
}
}
int main()
{
srand((unsigned int)time(NULL));//创建随机种子 利用当前系统时间生成随机数,防止每次随机数都一样
//设置一个简单的选择界面
cout << "***************************" << endl;
cout << "******* 1、开始游戏 *******" << endl;
cout << "******* 0、退出游戏 *******" << endl;
cout << "***************************" << endl;
int select = 0;
while (true)
{
cout << "请输入你的选择:" << endl;
cout << "1、开始游戏" << endl;
cout << "0、退出游戏" << endl;
cin >> select;
switch (select)
{
case 1:
myGuess();
system("pause");
return 0;//退出程序
//break;//如果使用break,将会退出switch,但还是会再次执行while循环
case 0:
cout << "退出成功!" << endl;
system("pause");
exit(0);//在调用处强行退出程序,运行一次程序就结束 参数:0表示程序正常结束,非0表示程序非正常结束。
default:
cout << "输入有误,请重新输入" << endl;
break;
}
}
system("pause");//按任意键继续
return 0;
}
认真的敲打了一遍,才发现自己有很多小知识点都没记住,未来的学习之路还很长很长,向各位大佬学习!
版权声明:本文为m0_55614270原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。