且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

星际地图2

更新时间:2022-09-13 20:10:52

http://wcg.yesky.com/272/3321272_3.shtml

最近老有网友问到为什么有时候堵口堵不住,到底有什么技巧?

其实这涉及到了星际建筑建造时位置的设定等关系。小葱本来是打算五一放假回来后好好研究一下再给大家详细解释,但有的网友问的太急了,所以先就我知道的给大家简单介绍一下原理和实际应用,因时间太紧,所以计算过程和结果不敢保证完全无误,但不影响理解原理,等五一长假后在回来完善。

一、建筑在摆放位置上的设定。
1.在星际里建筑的位置只能按格数来计算,而不是随便移动的,也就是说你只能把建筑建在地图已经化好的特定格数内,而不能随便移动几个像素,只能移动几格。
2.每个建筑都是矩形
3.被占用的格不能用于其他建筑。
4.建筑的中心点和矩形的中心点重合
星际中用来堵口的几个建筑(如房子,兵营)的建筑位置如下图所示
人族房子是必须放在2*3格数的矩形内,兵营是3*4格数的矩形
蓝框是房子所占面积,蓝点是建筑中心,红框是兵营所占面积,红点是建筑中心。
星际地图2

二、建筑本身的设定
建筑有着自身的体积,有着自己的建筑中心,按建筑中心想上下左右伸展不同宽度,形成最终形状。
上图中的A,B,C就是垂直方向上摆放的房子A,兵营B,房子C。
兵营的建筑设定是
星际地图2
也就是说以建筑中心为准向左延伸48像素,向右延伸56像素,向上延伸40像素,向左延伸32像素
那么我们可以看到,兵营B就在他所在的3*4矩形内,在其周围留下了不同宽度的缝隙。
同样的上面和下面的房子AC周围也留下了缝隙。
那么A和B之间的缝隙宽度就是两者建筑缝隙的总和。

而当这种缝隙的宽度比某兵种身位大时,那么此兵种就能通过此缝隙,反之则不能。

我们拿小狗为例,我们堵口就是要找到哪些建筑组合之间的缝隙小于小狗身位。
继续那上图为例,
AB之间的缝隙宽度为(1+1.5)*32-26-40=14
BC之间的缝隙宽度为(1+1.5)*32-22-32=26
而小狗的身位是15,那么
当房子在兵营上方时,小狗过不去
当房子在兵营下方时,小狗能过去

经过计算,我们可以得出以下几种经常用到的建筑方式可完全堵死路口。
水平方向摆放:
1、人族房子和科研所(BA)之间缝隙
垂直方向摆放:
1、人族房子在上,兵营在下
2、人族房子和房子
3、人族科研所在上,兵营在下
4、神族兵营在上,煅炉(BF)在下

以上几种情况下,两种建筑之间缝隙小狗无法通过。还有几种特殊建筑也可,不过实战中基本不会出现,完全没有意义。其他状态下的堵口都需用部队来站在建筑中间或边缘来弥补缝隙。如果遇到特殊地图和路口请大家自行研究一下。
大家经常犯的错误:神族BF在上兵营在下;人族BA放在了房子上面;房子和房子水平摆放(空隙20像素)。

下面帖几张图供参考。
星际地图2

星际地图2

星际地图2

星际地图2

星际地图2

星际地图2

主要建筑设定值(左右上下顺序)
神族
BF 36 36 24 20
BP 16 16 12 20
BG 48 48 32 40

人族
BS 38 38 22 26
BB 48 56 40 32
BA 40 44 32 24

特别说明:
神族BG和BF之间的宽度我们通过计算应该是16像素
而我们知道小狗的宽度是15
那么为什么小狗过不去哪?
这是因为小狗的宽度指的是15像素宽度,也就是15个(两个像素间距离),也就是说,实际上他要占用16个像素(头尾都要算),而BG和BF之间的距离虽然够15像素距离,但因为两头的像素点已经被建筑本身占有,不能再分配个小狗,所以小狗不能通过这个看起来能过去的缝隙。
所以大家在计算的时候要把小狗的身体宽度看做16。

本文转自jiahuafu博客园博客,原文链接http://www.cnblogs.com/jiahuafu/archive/2011/03/04/1970642.html如需转载请自行联系原作者


jiahuafu