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.//删除
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15071931.html