Closed oldGreenIsMe closed 2 years ago
可以输出一下生成在边界上时的各个参数,然后对judgeAround函数debug一下 以及遍历坦克边界像素点来判断是否障碍不太优雅,可以考虑试试能否按坦克外接圆作为判定范围
可以输出一下生成在边界上时的各个参数,然后对judgeAround函数debug一下 以及遍历坦克边界像素点来判断是否障碍不太优雅,可以考虑试试能否按坦克外接圆作为判定范围
for (i = 0; i <= tankwidth; i++) for (j = 0; j <= tankhigh; j++) if (battleGround[i + x][j + y] == 1) return 0; 都已经严格到把整张图片都当作判定标准了,还是不行
你这个x,y是对应坦克图片哪个点呢?由于不太确定你的各种变量设定的含义 我猜一下可能出现这种情况的原因: 坦克图片是一个二维矩形,我看你只进行了4个方向一维线段上点的碰撞判断,比如矩形对角线上的点是不是就没有考虑? 因为我看你给出的图片坦克也是斜着的对角线部分和墙壁重合了
其实我感觉没必要判断这么麻烦
你可以以坦克图片中心点代表坦克坐标,我看你墙壁也是battleGround二维数组记录,直接和battleGround中每个点用距离公式算一个距离 如果距离超过设定的碰撞距离(至少比坦克矩形对角线一半大 可以设置大些 坦克直接出生墙边也不太好)就重新随机出生
实在不行 直接内设几个固定出生点得了 不要因为这个小细节耽误太多开发时间
这是判断函数
这是生成坦克位置函数
这是效果图,只看绿色就好,红色并没经过判断障碍物处理