基于c语言的简单加减法小游戏

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define MAX 20 // 定义最大玩家数量为20
static int num = 0;
struct Person {
	char name[20];// 玩家姓名
	int core;// 玩家核心得分
};
struct AllPerson {
	Person person[MAX];// 存储所有玩家的信息
	int size;// 存储玩家的数量
};
// 添加玩家函数,如果人数已满则提示无法继续游戏
int addPerson(AllPerson* allperson)
{
	if (allperson->size == MAX)
	{
		printf("游戏人员已满\n");
		system("pause");
		return 0;
	}
	printf("请输入用户姓名\n");
	scanf("%s", allperson->person[allperson->size].name);
	allperson->person[allperson->size].core = 0;
	return 1;
}
// 生成题目并判断答案是否正确,正确则增加核心得分
int progame(Person* person)
{
	int sum = 0,psum=0;
	int x = 0, y = 0, z = 0;
	srand(time(NULL));
	x = rand() % 101;
	y = rand() % 101;
	z = rand() % 2;
	if (z == 0)
	{
		sum = x + y;
		printf("%d+%d=的结果为\n",x,y);
		scanf("%d", &psum);
		if (psum == sum)
		{
			person->core+=20;
			return 1;
		}
		else {
			printf("答案错误,正确答案%d\n", sum);
			printf("按任意键继续\n");
			system("pause");
		}
	}
	else {
		sum = x - y;
		printf("%d-%d=的结果为\n",x,y);
		scanf("%d", &psum);
		if (psum == sum)
		{
			person->core+=20;
			return 1;
		}
		else {
			printf("答案错误,正确答案%d\n", sum);
			printf("按任意键继续\n");
			system("pause");
		}
	}
	return 1;
}

// 开始游戏,显示玩家信息并接收答案进行判断
int playGame(AllPerson* allperson)
{
	for (int i = 0; i < 5; i++)
	{
		system("cls");
		printf("%s请听第%d题\n", allperson->person[num].name,i+1);
		progame(&allperson->person[num]);
	}
	num++;
	return 1;
}
// 按照核心得分对玩家进行排序
int sortCore(AllPerson* allperson)
{
	for (int i = 0; i < allperson->size - 1; i++)
	{
		if (allperson->person[i].core < allperson->person[i + 1].core)
		{
			Person p;
			p = allperson->person[i];
			allperson->person[i] = allperson->person[i + 1];
			allperson->person[i + 1] = p;
		}
	}
	return 1;
}
// 显示所有玩家的核心得分
int selectcore(AllPerson allperson)
{
	sortCore(&allperson);
	for (int i = 0; i <allperson.size; i++)
	{
		printf("%s\t的得分为\t%d\t\n", allperson.person[i].name, allperson.person[i].core);
	}
	return 1;

}


// 主函数入口

int main()
{
	AllPerson allperson{};
	allperson.size = 0;
	int a = 0;
	while (true)
	{
		system("cls");
		printf("-------(1)开始游戏------\n");
		printf("-------(2)游戏排名------\n");
		printf("-------(0)结束游戏------\n");
		printf("-------菜单选择-------\n");
		scanf("%d", &a);
		switch (a)
		{
		case 1: // 选择开始游戏
		{
			addPerson(&allperson);
			printf("点击任意键开始游戏\n");
			system("pause");
			if (allperson.size != MAX) // 检查是否已满员
			{
				playGame(&allperson);
				allperson.size++;
			}
		}
			break;		
		case 2: // 选择查看排名
			system("cls");
			selectcore(allperson);
			system("pause");
			break;		
		case 0:// 选择结束游戏
			return 1;
		default: // 无效选择,重新选择
			printf("请重新选择\n");
			break;
		}
	}

	return 1;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值