设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5698|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
4 A( u  _3 y! l5 a5 jto go
& o: m0 f. h2 @if not any? turtles with [not stopped? ] [ stop ]  
6 w+ \6 l- W0 e0 Iask turtles with [remainder who 5 = 0] [
. {+ P& H& {0 J* q: w. cset close-mates  (turtles with [self != myself])with[* `& q7 c6 U; A4 b
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) 9 X5 s+ [1 f6 H
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) 4 O; Q2 V  H5 J* {; G9 ^
and remainder who 5 = 0
/ w, K3 G) ], {0 Z1 @8 ^]                   - h) u3 }4 ?3 e+ ?& J) v* a4 F
ifelse any? close-mates
( b: {6 I& i; v' p6 G: t* I[                                                                ; w2 E# K2 f8 A3 t5 X
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]. _4 w* j4 k; q
face closest-one4 g1 ?9 c3 R* r& A% H+ N
rt 180
! I- u8 i  |/ P& Z$ c7 sfd random-float step-size
9 T; J/ k3 c% ~4 S  r7 ravoid-walls
. ?" i& x. H$ O* bset stopped? false]
. @7 R+ Z# p* s7 F. g[set stopped? true]
5 Y* J; R' z1 @, P0 y; S9 L]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成  z; m5 A- X" Z0 M/ ^
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]
. u: I; J- x! r% W" @4 S8 q则可以顺利的终止go程序
- E: g+ Q8 G) [0 _' c但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-7 05:58 , Processed in 0.017621 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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