#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <mmsystem.h>
pragma comment(lib,”Winmm.lib”)
//PlaySound(TEXT(“Music\1.wav”),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
define MAX 6 //常量MAX表示系统要求的最大妃子数量
int main()
{
mciSendString("open ./66.mp3",0,0,0);
mciSendString("play ./66.mp3",0,0,0);
//PlaySound(TEXT("bl5li-eecm6.wav"),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);
//使用字符数组表示字符串
int i,j,temp; //循环变量与临时整型变量
int count = 5; //未打入冷宫的个数
int choice; //皇帝的选择1-4
int searchIndex = -1; //用来存放查找元素的下标
char tempname[20]; //存放临时字符串
char emperorName[50]; //皇帝的名号
//嫔妃的名字
char names[MAX][20] = {"貂蝉","杨玉环","不知火舞","西施","慧婷"};
//嫔妃的级别数组
char levename[][10]= {"贵人","嫔妃","贵妃","皇贵妃","皇后"};
//存放美味妃子的级别,每个数组元素对应每位妃子的当前级别
int lovels[MAX] = {1,2,0,0,3,-9999};
//此数组对应每个元素的妃子好感度,初始的好感度都为100
int loves[MAX] = {60,70,50,50,100,-9999};
//PlaySound(TEXT("背景.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
printf("\n\n");
printf("测试:查看当前嫔妃的状态\n");
printf("%-12s级别\t好感度\n","姓名"); //-号是左对齐,这里-12s表示左对齐12字符
for(i=0;i\n");
printf("请输入当前登基的皇帝名号:");
scanf("%s",emperorName); //录入字符串不需要&符号
printf("当前皇帝是%s,万岁万岁万万岁!\n",emperorName);
printf("1、皇帝下旨选妃:\t(增加功能)\n");
printf("2、翻牌宠幸:\t\t(修改状态功能)\n");
printf("3、打入冷宫:\t\t(删除功能)\n");
printf("4、单独召见爱妃:\t(涩涩功能)\n");
printf("陛下请选择:");
scanf("%d",&choice);
mciSendString("close ./66.mp3",0,0,0);
switch(choice)
{
case 1: //皇帝下旨选妃:\t\t(增加功能)
//1.增加前需要判断数组有没有空间
//2.增加数组元素(names,loves,lovels)
//PlaySound(TEXT("1.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
mciSendString("open ./1.mp3",0,0,0);
mciSendString("play ./1.mp3",0,0,0);
if(count < MAX) //如果当前的妃子数量小于系统最大值
{
//执行添加操作
printf("请输入娘娘的名讳:");
scanf("%s",names[count]);
//将第count个元素的状态初始值
lovels[count]=0; //级别初始值为0
loves[count]=100; //好感度初始值为1000
count++; //增加妃子数量
}
else
{
printf("陛下要注意龙体呀!\n添加失败\n");
}
break;
mciSendString("close ./1.mp3",0,0,0);
case 2: //翻牌宠幸:\t(修改状态功能)
//1.找到要宠幸妃子的状态
//2.修改这个妃子的状态
//3.修改其他妃子的状态 由于羡慕好感度减10
//PlaySound(TEXT("2.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
mciSendString("open ./2.mp3",0,0,0);
mciSendString("play ./2.mp3",0,0,0);
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) //如果输入的姓名刚好等于数组中的某个姓名
{
loves[i] += 10;
//级别不能超过5级,原数组定义只有(0-4之间)
//大于或等于4 ?是如果 :是否则
lovels[i] = lovels[i] >=4 ? 4 : lovels[i]+1;
}
else
{
loves[i] -= 10;
}
}
/*
if{template!=names[i]}
{
printf("输入的娘娘名号有误!请输入正确的娘娘名号:");
scanf("%s",tempname);
}
*/
break;
mciSendString("close ./2.mp3",0,0,0);
case 3:
//PlaySound(TEXT("3.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
mciSendString("open ./3.mp3",0,0,0);
mciSendString("play ./3.mp3",0,0,0);
printf("3、打入冷宫!\t\t(删除功能)\n");
//1.查找
//2.后面一个赋给前一个元素
//3.总数--
printf("陛下,请输入要打入冷宫的娘娘:");
scanf("%s",tempname);
//循环查找
for(i = 0; i<count;i++)
{
if(strcmp(tempnam,names[i])==0)//比较字符串是否相等
{
searchIndex = i;
break;
}
}
if(-1 == searchIndex)
{
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];
lovels[i] = lovels[i+1];
}
count--;
}
break;
mciSendString("close ./3.mp3",0,0,0);
case 4:
//PlaySound(TEXT("4.wav"),NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
mciSendString("open ./4.mp3",0,0,0);
mciSendString("play ./4.mp3",0,0,0);
printf("4、请输入要单独召见的爱妃: \n");
scanf("%s", tempname);
for(i = 0; i<count;i++)
{
if(strcmp(tempname,names[i])==0)
{
loves[i] += 10;
}
else
{
loves[i] -= 10;
}
}
break;
mciSendString("close ./4.mp3",0,0,0);
default:
printf("君无戏言,陛下请再次确认!\n");
}
//最后打印所有妃子状态前,以级别进行排序,使用冒泡排序
for(i = 0;i < count - 1;i++)
{
for(j = 0;j < count - i - 1;j++)
{
if(lovels[j] < lovels[j + 1])
{
//需要交换姓名、等级、和好感度
temp = lovels[j];
lovels[j] = lovels[j+1];
lovels[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****************************************************************\n");
printf("测试:查看当前嫔妃的状态\n");
printf("%-12s级别\t好感度\n","姓名"); //-号是左对齐,这里-12s表示左对齐12字符
for(i=0;i<count;i++)
{
printf("%-12s%s\t%d\n",names[i],levename[lovels[i]],loves[i]); //levename[lovels[i]]意思是先提取整型级别,最后在输出妃子的字符串级别
}
printf("****************************************************************\n");
system("pause");
return 0;
}