猜数字游戏:随机生成1~100的数,让用户去猜。当猜的数比随机数大时,提示“猜大了”;当才的数比随机数小时,提示“猜小了”;猜的数与随机数相同时,提示“猜对了”。
1.整体框架
首先,在开始时要有一个菜单,菜单栏中打印出选项:1.paly、0.exit。
然后,玩家输入选项,当输入1时,开始游戏;输入0时,结束游戏;出去其他数时,重新输入。并且将游戏设置成可以循环玩的,玩完一次后,可以接着玩。
#include<stdio.h>
void menu()
{
printf("******************\n");
printf("***** 1.paly *****\n");
printf("***** 0.exit *****\n");
printf("******************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//用srand修饰rand
do
{
menu();
printf("请选择(1/0):>");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出游戏\n");
break;
case 1:
printf("开始游戏,请猜数字(1~100)\n");
game();//游戏
break;
default:
printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
2.游戏部分
当整体框架写完成后,运行测试一下。测试成功,开始写游戏部分game()代码。
游戏部分的设计主要为:系统生成一个数字——玩家输入——判断——猜错了——提示——重新输入——判断——猜对了(或是次数用尽了)
因为整个过程需要不断的输入、判断,所以需要用到while循环。(注意:生成随机数部分不能放进while循环中,否则每循环一次,都将生成新的随机数)
void game()
{
int num = rand() % 100 + 1;//生成1~100的随机数
int guess = 0;
int count = 6;
while (count--)//6次机会;后置++,先使用再++
{
printf("请输入:>\n");
scanf("%d", &guess);
if (guess > num)
{
printf("猜大了\n");
}
else if (guess < num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕.......
break;
}
}
printf("对不起,机会已用完\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕
}
(1)当使用rand()函数时创建随机值时,会发现每次的随机值都一样,利用MSDN,查询可知:
这时需要在主函数用srand修饰一下rand的函数,利用时间time,来生成一个随机数。
srand((unsigned int)time(NULL)),这里(unsigned int)将time的返回值强制类型转换,转成换无符号整型,然后给time传一个空指针(NULL)即可。使用rand需要包含头文件<stdlib.h>,使用time需要包含<time.h>。
(2)int num = rand() % 100 + 1,当随机数%100时,其范围是0~99,所以需要再+1。
(3)while (count--),这里指定有count次机会,后置--表示为先使用,再--,当count=0时结束循环。
(4)sleep(a)为停止运行a毫秒,system("cls")为清空屏幕,需包含头文件<windows.h>。
整体代码如下:
//猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
void menu()
{
printf("******************\n");
printf("***** 1.paly *****\n");
printf("***** 0.exit *****\n");
printf("******************\n");
}
void game()
{
int num = rand() % 100 + 1;//生成1~100的随机数
int guess = 0;
int count = 6;
while (count--)//6次机会;后置++,先使用再++
{
printf("请输入:>\n");
scanf("%d", &guess);
if (guess > num)
{
printf("猜大了\n");
}
else if (guess < num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕.......
break;
}
}
printf("对不起,机会已用完\n");
Sleep(500);//停止运行500毫秒
system("cls");//清空屏幕
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//用srand修饰rand
do
{
menu();
printf("请选择(1/0):>");
scanf("%d", &input);
switch (input)
{
case 0:
printf("退出游戏\n");
break;
case 1:
printf("开始游戏,请猜数字(1~100)\n");
game();//游戏
break;
default:
printf("输入错误,请重新输入\n");
}
} while (input);
return 0;
}
如果想将我们制作的游戏发给同学试玩,将VS中debug改成release,测试并保存,到项目保存的地方找到release文件。
X86为32位,推荐保存X64,将X64发给同学可正常运行。
点击release——将其中的exe文件发给同学即可。