设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5702|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false# Y/ H$ I9 n5 o4 M% @& e
to go
( b& K+ }5 P1 }  @2 B2 [if not any? turtles with [not stopped? ] [ stop ]  4 u1 q5 O; K, r& H7 e) I1 X( v
ask turtles with [remainder who 5 = 0] [% o+ ~1 n; Y; s7 \6 O% w( n. u: J
set close-mates  (turtles with [self != myself])with[% e. Q& m6 b: g
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) 0 S, z, r8 z9 F1 h* e$ d" C
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )
5 n. N' w( c$ r% r9 |and remainder who 5 = 0
9 s" P: H9 f4 D2 i7 l]                   + V( |8 n: z0 N) E. H
ifelse any? close-mates 8 p/ o" F+ s! Z3 L1 V+ |7 t
[                                                                9 A7 v" e; R6 @" h8 _
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]
( n7 Z3 J' i3 V9 R' O2 Eface closest-one' e0 n' h: Y' o) B7 y  U+ ^/ @8 i
rt 180
' D/ ~6 E+ _/ N4 Ifd random-float step-size) p2 K* ^4 N$ }
avoid-walls
# E) l/ `* i  v* c1 K( d% lset stopped? false]" T# k! i* L. M% C! ?" j
[set stopped? true] 2 Q/ f8 _1 a# A9 n2 `8 m7 v
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
* ?# ?* ^( f! I) sif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]8 n& e7 @) V+ T* o: j! O
则可以顺利的终止go程序8 a! J5 J, t# `" E2 g" l
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-8 10:26 , Processed in 0.015526 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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