Timer 如何在NetLogo中创建倒计时计时器?
我正在尝试在NetLogo中制作一个类似青蛙的游戏,我需要创建一个倒计时的计时器。然而,我查看了Frogger并使用了创建计时器的相同过程,但它不起作用。请告知 如何在NetLogo中创建倒计时 这是如何实现倒计时计时器的概述。这既适用于实时倒计时,也适用于模拟时间倒计时Timer 如何在NetLogo中创建倒计时计时器?,timer,netlogo,Timer,Netlogo,我正在尝试在NetLogo中制作一个类似青蛙的游戏,我需要创建一个倒计时的计时器。然而,我查看了Frogger并使用了创建计时器的相同过程,但它不起作用。请告知 如何在NetLogo中创建倒计时 这是如何实现倒计时计时器的概述。这既适用于实时倒计时,也适用于模拟时间倒计时 to setup-timer set count-down 30 ;; a 30 tick timer ;; if you have a display of the remaining time, ;;
to setup-timer
set count-down 30 ;; a 30 tick timer
;; if you have a display of the remaining time,
;; you might want to initialize it here, for example:
ask patch max-pxcor max-pycor
[ set plabel-color white
set plabel count-down
]
end
;; this example is for global count-down.
;; for a per-agent count-down, each agent would need
;; to initialize its own count-down variable
- 变量通常是全局变量,除非每个代理都必须有自己的倒计时。然后,该变量将是代理的自有变量
globals [ count-down ] ;; or turtles-own [ count-down ]
- 我认为通常最好跟踪剩余时间。使用倒计时的持续时间初始化倒计时变量。这使得(在游戏中)通过简单地在剩余时间内增加或减少倒计时,就可以轻松实现延长倒计时的奖金和减少倒计时的惩罚。跟踪倒计时到期的“实际”时间(使用
或类似方法)通常不太有用,尤其是当游戏可以暂停时。可能会出现不希望出现的效果,您必须对其进行编码计时器+持续时间
to setup-timer
set count-down 30 ;; a 30 tick timer
;; if you have a display of the remaining time,
;; you might want to initialize it here, for example:
ask patch max-pxcor max-pycor
[ set plabel-color white
set plabel count-down
]
end
;; this example is for global count-down.
;; for a per-agent count-down, each agent would need
;; to initialize its own count-down variable
to decrement-timer
set count-down count-down - 1
end
to-report timer-expired?
report ( count-down <= 0 )
end
- 这完全取决于你
- 这可能涉及重置计时器以进行另一次倒计时
to setup-timer
set count-down 30 ;; a 30 tick timer
;; if you have a display of the remaining time,
;; you might want to initialize it here, for example:
ask patch max-pxcor max-pycor
[ set plabel-color white
set plabel count-down
]
end
;; this example is for global count-down.
;; for a per-agent count-down, each agent would need
;; to initialize its own count-down variable
- 这可能是每“滴答”一次,或者是基于实时的计算
- 在任何适当的时间表上减少倒计时
- 如果需要,更新计时器的显示
- 测试计时器以查看其是否已过期
- 按过期的计时器操作
;; a "once-per-tick" count-down decrement-timer update-timer-display if timer-expired? [ act-on-expired-timer ] ;; rest of the go procedure, then... tick ;; a "once-per-second" count-down every 1 ;; this block runs only once per second [ decrement-timer update-timer-display if timer-expired? [ act-on-expired-timer ] ] ;; the rest of the go procedure tick
mod
操作符和ticks
计数器在go
过程中:
if ticks mod 30 = 0 [ perform-recurring-event ]
上述代码行将导致每当
滴答声
计数器达到0或30的倍数时,程序执行重复事件
运行。换句话说,它将每隔30次滴答声运行一次
你必须比“它不工作”更具体。如果你想用秒而不是滴答声来计算计时器,那么每一次关键字将非常有帮助。