设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5676|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
, H% \2 h; ?3 M0 c1 d- }to go& |; z+ C& m, `% Z
if not any? turtles with [not stopped? ] [ stop ]  
0 g3 i5 u4 p3 v! K& f- P" k2 |) E. Fask turtles with [remainder who 5 = 0] [2 I& z) Q7 t5 ^, t- ]  g8 }
set close-mates  (turtles with [self != myself])with[
+ }, u; g6 M* E3 ?(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
  U, q  }' |4 G4 band (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )
0 s$ a2 i1 k7 M0 b, j$ f  j2 d1 iand remainder who 5 = 0
5 `# \# V* L  P3 _" s( A]                   + u0 E& J& O  D6 n
ifelse any? close-mates $ g9 n5 l6 S  B. Y
[                                                                ' k6 _+ K3 P" a
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]; y( h, L2 d* L
face closest-one* Z4 K% ?9 s$ c3 `
rt 180
+ f1 K+ k0 T( m, P& R5 ifd random-float step-size
! t" d+ P/ d" m5 N: r: M8 Davoid-walls& ~6 e" M% I* o% Z4 U& v8 |
set stopped? false]6 c' h5 O* g" {! W9 C
[set stopped? true] 8 F  k  L" E/ `4 s9 c
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
0 v# ]2 u( s- U7 hif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]3 n' G2 q. K. h7 C2 {
则可以顺利的终止go程序, y( b3 R# ^# w0 y
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-3-2 22:15 , Processed in 0.017093 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表