本文主要是介绍金铲铲记牌器(待优化版本),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
由于在玩金铲铲的时候每次升到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;elseprintf("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);elseprintf(" %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);elseprintf(" %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;elseprintf("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.效果图
以下是效果图
希望各位看官能给出更多的建议!
这篇关于金铲铲记牌器(待优化版本)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!