由于在玩金铲铲的时候每次升到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.效果图
以下是效果图
希望各位看官能给出更多的建议!