内容简介:上篇文章写到了,我已经打印出了一个从起点到终点的路径,并且这是受键盘事件控制的。今天我会继续给这个游戏添加一些东西,让它看起来像个“游戏”。现在我要加上一个障碍,不是随便一条路径都可以从起点到终点,这个障碍就姑且叫它“炸弹”,我赋给它的规则是,它的上下左右(称之为陷阱)及它本身不能经过,必须绕着走。即如图:添加这个道具,我有几个改动的地方,如下:
上篇文章写到了,我已经打印出了一个从起点到终点的路径,并且这是受键盘事件控制的。今天我会继续给这个游戏添加一些东西,让它看起来像个“游戏”。
现在我要加上一个障碍,不是随便一条路径都可以从起点到终点,这个障碍就姑且叫它“炸弹”,我赋给它的规则是,它的上下左右(称之为陷阱)及它本身不能经过,必须绕着走。即如图:
boom.png
添加这个道具,我有几个改动的地方,如下:
- 获取每个关卡的参数,增加了炸弹的位置和周围陷阱的位置,结构体变成了这样子:
type RoundParams struct { Height int //画布高度 Width int //画布宽度 BoomNum int //炸弹数量 BoomPosition [][]int //炸弹位置,坐标数组 TrapPosition [][]int //陷阱位置,坐标数组 }
- 增加一个检查下一步是否会踏入陷阱的函数
func checkTrap(round int, point *components.Point, direction string) bool { rp := rounds.GetRoundParams(round) x := point.X y := point.Y switch direction { case "up": y -= 1 case "down": y += 1 case "left": x -= 1 case "right": x += 1 } for _, v := range rp.TrapPosition { if x == v[0] && y == v[1] { return true } } return false }
- 由于炸弹的上下左右都不能走了,那么炸弹的位置就有要求,不能是画布上随意的一个点,具体要求是:假设画布是m×n,起点位置是(0,0),终点位置是(m,n),炸弹位置是(x,y),那么2≤x≤m-2,2≤y≤n-2,否则永远无法走出起点或者无法走到终点,那多么可怜。
boomboom.png
来看下效果:
boom-demo.gif
至此,我添加了一个炸弹在路上,再也不是随便能到达终点。项目地址是: https://github.com/TomatoMr/boomboom.git 。
后面,还可以继续思考,一张m×n画布上,最多可以有多少个炸弹,以及有多个炸弹的干扰,从起点到终点的最短路径怎么计算。
欢迎关注我的公众号:onepunchgo,给我留言。
image
欢迎关注我们的微信公众号,每天学习 Go 知识
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Java 测试驱动开发--“井字游戏” 游戏实战
- 游戏安全:某某游戏的反外挂检测
- 游戏制作之路(4)Unity添加游戏对象
- 游戏制作之路(34)游戏开始菜单的实现
- 游戏制作之路(18)隐藏游戏里的鼠标
- 助力游戏连接现实,LBS让游戏岂止于“玩”
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Trading and Exchanges
Larry Harris / Oxford University Press, USA / 2002-10-24 / USD 95.00
This book is about trading, the people who trade securities and contracts, the marketplaces where they trade, and the rules that govern it. Readers will learn about investors, brokers, dealers, arbit......一起来看看 《Trading and Exchanges》 这本书的介绍吧!