大美书网

手机浏览器扫描二维码访问

第65章 自动寻路(第1页)

段雷对谢维康细说说:“我不是在开rpg游戏嘛,所有功能和剧情都已经搞定了,现在正做优化。之前一直用键盘操作,人物会跟着按键方向沿道路走,后来我想加个鼠标操作的功能,只要点击地图上任意一点,人物就能自己走过去。”

谢维康立刻赞同道:“这主意挺好啊,有什么问题吗?”

“问题就在这儿,”段雷接着说道,“点击之后,怎么检测从当前位置到鼠标点的路径呢?中间可能有障碍物,人物移动时得主动避开才行。”

谢维康摩挲着下巴沉思起来:“你说的确实是个关键,得想个自动寻路的办法,这事儿有点意思,你让我琢磨琢磨。”

说着,他让段雷打开游戏,按prt_s键截了张图,放进画图板里仔细观察,还时不时拿纸笔写写画画,专注地梳理思路。

段雷见他想得认真,也不打扰,就静静坐在身后看着。

大约过了十多分钟,谢维康突然一拍桌子,激动地喊道:“有啦!”

这一嗓子把段雷吓了个激灵,随即也跟着兴奋起来问道:“想出办法了?”

“嗯,有了。”谢维康点点头,指着屏幕讲解道,“先,你创建一个和地图等大的二维数组当标记,先把数组全清零,标成,终点标成-。然后遍历整个数组,每个点都检查周围四个点的状态,如果没标记且是道路,就赋上比当前点大的值,比如检测到,周围未标记的通路就标成,下一轮遍历再把检测到的周围标成,依此类推。每次遍历都记录能标记的点数,要是某次遍历一个点都没找到,说明到终点没通路,如果当前点周围找到了-,就说明打通了通道。这时从终点按标记数值降序搜下去,周围有相同数字就随机选一个,这串点就是路径,把顺序倒过来就行。”

段雷听完,思索片刻后瞬间就明悟,马上在谢维康的电脑上按谢维康提供的算法写成代码。

写的时候他还稍作修改,改成从终点往遍历,这样最终的路径数据就不用倒转了。

大概花了一个小时后,代码写完,按下f运行。

两人满怀期待地盯着屏幕,当段雷点击屏幕上的点,游戏主角果然自己动了起来,还自动绕开所有障碍物,精准抵达指定位置。

段雷高兴得又要凑上去亲他,吓得谢维康连忙怪叫道:“去去去,滚远点!别老是搂搂抱抱的,劳资对男人不感兴趣,不搞基!”

段雷目不转睛地看着他,认真说道:“哥,论写代码你不如我,但有一点是我拍马也赶不上的。”

谢维康疑惑道:“啥?我的c语言能有现在的水平,还是你领的路,你怎么反倒夸起我来了?”

“是你的逻辑思维能力,”段雷语气诚恳地说道,“这可能是天生的,你脑子也太好使了,再难的问题,你都能梳理出完整的逻辑方案,我是打心底佩服你。”

被段雷这么一夸,谢维康反倒有些不好意思,讪笑道:“哪里哪里,我也就是瞎琢磨。”

“你瞎琢磨都比我强,”段雷撇撇嘴,顺势往谢维康床上一躺,“你要是认真起来,还有我什么事?比如我最近重温位运算那一章,感觉太难了,位移、位或、位与、位段,搞得我脑瓜子嗡嗡的。”

谢维康又开始吹牛:“位运算有啥难的?我觉得挺简单啊。”

段雷立马翻身坐起,满眼希冀地说道:“哥,老实说,你是不是藏了什么秘诀?快交出来!”

谢维康轻轻拍了拍他的脑袋说道:“想学位运算,写个俄罗斯方块不就行了?”

“切,我还以为是什么好办法,”段雷不屑道,“你之前写的俄罗斯方块我看过,全是数组,没什么新鲜的。”

谢维康当即打开一段代码,一边指着屏幕一边介绍道:“但我后来重写过,全程用的位运算,你看。”

段雷凑近屏幕一看,惊呼道:“哇哦,还真是!这么多位运算操作!”说着兴奋地推了推谢维康的肩膀,“快说说,什么原理?”

谢维康不慌不忙地解释道:“俄罗斯方块的容器是宽十格、高二十格,里面有七种形状的方块往下掉,堆积到底部后,满一层就消除,上面的整行下落,对吧?”

段雷点点头。

“而且方块在屏幕上只有显示和不显示两种状态,对应和o,表示显示,o表示不显示。”谢维康继续说道,“一行有十列,char型数据显然不够用,那就用short型,十六位还富余六位。我用表示一行容器数据,两边赋,中间十位是游戏可视空间。”

段雷挠挠头,不解地问道:“为啥非得用?用不行吗?”

谢维康又拍了拍他的头说道:“也行啊,我有强迫症,不弄对称我睡不着觉,这总行了吧?”

“切,我还以为有什么特殊要求。”段雷轻哼一声。

谢维康作势还要拍他的头,段雷赶紧歪头躲开责怪道:“哥,别老打我头!本来就没你聪明,再打就更笨了。”

本小章还未完,请点击下一页继续阅读后面精彩内容!

谢维康没理他,接着讲解道:“现在把左移到对应位,和这一行数据做位与运算,得到非零值就显示这个点,否则就不处理,这样就能把游戏绘制到屏幕上。方块往左移动时,把方块数据左移一位后,和对应容器行做位与,值为零说明没有重叠,可以移动,非零就是有重叠,不能动。而且容器两边事先设了当墙壁,位与到这里时肯定是非零,连判断是否到边缘的步骤都省了。往右、往下移动的原理一样。方块不能往下移时,做位或运算就能堆进容器。判断一行是否填满,直接检查容器行数据是不是oxffff就行。你看,游戏逻辑一下就简单了,而且写完这个游戏,你肯定能深刻理解位运算,位或、位与、位移搞懂了,位异或之类的还不是照葫芦画瓢?最重要的是,这样写出来的代码执行效率特别高。”

段雷看着他,由衷赞道:“哥,我说你脑子比我好使吧,你还不信!这么损的学习方法都能想出来,不过是真好用,用写游戏来学知识,这主意绝了。”

谢维康谦虚道:“我也是被逼出来的,想快点学好编程,所以现在全身心都扑在上面。你也得加油,游戏什么时候都能玩,现在学习是第一位的。等咱们总结好经验,以后一起创业怎么样?”

段雷认真点头:“好!到时候咱哥俩一起干。对了,你那个麻将游戏弄好了吗?”

谢维康讪笑:“还没呢,国标麻将的ai不好写,之前的方案有不少缺点,正打算重写。我想到个好办法,按麻将规则扫描每一张牌,根据能组合的牌型估值,值越大越该保留,每次打最小的那张。估值方案我已经想好了,正在修改,结果被你打断了。”

“没事,就你这脑子,写出来的ai肯定惊艳。”段雷爽快地说。

谢维康鄙夷地看他:“得了吧,我不喜欢别人拍马屁。”

“我没拍!我说的是实话。”段雷委屈道。

“我估计还有一个月能完工,”谢维康提议,“到时候我把我的游戏给你玩,你也把你的给我,咱们互相提意见、找bug,让游戏质量再上一个台阶。”

段雷竖起大拇指:“还是你脑子好使,这主意太棒了!到时候咱们交叉测试,好好打磨打磨。”

两人相视一笑,伸出手紧紧握在一起。

不知不觉天已经黑了,楼下传来陈银珍的喊声:“臭小子,吃饭了!成天对着你那破电脑瞎按,饭也不煮,有本事你按一辈子!”

段雷听到这话,无奈地摇摇头,对谢维康轻声说:“我回家的时候,我妈也总这么说我。”

谢维康拍了拍他的肩膀:“没办法,他们对编程这种新兴行业接受不了,很正常。”

请关闭浏览器阅读模式后查看本章节,否则将出现无法翻页或章节内容丢失等现象。

热门小说推荐
愉王殿下,对臣也这般虚伪么

愉王殿下,对臣也这般虚伪么

[胎穿][双洁][非大女主文][无脑爽文][女扮男装]元林愉带着母妃临终托付的任务回到都城,但是她并不急。她心存善良,总是喜欢多管闲事,常常让人误解她也要夺嫡。可是众人看她回到都城,桃花债一个接一个,爱着兰香阁琴师阿奴,撩着龙晔卫指挥使魏暮舟,娶杨将军府二小姐,甚至连少师都跟她暧昧不清,后来她还让他国公主对她倾心不...

穿越异世夫郎成了我的金手指

穿越异世夫郎成了我的金手指

主攻升级流斗气双强双宠一起升级大后期会生子!!(雷者慎入!)立夏,末世火系异能者,因为一次意外死亡,带着异能重生在一个特别的世界,这里有斗气,能修炼,之后他遇到了一只布偶猫。炼丹术教,炼器术教,画符教!阵法术教!最后,立夏媳妇儿,是不是还差一件事没做?猫猫?来,床你还没给我暖好呢。猫猫爪子拍飞!...

和高冷首富隐婚后

和高冷首富隐婚后

世人皆知春城首富随安身怀绝症,命不久矣。各方都变着法地想往她身边送人,图的就是随安的亿万家财。突然有一天,她宣布自己结婚了。结婚对象竟然只是24小时便利店的一个打工妹!...

宜嫁宜娶

宜嫁宜娶

先婚后爱职场婚恋(双CP)(暗恋,商战,久别重逢,女追男)(联姻,闪婚,前任,甜虐,追妻火葬场)CP1他有他的白月光,她有她的意难平,他们是闪婚。他说既然有期待,当初就不该嫁。她说是我越了矩。日常—纪云佳你少给我提她!那种白莲花我听了都嫌恶心!宋季铭你非要我下跪求你才肯吗?!CP2他们相识于青春年少,重逢...

作伥

作伥

古装迷情作伥作者人间废料完结番外  文案  我为刀俎,宰割命运。  十七岁,我美名在外春风得意,愿做红颜祸水,做樊笼娇雀。  二十七岁,我痛失所有一夜疯魔,只想以牙还牙,报血海深...

所长来了!+番外

所长来了!+番外

附本作品来自互联网本人不做任何负责内容版权归作者所有所长来了!作者viburnum内容简介(校长来了!之兄弟篇)工作狂派出所所长就是这样被黑道痞子推倒的。第1章阳光照不到的半地下室的角落里,坐着个满身酒气的男人。男人大腿内侧有个明显的伤口,伤口经过粗劣的缝线处理,周遭的血迹还没有洗去。手里拿着一瓶高度数伏特加,专题推荐viburnum在线阅读txt下载加入书架...

每日热搜小说推荐