NetLogo海龟移动实现求助:漫游限±20度转向,避障允90度转向
NetLogo 海龟移动与避障逻辑实现
根据需求,下面是完善后的move-turtles代码,实现正常漫游时的转向限制,以及避障时的大角度转向:
to move-turtles ask turtles [ if who = ticks [ stop ] let agent-ahead one-of turtles-on patch-ahead 1 ifelse agent-ahead != nobody [ ; 避障:随机左转/右转0-90度 let turn-angle random 91 if random 2 = 0 [ rt turn-angle ] [ lt turn-angle ] ] [ ; 正常漫游:左右各0-20度随机转向,总范围不超40度 rt random 21 lt random 21 ] fd 0.2 ] end
逻辑说明:
- 正常漫游:通过
rt random 21和lt random 21实现左右各0-20度的随机转向,总转向范围控制在±20度内,符合每步转向不超40度的要求。 - 避障处理:当检测到前方1步范围内有其他海龟时,生成0-90的随机角度,随机选择左转或右转,满足避障时最大90度转向的需求。
- 保留原代码中
if who = ticks [ stop ]的逻辑,跳过与当前ticks编号一致的海龟。
内容的提问来源于stack exchange,提问作者Muhammed Basil
相关产品推荐
相关产品推荐

