MyFirstDemo_(项目示例)皇帝Emperor
Emperor
数组
1、皇帝下旨选妃 (增加功能)
2、翻牌宠幸 (修改状态功能)
3、打入冷宫 (删除功能)
4、单独召见爱妃(查找功能)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//支持字符串操作#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")#define MAX 6
int main()
{//使用字符数组表示字符串int i, j, count = 5,temp;int a;char emperorName[50]; //皇帝的名号int choice ; //皇帝的选择1—4之间int searchIndex = -1; //用来存放查找到元素的下标char tempName[20] ; //用来存放临时字符串变量char names[MAX][20] = {"貂蝉","杨玉环","不知火舞","西施","郭德纲"};//嫔妃的级别数组char levelNames[5][10] = {"贵人","嫔妃","贵妃","皇贵妃","皇后"};//[10]表示最多5个字//levels用来存放每位妃子的级别,每个数组元素对应每个妃子的当前级别int levels[MAX] = {1, 2, 0, 0, 4, -1};//loves数组中每个元素的对应每个妃子的好感度,初始情况,每个人的好感度都为100int loves[MAX] = {100, 100, 100, 100, 100, -99999};printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");printf("请输入当前登基的皇帝名号:");scanf("%s",emperorName);//录入字符串时,不需要&符号for (a = 0; a < 10; a++){ printf("当前为第%d次游戏\n",a + 1);//播放音乐PlaySound(TEXT("sounds\\苍山.wav"),NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);printf("皇帝%s驾临,有事上奏,无事退朝\n",emperorName);printf("1、皇帝下旨选妃:\t\t(增加功能)\n");printf("2、翻牌宠幸: \t\t(修改状态功能)\n");printf("3、打入冷宫: \t\t(删除功能)\n");printf("4、单独召见爱妃 \t\t(查找功能)\n");printf("陛下请选择:");scanf("%d",&choice);switch (choice){case 1:PlaySound(TEXT("sounds\\小城谣.wav"),NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);//printf("1、皇帝下旨选妃:\t\t(增加功能)\n");//1、增加前需要判断数组有没有空间//2、增加数组元素(names/loves/levels)if (count < MAX)//如果当前的妃子数量小于系统最大值{//执行添加操作printf("请输入娘娘名讳:");scanf("%s",names[count]);//将第count个元素的状态levels[count] = 0;//级别初始状态为0loves[count] = 100;//好感度初始状态为100count++;//添加完元素后,记得增加计数器}else{printf("陛下要注意龙体,后宫已经人满为患了"); }printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");break;case 2:PlaySound(TEXT("sounds\\断肠天涯.wav"),NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);//printf("2、翻牌宠幸:\t\t(修改状态功能)\n");//1、找到要宠幸的妃子的下表//2、修改这个妃子的状态 好感度+10,级别升1级如果最高级就不再升级//3、修改其他妃子的状态 好感度-10//4、需要解决的BUG:未支持姓名不存在的情况printf("陛下,请选择今晚侍奉的娘娘:");scanf("%s",tempName);//字符串的查找,strcmp,需要引入<string.h>//strcmp(tempName,"abc") == 0-两个字符串相等,1-前一个大于后一个,-1-前一个小于后一个for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0 )//比较字符串是否相等{//记录下要查找的下标searchIndex = i;break;}}if (-1 == searchIndex )//如果searchIndex的值为初值-1,表示没有找到{printf("陛下,没有叫此名字的娘娘\n");}else{for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0)//如果输入的姓名刚好等于数组中的某个名字{loves[i] += 10;//级别要注意,不能超过5级(0-4之间)levels[i] = levels[i] >=4 ? 4:levels[i] + 1;//?简写“:”意思为否则}else{loves[i] -= 10;}}printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");}break;case 3:PlaySound(TEXT("sounds\\花落.wav"),NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);//printf("3、打入冷宫:\t\t(删除功能)");//1、查找//2、后面一个赋给前面一个元素//3、总数--//4、修改其他妃子的状态,好感度加20printf("陛下,请选择要打入冷宫的娘娘:");scanf("%s",tempName);for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0 )//比较字符串是否相等{//记录下要查找的下标searchIndex = i;break;}}if (-1 == searchIndex )//如果searchIndex的值为初值-1,表示没有找到{printf("虚惊一场,无人被打入冷宫\n");}else{for (i = searchIndex; i < count - 1; i++){//names[i]= names[i + 1];因为是字符数组,C语言中不支持数组的直接赋值//我们需要使用strcpy函数实现数组的赋值,后续课程讲解strcpy(names[i], names[i + 1]);loves[i] = loves[i + 1];levels[i] = levels[i + 1];}count--;printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");}break;case 4:PlaySound(TEXT("sounds\\命定情缘.wav"),NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);//printf("4、单独召见爱妃\n");//1、查找//2、增加此妃子的好感度即可printf("陛下,请选择要单独召见的娘娘:");scanf("%s",tempName);for (i = 0; i < count; i++){if (strcmp(tempName,names[i]) == 0){searchIndex = i;//记录ibreak;}}if (searchIndex == -1)//没有找到{printf("陛下,没有你要召见的娘娘\n");}else{loves[searchIndex] += 10;printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");}break;default:printf("君无戏言,陛下请再次确认!\n");}printf("********************************************\n");}//最后打印妃子状态前,以级别进行排序,使用冒泡排序for (i = 0; i < count -1; i++){for (j = 0; j < count - i -1; j++){if (levels[j] < levels[j + 1]){//需要交换姓名级别好感度temp = levels[j];levels[j] = levels[j + 1];levels[j + 1] = temp;temp = loves[j];loves[j] = loves[j + 1];loves[j + 1] = temp;//注意字符串的交换strcpy(tempName,names[j]);strcpy(names[j],names[j + 1]);strcpy(names[j + 1],tempName);}}}printf("********************************************\n");printf("测试代码:查看当前嫔妃的状态\n");printf("%-12s级别\t好感度\n","姓名");for (i = 0; i < count; i++){printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}printf("********************************************\n");PlaySound(TEXT("sounds\\断肠天涯.wav"),NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);printf("游戏结束\n");return 0;
}
MyFirstDemo_(项目示例)皇帝Emperor相关推荐
- Spring MVC 搭建web项目示例
转载自:Bird鸟人 的博文<Spring MVC 搭建web项目示例> https://blog.csdn.net/wcc27857285/article/details/8174903 ...
- vue项目示例代码git_您应该了解的5个Git命令以及代码示例
vue项目示例代码git I've used Git for some years now, and I still find myself googling how to do some basic ...
- element 项目 示例_Java ArrayDeque element()方法与示例
element 项目 示例 ArrayDeque类element()方法 (ArrayDeque Class element() method) element() Method is availab ...
- jnlp文件服务器数据提取,jnlp 项目示例
jnlp项目示例 1-创建一个可执行jar 2-为jar添加签名 3-编写 jnlp 文件 4-发布前三步的文件到服务器 5-测试执行 问题 浏览器输入Url只下载不执行 & 双击.jnlp ...
- 基于qiankun搭建ng-alain15微前端项目示例实践
基础环境 实践日期:2023-03-04 ng versionAngular CLI: 15.2.1 Node: 18.14.2 Package Manager: npm 9.5.0 OS: win3 ...
- Vue入门之Web端CURD前端项目示例
Vue入门之Web端CURD前端项目示例 随着vue.js越来越火,很多不太懂前端的小伙伴想要入坑.而入坑最好的办法就是上手实际操作,因此本文将重点放在实际操作上,对理论不做过多解释,不明白的地方小伙 ...
- yh-app(基于vue和uni-app的前端项目示例)
yh-app 简介 yh-app是一个高度模仿手机端樱花动漫的前端项目,旨在提供一个通俗易懂.简洁明了的前端项目示例,帮助开发者熟悉例如vue.css以及uni这类比较常见的技术在实际项目开发中的使用 ...
- asp.net core系列 59 Ocelot 构建基础项目示例
一.入门概述 从这篇开始探讨Ocelot,Ocelot是一个.NET API网关,仅适用于.NET Core,用于.NET面向微服务/服务的架构中.当客户端(web站点.ios. app 等)访问we ...
- NANUI能否运行在linux,Nanui 项目示例
最近接到一个项目 是关于构建一套 电脑端会员管理系统 但考虑到个人比较喜欢写Web 便首选Nanui构建项目. 中间遇到一些坑 但都已解决 ,便提供给大家参考.希望能帮助到大家-_- 项 ...
最新文章
- 分享Css3设计---纯Css实现超酷的iphone玻璃气泡效果
- 腾讯新预训练模型LP-BERT
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果
- 使用Idea从github上获取项目
- 项目使用encode_Spring Cloud Security:Oauth2使用入门
- Pipenv管理Python虚拟环境
- 机器学习基础—Kaggle泰坦尼克预测(完整分析)
- 音视频开发(33)----麦克风阵列入门(一)
- Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
- Linux基础命令1
- visio作图的一系列坑
- HGHAC已保留的连接位置为执行非复制请求的超级用户预留
- [渝粤教育] 江西财经大学 中国会计准则(全英文) 参考 资料
- Android APP升级时解析程序包时出现问题
- 大内密探HMM(转)
- android移除fragment,Fragment 的创建、替换与移除
- 交通违章查询接口代码示例
- 【TCP专题】TCP连接建立
- # [解构如何运用的解构--报错 throw new TypeError(‘Router.use() requires a middleware function but got a ‘ + gett
- 迷宫求解【穷举求解法】