设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6792|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false& _! ?) |7 S+ E7 e: q' ?# k# j
to go# t6 i5 `& {  d
if not any? turtles with [not stopped? ] [ stop ]  * X" z0 ?$ E6 e8 Z% e7 C
ask turtles with [remainder who 5 = 0] [0 V3 J) ^* |- A% j
set close-mates  (turtles with [self != myself])with[- ~7 m6 y) B0 t$ w. H8 z
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) + o2 W9 M6 U. {( F7 z3 S
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) # A8 f. X$ ~1 N2 W+ l
and remainder who 5 = 0
1 Y( h  x+ q7 \]                  
& B( T% D; i" M( b7 G6 iifelse any? close-mates
" J5 L+ `" w( r! {0 M[                                                                ) t: u4 w8 Q' s4 \
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]: b  I) B4 |4 K' T; [. u) B& e. r! N
face closest-one# b3 [2 F0 W) u+ c* f4 I5 o1 ^
rt 180) L! q; k3 N1 C6 u% c7 a! {  H
fd random-float step-size
+ t* M* Q8 i; r4 Cavoid-walls
0 I0 _8 t  X0 Oset stopped? false]% Y' X' ^0 c4 c
[set stopped? true] 6 [8 V* o! D. E. Y
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成( t; _! T- a$ E
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]: z8 d/ U; s' H8 k$ X4 a
则可以顺利的终止go程序
8 A, z8 c+ S$ t4 M5 k但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-23 10:35 , Processed in 0.016829 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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