实战小项目_猜数字小游戏

猜数字游戏

  • 基本功能: 在1-100中间随机生成一个整型数字,选手进行猜测,直到猜中为止,选手每猜错一次从总成绩中扣除3分,初始成绩为100,最低成绩为0;
  • 随机数字生成: 利用函数 rand() ,该函数会根据一个初始值(随机种子)经过一系列的运算产生一个数字序列,随机种子不变则该数字序列不遍,因此单纯利用 rand() 函数不能完全实现产生随机数,需要借助 srand() 函数每次来生成随机的初始值(随机种子),参数带入当前的时间戳(因为时间戳是一个每时刻都不相同的变量),srand(time(0));
  • 时间戳: 时间戳是是指从 1970年01月01日00时0分0秒开始 到目前为止的总秒数
  • 基本思想: 选手输入的数字和随机生成的数字进行对比,从而给出"大了!","小了!"的提示,直到选手猜中数字将会提示 “猜中了!”

代码不是特别简洁 还需要改进

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

// 猜数游戏,在1-100中间随机生成一个整数,选手进行猜数,直到猜中为止
// rand() 函数产生随机数
// srand() 函数产生随机种子
int GetNum(void) {
	int choice;
	printf("*********************************\n");
	printf("*********1-开始一局新游戏********\n");
	printf("*************2-结束游戏**********\n");
	printf("*********************************\n");
	printf("输入你的选择:");
	scanf("%d", &choice);
	srand(time(0));
	if (choice == 1) {
		printf("开始输入你猜的数字:");
		return rand() % 100 + 1;
	}
	else if (choice == 2) {
		return 0;
	}
	printf("您的输入非法!!!请重新输入!!!\n\n\n");
	return -1;
}
int main() {
	// 定义一个中间数字为用户输入的数字 mid ,将 mid 和随机数相比较,从而确定随机数字所在的更小范围,直到找出随机数
	// rand() 随机数的产生要依赖于一个初始值(随机种子),根据这个随机种子会产生一个数字序列,随机种子相同产生的数字序列相同
	// 因此为产生一个完全随机的数字序列,必须每次运行函数的随机种子不相同。
	// 我们利用随机种子设置函数 srand() 引入参数 time(0) 获取当前的时间戳,
	// 时间戳总不相同因此生成了完全随机的初始值,从而生成完全随机的数字序列。
	int mid = 1;
	int randnum;
	int score = 100;

	while (mid != 0) {
		randnum = GetNum();
		if (randnum != 0 && randnum != -1) {
			while (1) {
				scanf("%d", &mid);
				if (randnum < mid) {
					printf("大了!\n");
					score -= 3;
				}
				else if (randnum > mid) {
					printf("小了!\n");
					score -= 3;
				}
				else {
					printf("猜中了!\n");
					if (score <= 0) {
						score = 0;
					}
					printf("最终成绩为:%d 分\n\n\n\n", score);
					break;
				}
			}
		}
		else if (randnum == 0) {
			printf("游戏结束!!!\n");
			break;
		}
	}

	system("pause");
	return 0;
}

你可能感兴趣的:(小游戏,小程序)