#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;
}
基于c语言的简单加减法小游戏
于 2023-09-06 11:45:50 首次发布