设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6037|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false3 j8 ]* e5 J8 L9 d- I
to go
# q# A: n- l6 w6 h% |" {if not any? turtles with [not stopped? ] [ stop ]  
3 H0 Z( s9 x& @1 q. Gask turtles with [remainder who 5 = 0] [
5 n1 ~0 ]7 L$ C6 i* Z) uset close-mates  (turtles with [self != myself])with[
! W4 z! f. v4 ](abs(xcor -(xcor-of myself)) < X-Dist + Wid ) / R7 v( O" [4 x
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) $ U6 n; R* l9 V! j
and remainder who 5 = 0
- r' N5 _/ Z. f1 n- J6 r]                   0 ]. I& j; g% C5 @+ b
ifelse any? close-mates
# C0 R; V' p3 U4 V[                                                                : k' @% S9 l) H# K+ q4 K
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]3 P  I  {2 x" ~; ^- I& F
face closest-one% c. [- `% z, S, x
rt 180
+ d) y, v1 E: K0 h4 p0 o* ]( `fd random-float step-size3 V8 v( W# \1 L: p, t
avoid-walls
' I- ?: \7 Z: ]6 x& yset stopped? false]+ ^* o  l0 X4 q0 K- A
[set stopped? true]
2 p: W4 F8 P! s( n3 L]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成! H; U3 k9 N# L7 @
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]
; }# G6 s9 a$ r' q# ^0 Y则可以顺利的终止go程序
$ o! R6 ]4 `' o+ T- o8 M1 C但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-15 22:36 , Processed in 0.034322 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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