设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6213|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
( D6 e" k. P1 U3 W  [0 m" tto go
5 b8 N1 x4 p( K5 S  s+ Q( Eif not any? turtles with [not stopped? ] [ stop ]  , I# t- W- p2 r
ask turtles with [remainder who 5 = 0] [
0 N( T* J+ g9 d4 I' w! t7 i5 y$ \set close-mates  (turtles with [self != myself])with[0 X) [- }3 z- L
(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
/ a8 m: z7 b  Qand (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) ( h9 X7 l! |( q$ r, B, P& v
and remainder who 5 = 0 , g; L4 ^' r# a! P9 ~5 o( X
]                   & w, q" ^: Y1 U2 i' D
ifelse any? close-mates
! w* L/ M8 }3 ]2 W6 T1 X[                                                                / A: S0 ^  E" A7 r- k4 j
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]; Q$ u) T0 r* t' t; X& V
face closest-one# B3 Q6 m" O% z3 s6 W$ s
rt 180& v8 m! O& T0 J* N
fd random-float step-size3 a! C7 B! d' d9 Q5 L
avoid-walls
" X6 p  W/ {+ _$ [8 e# Gset stopped? false]2 V% ], q# L# @
[set stopped? true]
: W. b9 Z  D1 J( a]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
" W9 |! [: T9 I3 {7 zif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]8 S, t: t8 @1 d- {: [
则可以顺利的终止go程序( T  |! D$ D' j9 T# j0 H
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-30 09:42 , Processed in 0.013057 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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