//1.电脑会生成一个随机数 2.猜数字
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <windows.h>
#define Number 100
void color(short x) //自定义函根据参数改变颜色
{
if (x >= 0 && x <= 15)//参数在0-15的范围颜色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x); //只有一个参数,改变字体颜色
else//默认的颜色白色
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void menu() //界面菜单函数
{
color(0);
system("cls");
color(16);
printf("|--------猜数字游戏^o^/------|\n");
printf("|****************************|\n");
printf("|-------★1:开始游戏★-------|\n");
printf("|-------★0:退出游戏★-------|\n");
printf("|****************************|\n");
printf("|--------INPUT(1~100)--------|\n");
printf("\n");
}
//游戏具体实现功能
int game()
{
//1.生成随机数
//rand();功能随机生成数字 0~32767之间
int red = 0;//red负责接收rand的参数
int guess = 0;//猜数字初始值
red = rand()%100+1;//rand生成1-100数字。
//这里解释一下为什么是1-100:而rand()%100表示取100以内的随机数,即取了随机数之后再对100取余。因而是0~99.
//2.猜数字
while (1)
{
//计数功能,输入数字进行计次。
while (1)
{
static int i;
i++;
color(5);
printf("|═══════════════════════|\n");
printf("|第%d次-->猜数字>(*^_^*):|\n",i);
printf("|═══════════════════════|\n");
printf("---\n");
color(14);
scanf("%d", &guess);
printf("---\n");
if (guess == red)
i = 0;
break;
}
//一共三种情况
if (guess>red && guess<=Number)
{
color(9);
printf(" ------\n");
printf("|猜大了|\n");
printf(" ------\n");
}
else if (guess>Number)
{
printf("|═══════════════════════════|\n");
printf("|宁输入的数字大于游戏规定范围\n");
printf("|═══════════════════════════|\n");
}
else if (guess<red)
{
color(9);
printf(" ------\n");
printf("|猜小了|\n");
printf(" ------\n");
}
else
{
color(11);
printf("\n");
printf("|------------|\n");
printf("|恭喜你猜对了|\n");
printf("|------------|\n");
printf("休息5s再来吧(*^_^*)\n");
Sleep(5000);//睡眠5s
break;
}
}
return red;
}
int main(void)
{
int number = 0;
//拿时间戳来设置随机数字的生成起始点time
srand((unsigned)time(NULL));//srand();功能:生成随机数,要在rand()前调用
//srand函数在工程中调用一次即可
do
{
menu();//打印出菜单
color(12);
printf("~~~~~~~~~~~~~~~~~~~~~\n");
printf("请选择是否登入游戏->:");
scanf("%d", &number);
printf("\n~~~~~~~~~~~~~~~~~~~~~\n");
//switch用于多分支语句:在此程序中分支1和0,如果输入其它(数字)用default进行错误
switch (number)
{
case 0:
printf("退出游戏\n");
break;
case 1:
game();//猜数字游戏
break;
default:
color(13);
printf("|════════════════════|\n");
printf("|青柠重新输入ありがど|\n");
printf("|════════════════════|\n");
Sleep(4000);
break;
}
}
while (number);//至少进入循环一次!
return 0;
}
评论