C 皇帝选妃游戏 结合所学

  1 //皇帝游戏
  2 
  3 //EmperroGame
  4 #include <stdio.h>
  5 #include <windows.h>
  6 #include <mmsystem.h>
  7 #include <stdlib.h>
  8 #include <string.h>
  9 #include <time.h>
 10 
 11 #pragma comment <lib,"Winmm.lib">
 12 
 13 #define  MAX 6                              //常量MAX表示系统要求的最大妃子的数量
 14 int main()
 15 {
 16     //播放音乐
 17     //PlaySound(TEXT("sounds\\翻牌.wav"), NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);
 18 
 19     int i,j,temp;                                                        //循环变量
 20     int count = 5;                                                     //当前未打入冷宫的嫔妃个数
 21     char tempName[20];                                                  //用来存放临时字符串的字符数组
 22 
 23     int  searchIndex = -1;                                              //用来查找的下标
 24     char emperorName[50];                                              //使用字符数组表示字符串
 25     int  choice;                                                       //皇帝选择1-4
 26     char names[MAX][20] ={"貂蝉","杨玉环","不知火舞","西施","雅典娜"};   //姓名数组
 27     char levelNames[5][10] = {"贵人","嫔妃","贵妃","皇贵妃","皇后"};   //级别数组
 28     int  levels[MAX] = {1,2,0,0,0,-1};                                    // 用来存放妃子的级别,每个数字元素对应每个妃子的当前级别
 29     int  loves[MAX] ={100,100,100,100,100,-1};                            //loves数组中的每个元素对应每个妃子的好感度,初始的好感度都为100
 30 
 31     printf("\n*************************************************************************\n");
 32     printf("测试代码: 查看当前嫔妃的状态!!!\n");
 33     printf("%-12s级别\t好感度\n","姓名");
 34 
 35     for(i = 0; i<count;i++)
 36     {
 37         printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);
 38     }
 39 
 40     printf("\n*************************************************************************\n");
 41     printf("请输入当前登基的皇帝名号:");
 42     scanf("%s",emperorName);                                          //录入字符串,字符串不需要&符号
 43     printf("当前的皇帝是:%s,吾皇万岁万岁万万岁!\n",emperorName);
 44     printf("1.皇帝下旨选妃:\t\t(增加功能)\n");
 45     printf("2.翻牌宠幸!\t\t(修改状态功能)\n");
 46     printf("3.打入冷宫!\t\t(删除功能)\n");
 47     printf("4.单独召见!!!\n");
 48     printf("陛下请选择:");
 49     scanf("%d",&choice);
 50 
 51     switch(choice)
 52     {
 53         case 1:                        //("1.皇帝下旨选妃:\t\t(增加功能)\n");
 54                                         //1.增加数组前有没有空间
 55                                         //2.怎加元素(names,loves,levels)
 56             if(count < MAX)             //如果当前的妃子数量小于系统最大值
 57             {
 58 
 59                 printf("请输入娘娘的名讳:");                       //执行添加操作
 60                 scanf("%s",names[count]);                          //将第Count 个 元素状态初始化
 61                 levels[count] = 0;                                 //级别初始为0
 62                 loves[count] = 100;                                //好感度初始为100
 63                 count ++;                                          //添加完 要 怎加计数器
 64             }
 65             else
 66             {
 67                 printf("陛下,后宫人满了,添加失败!!!\n");
 68 
 69             }
 70 
 71 
 72 
 73             break;
 74         case 2:   // ("2.翻牌宠幸!\t\t(修改状态功能)\n");
 75                         //1.找到妃子的下标
 76                         //2.修改这个妃子的状态+10,级别1级,最高级不再升级
 77                         //3.修改其他妃子的状态,-10
 78 
 79              printf("请输入翻牌的妃子:");
 80              scanf("%s",tempName);
 81              //字符串的查找 strcmp,需要引入string.h
 82              //strcmp(tempName,"abc" =0两个字符串相等; 1 前一个大于后一个   -1 前一个小于后一个
 83              for(i = 0; i<count;i++)
 84              {
 85 
 86                  if(strcmp(tempName,names[i]) ==0)
 87              {
 88                 loves[i] += 10;
 89                 levels[i] = levels[i] >= 4?4:levels[i]+1;  //级别 0-4 之间
 90              }
 91               else
 92               {
 93                 loves[i] -= 10;
 94               }
 95 
 96              }
 97             break;
 98         case 3:   //1.查找
 99                   //2.后面的一个赋给前面的一个元素
100                   //3.总数
101                   //4.其他  +20
102 
103              printf("请输入打入冷宫的妃子:");
104              scanf("%s",tempName);
105              //循环查找
106              for(i = 0; i<count;i++)
107              {
108                 if(strcmp(tempName,names[i]) == 0)    //比较字符串是否相等
109                 {
110                     //记录下要查找的下标
111                     searchIndex = i;
112                     break;
113                 }
114              }
115 
116              if(-1 == searchIndex)  //searchIndex的值为-1,表示没有找到
117              {
118                 printf("没有人打入冷宫!!\n");
119 
120              }
121              else
122              {
123                 for(i = searchIndex; i < count -1;i++)
124                 {
125                 //    names[i] = names[i+1];  C语言中字符串数组,不支持数组的直接赋值
126                     //使用strcpy函数字符数组的赋值
127                     strcpy(names[i],names[i+1]);
128                     loves[i] = loves[i+1];
129                     levels[i] = levels[i+1];
130 
131                 }
132 
133                 count --;
134 
135 
136              }
137             break;
138         case 4:   //("4.单独召见!!!\n");
139                        //1.查找
140                         //2.怎加好感度
141             printf("4.单独召见!!!\n");
142             break;
143 
144         default:
145             printf("没有呀!!再次确认!\n");
146 
147     }
148     //最后打印妃子的状态,以级别进行排序
149     for(i = 0; i <count -1;i++)
150     {
151         for    (j = 0;j < count-i-1;j++)
152         {
153             if(levels[j] < levels[ j+1])
154             {
155                 temp = levels[j];
156                 levels[j] = levels[j+1];
157                 levels[j+1] = temp;
158 
159                 temp = loves[j];
160                 loves[j] = loves[j+1];
161                 loves[j+1] = temp;
162 
163                 //字符串的交换
164 
165                 strcpy(tempName,names[j]);
166                 strcpy(names[j],names[j+1]);
167                 strcpy(names[j+1],tempName);
168 
169             }
170 
171         }
172 
173     }
174 
175     printf("\n*************************************************************************\n");
176     printf("测试代码: 查看当前嫔妃的状态!!!\n");
177     printf("%-12s级别\t好感度\n","姓名");
178 
179     for(i = 0; i<count;i++)
180     {
181         printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);
182     }
183 
184     printf("\n*************************************************************************\n");
185     return 0;
186 }

 

//增加 嫔妃

 

 //2功能翻牌之后 级别升级

 

 

 

 3.//删除

 

posted on 2021-07-28 11:40  Bytezero!  阅读(179)  评论(0编辑  收藏  举报