金铲铲记牌器(待优化版本)

        由于在玩金铲铲的时候每次升到9级或者10级开始d五费卡的时候,我的大脑没法帮我计算d哪个5费卡比较好,所以写了一个5费卡记牌器。(本程序c语言小白所写)

        主要由4个函数组成

1.菜单函数

void menu()
{
	printf("*****************************************\n");
	printf("*******  1.使用记牌器    0.exit  ********\n");
	printf("*****************************************\n");
	printf("please input a number >:");
}

2.开始函数

void start()
{
	int input = 0;
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
			case 1:
				game();
				break;
			case 0:
				printf("退出程序");
				break;
			default:
				printf("选择错误,请重新选择!\n");
		}
	} while (input);
}

3.game函数(内部主要程序)

void game()
{
	int piece_sub, piece_add, hero_identifier, piece_add_sub;
	char sign;
	struct piece hero[10] = { {"1.斯维因",10},{" 2.永恩 ",10},{" 3.瞎子 ",10},
							{"4.莎弥拉",10},{" 5.鸡哥 ",10},{" 6.奥恩 ",10},{" 7.老头 ",10},{"8.复制器",0}};
	printf("请输入英雄序号\n请输入符号增加>:'+',减少>:'-'\n请输入增加或者减少数量\n用空格隔开\n\n");
	display(hero);
	while (1)
	{
		scanf("%d %c %d", &hero_identifier, &sign, &piece_add_sub);
		if (sign == '-')
			piece_add_sub = -piece_add_sub;
		else if (sign == '+')
			piece_add_sub = piece_add_sub;
		else
			printf("input error,please reenter!\n");
		hero[hero_identifier - 1].num += piece_add_sub;
		if (hero[hero_identifier - 1].num > 10|| hero[hero_identifier - 1].num < 0)
		{
			printf("input error,please reenter!\n");
			hero[hero_identifier - 1].num -= piece_add_sub;
			display(hero);
			continue;
		}
		display(hero);
	}
}

4.显示函数

void display(struct piece hero[])
{
	printf("Hero name         :  ");
	for (int i = 0; i < fee_5; i++)//显示名字
	{
		printf(" %s  ", hero[i].name);
		printf("|");
	}
	printf("\n");
	printf("Remaining quantity:  ");
	for (int i = 0; i < fee_5; i++)//显示数量
	{
		if (hero[i].num < 10)
			printf("    %d个    ", hero[i].num);
		else
			printf("   %d个    ", hero[i].num);
		printf("|");
	}
	printf("\n");
	for (int i = 0; i < fee_5-1; i++)
	{
		if (hero[i].num + hero[7].num >= 9)
		{
			printf("%s ", hero[i].name);
		}
	}
	printf("可追三星");
	printf("\n\n");
}

5.最后附上完整代码(有待优化)

#define  _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
#define fee_5 8
struct piece
{
	char name[20];
	int num;
};
void display(struct piece hero[])
{
	printf("Hero name         :  ");
	for (int i = 0; i < fee_5; i++)//显示名字
	{
		printf(" %s  ", hero[i].name);
		printf("|");
	}
	printf("\n");
	printf("Remaining quantity:  ");
	for (int i = 0; i < fee_5; i++)//显示数量
	{
		if (hero[i].num < 10)
			printf("    %d个    ", hero[i].num);
		else
			printf("   %d个    ", hero[i].num);
		printf("|");
	}
	printf("\n");
	for (int i = 0; i < fee_5-1; i++)
	{
		if (hero[i].num + hero[7].num >= 9)
		{
			printf("%s ", hero[i].name);
		}
	}
	printf("可追三星");
	printf("\n\n");
}
void menu()
{
	printf("*****************************************\n");
	printf("*******  1.使用记牌器    0.exit  ********\n");
	printf("*****************************************\n");
	printf("please input a number >:");
}
void game()
{
	int piece_sub, piece_add, hero_identifier, piece_add_sub;
	char sign;
	struct piece hero[10] = { {"1.斯维因",10},{" 2.永恩 ",10},{" 3.瞎子 ",10},
							{"4.莎弥拉",10},{" 5.鸡哥 ",10},{" 6.奥恩 ",10},{" 7.老头 ",10},{"8.复制器",0}};
	printf("请输入英雄序号\n请输入符号增加>:'+',减少>:'-'\n请输入增加或者减少数量\n用空格隔开\n\n");
	display(hero);
	while (1)
	{
		scanf("%d %c %d", &hero_identifier, &sign, &piece_add_sub);
		if (sign == '-')
			piece_add_sub = -piece_add_sub;
		else if (sign == '+')
			piece_add_sub = piece_add_sub;
		else
			printf("input error,please reenter!\n");
		hero[hero_identifier - 1].num += piece_add_sub;
		if (hero[hero_identifier - 1].num > 10|| hero[hero_identifier - 1].num < 0)
		{
			printf("input error,please reenter!\n");
			hero[hero_identifier - 1].num -= piece_add_sub;
			display(hero);
			continue;
		}
		display(hero);
	}
}
void start()
{
	int input = 0;
	do
	{
		menu();
		scanf("%d", &input);
		switch (input)
		{
			case 1:
				game();
				break;
			case 0:
				printf("退出程序");
				break;
			default:
				printf("选择错误,请重新选择!\n");
		}
	} while (input);
}
int main()
{
	start();
	return 0;
}

6.效果图

以下是效果图

希望各位看官能给出更多的建议!

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值