设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3444|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
) u2 `( g0 |9 Z- ]3 I! Jto go! ?' S8 a1 K, z) K: [
if not any? turtles with [not stopped? ] [ stop ]  
7 ~% J: s+ I' \$ d) M( Wask turtles with [remainder who 5 = 0] [9 s5 F9 N" {1 l5 n4 u
set close-mates  (turtles with [self != myself])with[
' f, k6 A4 a2 @8 i(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
/ ?  k/ k' W0 z* M1 {. hand (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )
% i& S( F6 R. y  jand remainder who 5 = 0
3 v, M$ M, o# Q2 ^9 z; y7 k- t]                  
, T; `; s! ~5 `, Sifelse any? close-mates
+ {& F0 Y$ {7 |2 \/ t7 E[                                                               
' K, X3 U0 {+ l: Lset closest-one min-one-of (close-mates with[self != myself] )[distance myself]
. h6 j, d1 E) B  v( R. ~5 ]- jface closest-one0 Z. ~) l+ V; q
rt 1803 I& ]3 ~: l" m$ z' R
fd random-float step-size4 v& L* I/ F  I
avoid-walls+ _5 k6 h+ F  j9 b: g6 @
set stopped? false]
6 k1 X7 l/ g7 Y# C/ Y4 W[set stopped? true]
: J% _; f, z( K; b+ m]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
+ V! S+ A# t+ ?. W( {. B! ^) rif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]
8 s; Z5 Y  A# T7 _则可以顺利的终止go程序: ^$ g7 W+ S+ _
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 23:09 , Processed in 0.015327 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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