标签:需要 turn 进入 out i++ namespace 内容 打印 循环
一,一个简单游戏的运行思维
1. 一个游戏是如何运行的?为什么《飞机大战》中的飞机可以在屏幕中来回穿梭?
2.游戏运行中间的每一种行为,玩家的输入,游戏中反馈给玩家的输出,对应的操作为什么能实现?为什么不会自动结束游戏?
首先,我们把游戏“缩放”一下,我们可以认为游戏的运行即是一个大的循环;while(true) {};
有这样一个思路,我们就能完成一个简单的游戏,比如我要完成一个一直打印“*”的游戏(这里我们就叫这个游戏为《打印*》);(这里慢点吐槽,因为要带入一种游戏骨架的思维)
#include <iostream> using namespace std; int main() { while(true) {//这样的一个循环,就可以完成我们的一个超级简单(无聊)的游戏啦! cout << "*"; } return 0; }
OK,1.0版本的《打印*》已经完成,我们现在进入下一步,相信我们心中有很大的疑惑,我们要的效果是一个有玩家的输入,并且游戏可以反馈玩家的输出,那又怎样实现?
我们需要添加一下功能,比如我想要让玩家控制打印“*”,玩家点击“w”循环可以停止或者运行,这样达到玩家与游戏的简单互动
#include <iostream> #include <conio.h> using namespace std; int main() { bool pand = true;//判断当前游戏状态,true为打印“*”,false为暂停 while(true) { cout << "*"; if(kbhit()) {//这个函数是用来接收键盘的输入,我们可以这样理解,当游戏运行的时候,没有键盘输入的话,就代表玩家想要以当前的游戏状态运行 char c = getch();//程序如果运行到这里,就表示玩家输入了内容,我们需要接受一下输入的内容 if(c == ‘w‘) {//我们要让程序对接收的内容进行判断,如果是‘w‘的话,才可以暂停 if(pand) { system("pause");//我们先用一个简单的暂停,因为在游戏暂停的同时,我们要思考游戏的状态和游戏时间和世界的变化,所以,我们在简单的游戏中先用能理解的方法带入 pand = false;//改变游戏的状态 }else { pand = true;//改变游戏的状态 } } } } return 0; }
完成以上代码,我们就更新了游戏的内容,2.0版本的《打印“*”》就完成了。
OK,现在说一下我们完成的这个小游戏为什么会觉得很捞?因为这个游戏毫无乐趣性可言,没有人机交互,人人交互(呸,这个以后慢慢更),好啦,接下来完成我们的《打印“*”》3.0,现在我们的“顶头”要求我们打印出一个“*”,并且可以让玩家按wasd去控制这个“*”,为什么非要移动“*”呢?你无奈的想,OK,“顶头”的想法是这样的,他想让忘记可以控制自己的角色“*”去自由的探索游戏世界,OK,这也正是做游戏的乐趣所在
#include <iostream> #include <conio.h> using namespace std; int main() { int x, y;//xy代表我们角色“*”的位置 x = 0, y = 0;//初始化位置 while(true) { for(int i = 0; i < x; i++) { for(int j = 0; j < y; j++) { cout << " "; } if(i != x - 1) cout << endl; } cout << "*"; if(kbhit()) { char c = getch(); switch(c) { case ‘w‘: x--; if(x < 0) x = 0; break; case ‘a‘: y--; if(y < 0) y = 0; break; case ‘s‘: x++; if(x > 15) x = 15; break; case ‘d‘: y++; if(y > 15) y = 15; break; } } system("cls"); } return 0; }
这期先更到这里,下一期继续
标签:需要 turn 进入 out i++ namespace 内容 打印 循环
原文地址:https://www.cnblogs.com/yylgoodjob/p/12468783.html