#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;
}