一个综合的游戏,对所学的知识进行整合!融会贯通!

#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()
{// 项请目实践之陛下翻牌// 播放音乐PlaySound(TEXT("sounds\\背景音乐.wav"),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);// 8个字符能存放4个汉字char tempName[20];// 定义二维数组来存放妃子char names[MAX][20] = {"西施","貂蝉","王昭君","杨玉环","赵飞燕"};// 定义二维数组来存放妃子等级char levelNames[5][8] = {"贵人","嫔妃","贵妃","皇贵妃","皇后"};// 存放每个妃子的等级int levels[MAX] = {0,0,2,0,0,-1};// 用来存放每个妃子的好感度int loves[MAX] = {100,100,100,100,100,-1};int i,j,temp; // 用于冒泡排序int count = 5; // 当前未被打入冷宫的妃子数量int day = 1; // 第几天/*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]);}*/// 皇帝的名号char emperorName[50];// 皇帝的选择int choice;int selectIndex; // 选择的妃子的index// 使用字符数组表示字符串printf("请输入当前登基的皇帝名号:");scanf("%s",emperorName); // 录入字符串printf("当前皇帝是【%s】,万岁万岁万万岁!\n",emperorName);while (day <= 10) {printf("******************************************************\n");printf("第%d天\n",day);day++;// 做出菜单printf("1.皇帝下旨选妃\t\t (增加)\n");printf("2.翻牌宠幸 \t\t (修改状态)\n");printf("3.打入冷宫 \t\t (删除)\n");printf("4.召见爱妃去谈心 \n");printf("陛下请选择: \n");scanf("%d",&choice);switch(choice) {case 1: // 1.皇帝下旨选妃\t\t (增加)\nPlaySound(TEXT("sounds\\选妃.wav"),NULL,SND_FILENAME | SND_ASYNC);if (count < MAX) {// 执行添加操作printf("请输入娘娘的名讳:");scanf("%s",names[count]);// 初始化状态levels[count] = 0;loves[count]  = 100;count++;} else {printf("陛下要注意龙体啊,后宫已经人满为患!\n");}break;case 2: // 2.翻牌宠幸 \t\t (修改状态)\nPlaySound(TEXT("sounds\\翻牌.wav"),NULL,SND_FILENAME | SND_ASYNC);// 1. 找到妃子// 2. 修改妃子状态 好感度+10 级别升1级 最高级不再升// 3. 修改其他妃子的状态 其他妃子 好感度 -10printf("陛下请输入今天要翻牌的妃子:");scanf("%s",tempName);selectIndex = -1;// strcmp(tempName,"abc") 0表示两个字符串相等,1表示前一个大于后一个,-1表示前一个小于后一个for (i = 0;i<count ;i++) {if (strcmp(tempName,names[i]) == 0) {selectIndex = i;break;}}if (selectIndex == -1) {printf("皇上,这个妃子不存在啊!\n");break;}// 更改选中人的状态if (levels[selectIndex] < 4) {levels[selectIndex] += 1;}loves[selectIndex]  += 10;// 更改其他妃子的状态for (i = 0;i<count ;i++) {if (i != selectIndex) {loves[i]  -= 10;}}break;case 3: // 3.打入冷宫 \t\t (删除)\nPlaySound(TEXT("sounds\\冷宫.wav"),NULL,SND_FILENAME | SND_ASYNC);// 1.查找// 2.后面一个赋给前面一个// 3.总数--printf("请输入需要打入冷宫的妃子姓名:");scanf("%s",tempName);selectIndex = -1;// strcmp(tempName,"abc") 0表示两个字符串相等,1表示前一个大于后一个,-1表示前一个小于后一个for (i = 0;i<count ;i++) {if (strcmp(tempName,names[i]) == 0) {selectIndex = i;break;}}if (selectIndex == -1) {printf("皇上,这个妃子不存在啊!\n");break;}for (i = selectIndex ; i<count - 1;i++) {// names[i] = names[i + 1]; C语言中不支持数组的直接赋值,字符串在C语言中就是数组strcpy(names[i],names[i+1]);loves[i] = loves[i + 1];levels[i] = levels[i + 1];}count-- ;break;case 4: // 4.召见爱妃去谈心 \nPlaySound(TEXT("sounds\\一笑倾城.wav"),NULL,SND_FILENAME | SND_ASYNC);printf("请输入需要单独约见的妃子姓名:");scanf("%s",tempName);selectIndex = -1;// strcmp(tempName,"abc") 0表示两个字符串相等,1表示前一个大于后一个,-1表示前一个小于后一个for (i = 0;i<count ;i++) {if (strcmp(tempName,names[i]) == 0) {selectIndex = i;loves[i] += 10;break;}}if (selectIndex == -1) {printf("皇上,这个妃子不存在啊!\n");break;}break;default:printf("君无戏言,陛下请再次确认!\n");break;}// 播放背景音乐PlaySound(TEXT("sounds\\背景音乐.wav"),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);// 按照级别进行排序,使用冒泡排序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("%-12s级别\t好感度\n","姓名");for (i = 0;i <count;i++) {printf("%-12s%s\t%d\n",names[i],levelNames[levels[i]],loves[i]);}for (i = 0;i <count ;i++) {if (loves[i] < 60) {printf("皇上,有妃子被冷落了,生了杀意。游戏失败。\n");// 跳转到over的位置goto over;}}}printf("恭喜你,赢了!\n");over:return 0;
}

通过这个小游戏,感悟循环,数组,变量,输入输出,冒泡排序等综合知识的运用!

c语言实现皇帝翻牌游戏相关推荐

  1. Mac vscode c语言皇帝翻牌游戏代码

    mac os 实现c语言的皇帝翻牌游戏 不说废话,代码献上 这篇C语言代码,特别适合初学者,对于循环,数组,分支的理解有更好的帮助,如果有大佬看到还想请教在mac os 系统中如何播放背景音效 #in ...

  2. 用c语言400行代码小游戏,程序员400行代码制作翻牌游戏解决无聊时间

    原标题:程序员400行代码制作翻牌游戏解决无聊时间 上班感觉累,很想放假,但是放假在家又感觉非常无聊,总是不知道干什么,又感觉还不如上班呢,反正无聊不如练练写小游戏吧,即练习了代码,做完后还能接着玩, ...

  3. 翻牌游戏如何打乱牌面java_家长专栏提高儿童记忆力的游戏训练

    记忆是人脑对过去经验的保持和再现.记忆过程包括三个基本环节,即识记.保持.再认或回忆.识记是识别和记住事物.保持是将已获得的知识或经验巩固与保留在大脑中.再认是指过去经历过的事物再度出现时,能将它指认 ...

  4. JavaScript 实战-翻牌游戏 - H5和CSS3 (1)

    前言 有段子说学习xxx语言从入门到放弃,当然这只是一句调侃,说明学习的门槛还是存在的,比如底层的C和汇编,难度不小,且需要更多基础知识,有时学起来少许枯燥,有编程天赋的人除外.如果想学得有趣不乏味, ...

  5. 使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?(非常稳定、捕获所有异常、非常适合从头开始,但大公司已经有现成的C++框架、所以不会使用)

    使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?(非常稳定.捕获所有异常.非常适合从头开始,但大公司已经有现成的C++框架.所以不会使用) 参考文章: (1)使用 Go 语言开发大型 MMO ...

  6. C语言编写2048小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992424 2 ...

  7. linux贪吃蛇c程序,Linux环境下C语言实现贪吃蛇游戏

    Linux环境下C语言实现贪吃蛇游戏 [liul@test snake]$ more snake.c #include #include #include #include #include #def ...

  8. c语言程序设计 猜数字,C语言程序设计(猜数字游戏)报告.doc

    C语言程序设计(猜数字游戏)报告 <高级语言程序设计>课程设计 题目:班级:09R3 学生姓名:谢泽雄 学生学号:200931000622 指导老师:提交时间:华南农业大学信息(软件)学院 ...

  9. 24点游戏c语言程序代码,C语言实现24点游戏源代码

    本文实例为大家分享了C语言实现24点游戏的具体代码,供大家参考,具体内容如下 将算法实现改成C语言,并可在linux服务器上运行.同时修改为可显示所有结果. 注:如果传参重复,如4,4,7,7这样,会 ...

  10. c语言课程设计--拼图游戏,C语言课程设计_拼图游戏.pdf

    C -- 语言课程设计 拼图游戏 一.实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完 整的图片.要求如下: 1. 游戏的初始界面如图一,单击空格键进入游戏,进入 ...

最新文章

  1. re模块与正则表达式
  2. 【机器学习】高斯判别分析
  3. html中ng-src,angularjs – 在ng-src中使用{{}}绑定,但不会加载ng-src
  4. Java基础篇(05):函数式编程概念和应用
  5. 读史知今、以史为鉴 【技术商业化】
  6. Android学习笔记一:Android基本组件和Activity生命周期
  7. 计算机控制的液压提升,LSD液压提升系统(2008).doc
  8. 免费数据集下载网站【dataset】
  9. 提取地图中道路_准确度93%!人工智能如何完成高精度的地图特征推测?丨城市数据派...
  10. iOS非常全的第三方库
  11. lg相乘公式_lg的运算法则是什么
  12. php curlesslcacert,Shipyard集群化docker管理平台部署
  13. ubuntu14.04安装与软件重装说明
  14. Firefox浏览器的安装及插件使用
  15. 已知命题公式(¬p→q)→(¬q∨p)
  16. 滑块验证码和图片验证码
  17. NC单据模板控制公式的使用
  18. vue 中后台系统解决方案vue-admin
  19. 友善之臂NanoPC-T4 RK3399 配置 安装TensorFlow2 Pytorch
  20. html在线录音并上传,一种网页版在线录制wav音频的方法与流程

热门文章

  1. mybaits源码分析(八) StatementHandler的详解
  2. maya模型导入UE4,如何做到等比导入
  3. element-ui问题集锦
  4. 垂直和水平滑动刻度尺
  5. Nagios如何配置告警短信?
  6. 《自控力》 第一章读书笔记
  7. 英语单词背诵系统(有单词背诵,错词背诵功能)
  8. python爬虫 点击下一页,总结python爬虫抓站的实用技巧 python爬虫怎么获取下一页的url...
  9. 6-3 在一个数组中实现两个堆栈 (22分)
  10. Oracle:表或视图不存在