极客战记吧 关注:261贴子:880
  • 1回复贴,共1

求助,冰川,多边形现象关卡过不了。

取消只看楼主收藏回复

我画出来的图形如下,明明符合要求了,但是提示只有右上角,也就是正方形那个是成功的:


另外,我试过把牦牛移到最中间,结果也是不行:
#startOffset = Vector(-15, -15/Math.tan(degreesToRadians(360/side/2)))
#endOffset = Vector(15, -15/Math.tan(degreesToRadians(360/side/2)))

整体代码如下,求大神帮忙看看问题在哪。
# 您需要将度数转换为弧度的函数。 Math.PI / 180乘以度数。
def degreesToRadians(degrees):
# 所有向量运算都需要用弧度来工作,而不是度。
return Math.PI / 180 * degrees
# 你的多边形函数应该有3个输入:开始,结束和边。
def line(start, end,side):
# 首先,我们需要得到完整的向量和它的大小来确定我们是否低于我们的最小阈值。
full = Vector.subtract(end, start)
quter = Vector.multiply(full,1/5)
distance = full.magnitude()
if distance <25:
# 如果在我们的阈值距离下,我们将简单地沿着向量画一条线并完成(返回告诉我们退出函数)。
hero.toggleFlowers(False)
hero.moveXY(start.x, start.y)
hero.toggleFlowers(True)
hero.moveXY(end.x, end.y)
return
A = Vector.add(start,quter)
quter=Vector.rotate(quter, degreesToRadians(360/side))
B = Vector.add(A,quter)
line(start,A,side)
for k in range(side-1):
line(A,B,side)
quter=Vector.rotate(quter, degreesToRadians(360/side))
A=B
B = Vector.add(A,quter)
line(B,end,side)
def flake(start, end,side):
# 要创建六角片,我们需要创建每次旋转60度的6条线分形。
a = start
b = end
for i in range(side):
bianchang = Vector.subtract(b, a)
line(a, b,side)
# 为了得到下一条边,我们需要旋转60度的边。
full = Vector.rotate(bianchang, degreesToRadians(360/side))
# 现在需要重新设置A和B的开始和结束点的新的一面。
a=b
b=Vector.add(b,full)
# 为了获得每个多边形的开始和结束位置,将startOffset和endOffset添加到牦牛的位置。
startOffset = Vector(-15, -15)
endOffset = Vector(15, -15)
# 你需要考虑所有的牦牛,为每个牦牛绘制一个多边形。 牦牛是敌人。
enemies = hero.findEnemies()
for enemy in enemies:
side=enemy.sides
#startOffset = Vector(-15, -15/Math.tan(degreesToRadians(360/side/2)))
#endOffset = Vector(15, -15/Math.tan(degreesToRadians(360/side/2)))
#startOffset = Vector(-15*Math.tan(degreesToRadians(360/side/2)), -15)
#endOffset = Vector(15*Math.tan(degreesToRadians(360/side/2)), -15)
start=Vector.add(enemy.pos,startOffset)
end=Vector.add(enemy.pos,endOffset)
flake(start, end,side)


IP属地:四川1楼2021-08-03 10:17回复
    两天都没人回复呀


    IP属地:四川2楼2021-08-05 01:17
    回复