专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

游戏设计之路不来推推箱子么?

  大家好,失踪人口回归。新的一年,新的坑位(不是),今年就让我来带领小伙伴们一起设计一款独立游戏吧()。
  言归正传,说起游戏,大家第一印象可能就是次时代主机,PC主机或手机上那些画面绚丽,剧情丰富的游戏:如《GTA系列》,《赛博朋克2077》,《梦幻西游》,《塞尔达传说》等等。但可惜的是,单单靠一个人,是不可能完成这样的大型游戏的。不是技术上的问题,而是人力与成本上的问题。
  但不要灰心,市面上也有很多仅靠1,2个人做出的很多精美的甚至获得国际大奖的独立游戏:如《小小梦魇》,《地狱边境》等等。
  但我们要记住:万丈高楼起于垒土。作为一个初学者,我们需要学习的知识还有很多。所以不要着急,让我们从地基开始,打好基础,一步一步地向最高峰发起进攻。
  一些题外话:游戏设计光靠一片热血是不行的,一些必备的基础知识则是必需的。例如基本的C,JAVA等计算机语言的掌握,基本的开发环境的安装等。这里我默认读者是掌握了这些知识的。
  创建项目
  首先,我们需要在VS上创建一个空的控制台应用
  接着我们可以给项目取一个名字,这里我就叫这个小游戏为《回家吧小箱子》
  项目名称为GoHomeSmallBox
  在项目创建成功后,我们可以看到VS自动为我们创建了一个GoHomeSmallBox。cpp文件includeiostreamintmain(){std::coutHelloWorld!;}
  我们将上面的代码修改一下:includeiostreamusingnamespacestd;intmain(){charc;cinc;coutc;return0;}
  cin,cout都是istream类和ostream类的全局变量,我们在包含头文件iostream后,并声明usingnamespacestd,就可以在任何位置使用了。
  cin通过将输入值写入变量c,cout通过将变量值c输出。
  对于大部分游戏程序来说,整个项目可以分为三步操作:while(true){getInput();获取键盘或者鼠标的输入信息updateGame();根据输入信息对游戏内容进行修改draw();对修改后的游戏内容进行绘制并输出结果}
  游戏内容设计
  我们设定箱子为符号Y,箱子的最终目的地为符号X,当箱子到达目的地后,X变为Z,表示箱子成功回到家。而推动的小人则设定为P。
  思考:当我们设计好基本内容后,还需要进行进一步的思考当P到达边界后,继续向边界移动会发生什么?当P推动两个箱子时,会发生什么?朝着边界推箱子,会发生什么?
  假如不解决上面的一些问题,我们直接进行编码实现的话,就会发现箱子有时候会飞出边界,人物P也会移动到边界之外。这样一来,就不符合我们所设定的游戏规则了。
  程序设计
  首先我们来定义一些基本的初始变量:表示墙壁,p表示玩家,X表示目的地,Y表示箱子constchargSceneData〔〕XXpYY;constintgSceneWidth8;constintgSceneHeight5;enumObject{OBJSPACE,空白空间OBJWALL,墙壁OBJGOAL,目标点XOBJBOX,盒子YOBJBOXONGOAL,盒子在目标点处ZOBJPLAYER,玩家pOBJPLAYERONGOAL,玩家在目标点处POBJUNKNOW未知};
  这里我把最初的初始场景数据放在了一个全局变量char数组gSceneData中。然后我们定义了一个枚举变量,这里面使用了几个枚举值描述了所有的游戏状态。
  接下就是我们的主循环的代码intmain(){创建初始状态数组ObjectstatenewObject〔gSceneWidthgSceneHeight〕;初始化场景initialize(state,gSceneWidth,gSceneHeight,gSceneData);游戏主循环while(true){绘制draw(state,gSceneWidth,gSceneHeight);通关检测if(check(state,gSceneWidth,gSceneHeight)){break;}获取输入coutw:向上;a:向左;s:向下;d:向右,请输入:endl;charinput;cininput;更新数据update(state,input,gSceneWidth,gSceneHeight);}胜利后的信息cout恭喜你成功过关!endl;delete〔〕state;state0;return0;}
  注意到其中调用到了下面四个方法:初始化方法voidinitialize(Objectstate,intw,inth,constcharsceneData){constcharindexsceneData;intx0;inty0;while(index!){当字符不为NULL时Objectt;switch(index){case:{tOBJWALL;break;}case:{tOBJSPACE;break;}caseX:{tOBJGOAL;break;}caseY:{tOBJBOX;break;}caseZ:{tOBJBOXONGOAL;break;}casep:{tOBJPLAYER;break;}caseP:{tOBJPLAYERONGOAL;break;}case:{到下一行x0;x返回最左边y;y进入下一行tOBJUNKNOW;t暂时无数据break;}default:{tOBJUNKNOW;t为非法数据}}index;if(t!OBJUNKNOW){若t为非法数据,则略过state〔ywx〕t;向状态数据写入数据,这里的位置表示向下第y行,向右第x列的位置。这里是将一个二维数据存放在了一个一维数组里面x;}}}绘制,将state数组的数据绘制在控制台中voiddraw(constObjectstate,intw,inth){按照枚举值的顺序定义该数组constcharfront〔〕{,,X,Y,Z,p,P};for(inty0;yh;y){for(intx0;xw;x){Objectostate〔ywx〕;coutfront〔o〕;}coutendl;}}通关检测boolcheck(constObjectstate,intw,inth){检查若没有盒子后,则通关for(inti0;iwh;i){if(state〔i〕OBJBOX){returnfalse;}}returntrue;}更新数据voidupdate(Objectstate,charinput,intw,inth){首先获取移动的变换量intdx0;intdy0;这里我们注意一下,我们假设的是左上角为坐标原点,那么向上移动,y则为1;向下移动,y则为1,y轴正向为向下向左移动,x为1;向右移动,x为1switch(input){casea:dx1;break;向左移动cased:dx1;break;向右移动casew:dy1;break;向上移动cases:dy1;break;向下移动}查询玩家坐标,这里其实可以设置一个全局变量,记录上一次玩家所在位置,这样就不用每次来寻找一次玩家的位置inti1;for(i0;iwh;i){if(state〔i〕OBJPLAYERstate〔i〕OBJPLAYERONGOAL){break;}}intxiw;小人的x轴位置应当为i对宽度的余数intyiw;小人的y轴位置应当为i对宽度的商玩家移动后的坐标inttxxdx;inttyydy;对玩家的位置进行判断if(tx0ty0txwtyh){return;}移动位置为空白或者是目标点,则玩家移动intpywx;玩家的位置inttptywtx;玩家移动后的位置if(state〔tp〕OBJSPACEstate〔tp〕OBJGOAL){state〔tp〕(state〔tp〕OBJGOAL)?OBJPLAYERONGOAL:OBJPLAYER;若移动位置为目标点,则变为玩家站在目标点;否则则为玩家本身state〔p〕(state〔p〕OBJPLAYERONGOAL)?OBJGOAL:OBJSPACE;若当前位置为目标点,则变为目标点;否则变为空白位置}elseif(state〔tp〕OBJBOXstate〔tp〕OBJBOXONGOAL){如果移动位置为箱子,或者为箱子在目标点,并且箱子的下一个位置为空白或目标点,则可以移动inttx2txdx;intty2tydy;检查移动位置同方向的下一个位置是否为合法位置if(tx20ty20tx2wty2h){按键无效return;}inttp2ty2wtx2;移动位置同方向上的下一个位置if(state〔tp2〕OBJSPACEstate〔tp2〕OBJGOAL){按顺序更改三个位置的数据state〔tp2〕(state〔tp2〕OBJGOAL)?OBJBOXONGOAL:OBJBOX;state〔tp〕(state〔tp〕OBJBOXONGOAL)?OBJPLAYERONGOAL:OBJPLAYER;state〔p〕(state〔p〕OBJPLAYERONGOAL)?OBJGOAL:OBJSPACE;}}}
  好啦,今天的任务就算完成啦。但我们可以发现,这仅仅是一个初始版的游戏,还有很多可以优化改进的地方。那么我们下一次还将继续深入,对我们的第一个小游戏进行优化。
  谢谢阅读()

国际锐评首次突破40万亿!中国外贸的韧性与活力从何而来?外贸规模首次突破40万亿元人民币关口!连续6年保持世界第一货物贸易大国地位!1月13日发布的2022年中国外贸成绩单,进一步增强了国际社会对中国经济的信心。中国海关总署当天公布的数中国军团4胜4负,8人晋级正赛!丁俊晖轰40横扫,周跃龙惨败出局中国军团4胜4负,8人晋级正赛!丁俊晖轰40横扫,周跃龙惨败出局。2023年斯诺克威尔士公开赛资格赛已经结束了,最后一个比赛日共有8位中国选手出战,取得了4胜4负的战绩,丁俊晖,吴华为鸿蒙3。0第五批内测nova5手机能升级了,荣耀手机还需多久?华为鸿蒙3。0第五批内测名单出炉,华为nova5pro华为mateX可以升级鸿蒙3。0了。本以为2023年开年的第一批鸿蒙3。0内测,会有荣耀30荣耀V30系列手机,结果却只有华为苹果割韭菜太明显!iPhone电池涨价,最高达千元,网友我选国产我很依稀的记得,几年前苹果官方换电池的价格是218元,让用户感受到了满满的诚意感。然而这些年苹果换电池的价格就很离谱了,前段时间我朋友的iPhone11电池不顶用,去官方询问就要六目前公认屏幕最好的四款手机,画面党请放心入手春节临近,很多人有换手机的想法,有的人换手机在乎性能,有的人换手机在乎手感,但是还是有大部人换手机是在乎屏幕的,毕竟屏幕这玩意关乎手机的成像画质,像劣质的屏幕对眼镜甚至有非常大的伤华为没有放弃海思没有掉队!麒麟KC10曝光,久违的振奋人心众所周知,对一家以营利为目的的商业机构而言,长时间不挣钱的部门,终究要被解散裁撤,这才是正常的商业逻辑。然而在华为内部却有这样一家部门,2021年,收入骤降81,如今市占率更是被边库克太可恨!iPhone电池全系涨价,最高917元,网友不如小米11苹果的产品价格本身就不低,在售后上也会比一般的厂商价格更高。大家也知道,手机这玩意就是消耗品,用几年后手机的电池就会跟不上。之前还好,花200多块钱就可以更换苹果官方的电池。但是这全球第一艘5G大型邮轮将起航图源中船嘉年华大型邮轮被称为造船行业皇冠上最耀眼的明珠,而最先进的现代通信技术,正将这颗明珠擦拭得更加光华夺目。1月12日,上海电信与中船嘉年华邮轮有限公司(简称中船嘉年华)旗下爱消费中心城市的重庆潮国际范中国经济周刊记者石青川重庆报道1098762023年1月1日零点即将到来时,家住巴南区的小顾站在重庆渝中区解放碑下,一起参与跨年倒数,让这个夜晚充满了仪式感。小顾说,当晚解放碑附近62亿收购2000亿,中航电测和成飞合并棋局每经记者张文瑜每经编辑贺娟娟62亿市值A股上市公司拟收购2000亿市值军工巨头,中国航空工业集团(下文简称航空工业)在下一盘什么大棋?1月11日晚间,中航电测公告称将拟以向航空工业A股如约全面上攻!出利好实现大涨!后市怎么看?我说4点!1踩对宏观节点,跟上行情节奏今天的行情走势,和我预判的严丝合缝!甚至过程中的宏观事件也推测的基本一致,而我在昨天盘后说的很清楚,今天开盘就会站上5日线,然后逐步全面上攻最终大涨!结
变法是历史必然?探究商鞅变法的历史背景如果您喜欢这篇作品,欢迎点击右上方关注。感谢您的鼓励与支持,希望能给您带来舒适的阅读体验。秦朝是中国历史上第一个中央集权的大一统朝代,而扫平六国的秦始皇也称为中国历史上最闪耀的帝王广州从化的柿子红了,一年最好看的时候到了,看完了柿子顺道露营头条创作挑战赛今天一早醒来,收到一条消息白云区取消大规模核酸检测。这意味着疫情有所缓解,并且学生有望返校。作为旅行博主,感觉距离出门旅行的日子越来越近了。虽然北方已经下雪,但是南方江苏中天钢铁女排去蔡化势在必行中国女排超级联赛,江苏中天钢铁女排在对阵河南女排时,不但是清一色的全华(苏)班,而且是清一色的20岁左右的青少年,江苏女排去蔡化已经十分明显。这样的变化就是人走茶凉,是中国传统文化广州市天河区著名的城中村,地理位置优越,据说出过好多名人这里是刘小顺的旅行和生活研究所。如果来过广州旅游的朋友,应该都不会对广州的诸多城中村感到陌生,由于广州的快速发展,原本偏远的小村子都逐渐被高楼大厦包围,变成了城中村。而说到广州最著中国香油(芝麻油)竞争格局及发展前景报告智研瞻产业研究院专注于中国产业经济情报及研究,目前主要提供的产品和服务包括传统及新兴行业研究商业计划书可行性研究市场调研专题报告定制报告等。涵盖文化体育物流旅游健康养老生物医药能源力压两个S冠AD,全明星投票Uzi化身得票机器,人气还得是他呀头条创作挑战赛随着S赛结束,咱们LPLS12这一整年的征程就算结束了,剩下的日子里,除了大家比较关心的转会期运作,剩下的就是全明星周末了!根据之前几个赛季的经验,全明星依然是分为正42!广州队终结连续12场不胜,击败拥有双外援的球队,青春风暴北京时间11月16日,足协杯第二轮开打,广州队迎战中甲第5名的四川九牛,最终凭借李佳珩谭凯元凌杰艾菲尔丁各进1球,42拿下对手晋级。此役郑智派上了全替补出战,谭凯元与艾菲尔丁领衔锋广州市越秀区的著名公园,已有百年历史,还有广州的城市原点这里是刘小顺的旅行和生活研究所。广州,位于我国华南地区,是广东省的省会,也是我国四大一线城市,不仅经济发达,而且历史悠久人文底蕴深厚。广州人文古迹众多,旅游资源丰富,还有数不胜数的广州新增6296例,番禺部分镇街社会面清零南都讯11月16日,广州市疫情防控新闻发布会(2022年总第125场)举行。广州市卫生健康委副主任新闻发言人张屹在会上表示,11月15日0至24时,广州市新增6296例新冠病毒本土(新华全媒)大美湿地城市丨常熟江苏省常熟市是首批国际湿地城市之一,近年来始终坚持全面保护科学修复合理利用持续发展的原则,不断深化生态保护与修复。目前,常熟市湿地总面积达29921。61公顷,其中自然湿地面积18鸟类摄影使用哪款相机和镜头比较好,你的选择正确吗?不管你的摄影什么水平拥有合适的拍摄装备会让你的拍摄事半功倍。特别是对于特定类型的摄影,例如野生动物摄影,正确的相机和镜头可以极大地影响你想要的最终结果。在本文中,我们对于想要练习鸟
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网