zoukankan      html  css  js  c++  java
  • 星际地图2

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

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

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

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


    二、建筑本身的设定
    建筑有着自身的体积,有着自己的建筑中心,按建筑中心想上下左右伸展不同宽度,形成最终形状。
    上图中的A,B,C就是垂直方向上摆放的房子A,兵营B,房子C。
    兵营的建筑设定是

    也就是说以建筑中心为准向左延伸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像素)。

    下面帖几张图供参考。












    主要建筑设定值(左右上下顺序)
    神族
    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。

  • 相关阅读:
    PHP中pack、unpack的详细用法
    Rbac
    composer
    tp5+workman
    apache
    Vs2005安装后没有模板的解决方法
    java中使用mysqldump 备份数据库
    java中文件上传下载将file转为MultipartFile
    hibernate中的schema
    Java之 1.8新特性
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/1970642.html
Copyright © 2011-2022 走看看