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

2024-03-25 05:59
文章标签 优化 版本 金铲 记牌器

本文主要是介绍金铲铲记牌器(待优化版本),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        由于在玩金铲铲的时候每次升到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.效果图

以下是效果图

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

这篇关于金铲铲记牌器(待优化版本)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844047

相关文章

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

Python包管理工具uv下载python版本慢问题解决办法

《Python包管理工具uv下载python版本慢问题解决办法》uv是一个非常快的Python包和项目管理器,用Rust编写,使用热缓存安装Trio的依赖项的速度对比,:本文主要介绍Python包... 目录发现问题对于 MACOS / linux 用户 (zsh/bash):对于 Windows 用户:总

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.