i57500网站开发,企业官网运营,广东贸易网站建设哪家,如何还原wordpress#x1f37f;*★,*:.☆(#xffe3;▽#xffe3;)/$:*.★* #x1f37f; #x1f35f;欢迎来到静渊隐者的csdn博文#xff0c;本文是c游戏制作指南的一部#x1f35f; #x1f355;更多文章请点击下方链接#x1f355; #x1f368; c游戏制作指南#x1f3… *★,°*:.☆(▽)/$:*.°★* 欢迎来到静渊隐者的csdn博文本文是c游戏制作指南的一部 更多文章请点击下方链接 c游戏制作指南 专栏介绍在这一专栏中我将循循善诱带领你在冷峻的控制台上种满缤纷一同走入c控制台游戏的殿堂。 适宜人群学习C语言三个月及以上的爱好者熟记基础语法选择、循环两大结构掌握基础算法高精度、排序、模拟、贪心、搜索、动规等知晓基础数据结构数组、字符串、链表、栈、队列、树、图。 学习目的能够自主编写出有趣的c控制台游戏并掌握自学的方法。 喜欢的朋友可以关注一下下次更新不迷路 目录
前言
一、生化危机
①输出的方式
②攻击操作
二、暗黑诅咒2
①输出的方式
②特效
③战斗模块
三、如果你被困在3月18日
四、 丧尸危机
①设置控制台窗口字体颜色和背景色system和SetConsoleTextAttribute函数
system()
SetConsoleTextAttribute
举个栗子 ②各种线索、成就
四、结语 前言
作为oier做游戏的第一步这一部分相对简单。
主要涉及的是由
if()
{}
else
{}switch()
{case 1:}
等语句组成的选择结构程序。 不过虽然简单但做的好还是有一定难度的。
因此我们要进行学习。
首先我们通过分析一些程序。
下面将提供几个优秀的例子。
一、生化危机
网址生化危机
这个游戏就是非常典型的一个剧情游戏剧情逐步推进给人一种惊心动魄的感觉。
那么我们可以向它学习什么呢
①输出的方式
可以注意到在这一游戏里每一行文字是在按了任意键后输出的。翻看代码易得它用了getchar()函数进行此操作。这样一来玩家就可以跟上你游戏的进度避免了文字出现太快以至于玩家无法看清的情况。这就是真正游戏中的按任意键继续。
②攻击操作
这一游戏中战斗是这样进行的。 printf(按任意键开始战斗);getchar();zombie.hp30;zombie.atk6;zombie.def0;zombie.exp8;zombie.lev1;zombie.nodietrue;system(cls);printf(敌人信息:\n);printf(敌人:普通僵尸 等级:%d\n,zombie.lev);printf(血量:%d 伤害:%d 防御:%d 击杀可获得%d经验\n,zombie.hp,zombie.atk,zombie.def,zombie.exp);Sleep(4000);system(cls);while(steve.hp0 zombie.hp0){printf(敌人:普通僵尸 等级%d\n,zombie.lev);printf(你的血量:%d 僵尸血量:%d\n,steve.hp,zombie.hp);printf(武器:\n);printf(1| 普通攻击 10伤害 攻速1\n);scanf(%d,n);if(n1){printf(你对僵尸造成了%d伤害\n,steve.atk-zombie.def);zombie.hpzombie.hp-(steve.atk-zombie.def);}else printf(无效输入\n);Sleep(1000);if(zombie.hp0) break;printf(僵尸对你造成了%d伤害\n,zombie.atk-steve.def);steve.hpsteve.hp-(zombie.atk-steve.def);Sleep(1000);system(cls);}system(cls);if(steve.hp0){printf(你死了,请重新来过(5秒后结束));Sleep(5000);return;}if(zombie.hp0){printf(恭喜击杀[%d级普通僵尸]\n,zombie.lev);printf(获得经验:%d\n,zombie.exp);steve.expzombie.exp;printf(2秒后继续\n);Sleep(2000);}
这就使战斗多元化可以使用多种道具增加了玩家的参与度。
在编写游戏时难免会遇到编写战斗模块这是上面的代码就是一个很好的参考。
二、暗黑诅咒2 网址暗黑诅咒2
这一游戏做得就比较一般了但还有不少值得学习的地方。
①输出的方式
与上面按任意键继续不同此处的输出是一个个字进行输出。输出速度适中适合一般玩家的阅读速度非常不错。而实现这一功能作者设计了一个SlowDisplay的函数。
void SlowDisplay(char *p)
{system(cls);while(1){if(*p!0)printf(%c,*p);elsebreak;}system (pausenul);
}
函数的使用
SlowDisplay(这里写要说的话)
②特效
不错的。
void texiao()
{for(int i1; i10; i){system(color 2f);Sleep(10);system(color 0f);Sleep(10);}
}
③战斗模块
相对于前面这里将战斗模块作为一个函数进行。使代码简洁了不少值得学习。
同时增加了闪避功能。以猜数字这一小游戏判断闪避是否成功创意十足。增加了游戏的趣味性与丰富性。
但是此处没有技能、其他武器等工具只有与上面“普攻”对应的“攻击”需要你的改进。
void fight(monster x)
{cout突然;coutx.name;cout朝你冲了过来\n;system(pause);cout是否战斗 1.是 2.否\n;int q;cinq;if(q1){mercy--;while(blood0x.b0){{bool flagfalse; cout你的血bloodendlx.name的血:x.bendl; cout1.攻击 2.闪避 3.特殊技能暂未开发请勿选3否则默认为2\n;int q;cinq;if(q1){if(rand()%100x.s)cout敌人闪开了\n;else{cout敌人被打中。。。\n;x.b-attack; }}else{cout猜一个从1~10的数3次机会猜对即可闪避2回合。。。;int xxxrand()%101;int yyy,c0;while(yyy!xxxc3){cinyyy;if(yyyxxx){cout大了;}if(yyyxxx){cout小了;} c;}if(yyyxxx){cout闪避成功\n;flagtrue;} else{cout闪避失败\n;}} if(flag!true){cout轮到敌人啦\n;if(q1) blood-x.a*2;elseblood-x.a;cout你被打中。。。\n;}} }if(blood0){coutyou died!!!endl;return;} else{coutyou won!!!endl;return;}}else{mercy2;coutyou escape!!!\n;}
}
三、如果你被困在3月18日
网址如果你被困在3月18日
改编自B站的一个互动视频剧情十分有趣。
四、 丧尸危机
网址丧市危机
这一个游戏也是我最为推崇的。
废话不多说先来看看吧。
①设置控制台窗口字体颜色和背景色system和SetConsoleTextAttribute函数
这是从我一篇文章里搬来的
【c】设置控制台窗口字体颜色和背景色system和SetConsoleTextAttribute函数 内含超好玩的c游戏链接https://blog.csdn.net/aliyonghang/article/details/128767512?spm1001.2014.3001.5502
system()
在游戏里我发现它的字体能够变换于是我看起了代码。
在代码中我看见了一个这样的语句
system(color f4);
我赶紧查了一下发现system是一个C/C的函数。windows操作系统下system() 函数详解主要是在C语言中的应用system函数需加头文件stdlib.h后方可调用。在Windows中可以发出一个DOS命令。
而且 systemtem(color AB); 其中color后面的A是背景色代号B是前景色代号。颜色属性由两个十六进制数字指定AB都可以为以下任何值: 0 黑色 8 灰色“亮黑色” 1 蓝色 9 亮蓝色 2 绿色 A 亮绿色 3 湖蓝色 B 亮湖蓝色 4 红色 C 亮红色 5 紫色 D 亮紫色 6 黄色 E 亮黄色 7 白色 F 亮白色 我赶紧打开了我的test文件写出了这样的代码 #includebits/stdc.h
using namespace std;
int main()
{system(color f3);printf(1\n);system(color A5);printf(2\n);
} 显示出来是这样的
好绿呀 很显然它把前景、后景都按最后一条颜色处理语句处理了。
看来是我看的不仔细我又一次打开了代码。。。
这次看到了这些代码 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN); 后略
……什么东西呀 BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes); 我带着不懂就问的精神打开CSDN查了一下。 运行下面示例程序会发现system函数加上color函数这个指令后可以对控制台文本属性进行改变但是一改变就是整个控制台发生变化只能把控制台改成一种颜色无法达到我们想要指定一行的文本发生颜色改变即改成多种颜色的效果。因此有下面SetConsoleTextAttribute函数这个函数更加灵活。 啊正中下怀
SetConsoleTextAttribute
原型 BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes); 参数 consolehwnd GetStdHandle(STD_OUTPUT_HANDLE); GetStdHandlenStdHandle是返回标准的输入、输出或错误的设备的句柄也就是获得输入、输出/错误的屏幕缓冲区的句柄。
其参数nStdHandle的值为下面几种类型的一种 值 含义 STD_INPUT_HANDLE 标准输入的句柄 STD_OUTPUT_HANDLE 标准输出的句柄 STD_ERROR_HANDLE 标准错误的句柄
wAttributes是用来设置颜色的参数 wAttributes 颜色 对应的值 FOREGROUND_BLUE 字体颜色蓝 1 FOREGROUND_GREEN 字体颜色绿 2 FOREGROUND_RED 字体颜色红 4 FOREGROUND_INTENSITY 前景色高亮显示 8 BACKGROUND_BLUE 背景颜色蓝 16 BACKGROUND_GREEN 背景颜色绿 32 BACKGROUND_RED 背景颜色红 64 BACKGROUND_INTENSITY 背景色高亮显示 128
也就是说SetConsoleTextAttribute函数是靠一个字节的低四位来控制前景色高四位来控制背景色。
举个栗子 #includeWindows.h
#includebits/stdc.h
using namespace std;
int main() {cout Hello ——this is the prime color endl;cout 先来看一哈青色的字儿;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);//设置青色cout endl Hello World! endl;string q;cout 来尝试随便输入一下吧给你一个蓝底白字;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); //设置蓝底白字cin q;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);//没有给其他颜色只给了文本增强只有亮度稍微改变一下cout endl 再随便输入一下吧 endl;SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);//设置白色cin q;return 0;
} 慢慢玩吧这东西真的非常有趣。而且用在游戏中也非常炫酷。 ②各种线索、成就
与前面几个游戏的单纯闯关不同这里有成就、线索。让玩家不会因一直未通关而疲倦退出游戏。值得学习。 四、结语
就这样了祝好。
祝福你在c游戏中杀出一片江山。