gpt4 book ai didi

Python:几秒钟后将 bool 值从 True 更改为 False

转载 作者:太空宇宙 更新时间:2023-11-03 14:54:34 25 4
gpt4 key购买 nike

我正在为篮球游戏编写这段代码(有点像街机风格的篮球游戏,使用振动传感器和 HC-SR04 来检测篮板命中和得分投篮)。我试图弄清楚如何在几秒钟后将全局 bool 值从 True 更改为 False。

例如,球击中篮板——这将全局篮板设置为“真”——从那里它会再保持“真”几秒钟,以查看球是否从篮板弹入网中。如果当球过网时篮板变量仍然为真,那么它就会知道这是一次篮板外投篮,并且可以播放一些其他很酷的东西的特殊声音效果。

现在,在回调函数中,当球击中篮板时,篮板变量设置为 True,但它只会保持 True 直到球员得分,而不是在几秒钟后变回 false。

这是代码:

import RPi.GPIO as GPIO
from gpiozero import DistanceSensor
import pygame
import time

ultrasonic = DistanceSensor(echo=17, trigger=4)
ultrasonic.threshold_distance = 0.3
pygame.init()

#Global
backboard = False

#GPIO SETUP

channel = 22

GPIO.setmode(GPIO.BCM)

GPIO.setup(channel, GPIO.IN)

#music
score = pygame.mixer.Sound('net.wav')
bb = pygame.mixer.Sound("back.wav")

def scored():
#the ball went through the net and trigged the HC-SR04
global backboard
if backboard == True:
print("scored")
backboard = False
score.play()
time.sleep(0.75)
else:
print("scored")
score.play()
time.sleep(0.75)

def callback(channel):
#the ball hit the backboard and triggered the vibration sensor
global backboard
if GPIO.input(channel):
backboard = True
print("backboard")
bb.play()
time.sleep(0.75)


GPIO.add_event_detect(channel, GPIO.BOTH, bouncetime=300) # let us know when the pin goes HIGH or LOW
GPIO.add_event_callback(channel, callback) # assign function to GPIO PIN, Run function on change
ultrasonic.when_in_range = scored

最佳答案

我建议简单地实现一个计时器对象。尝试实现这个:

from threading import Timer
import time

def switchbool():
backboard = false

t = Timer(3.0, switchbool) #will call the switchbool function after 3 seconds
t.start()

只要球击中篮板(无论何时设置 backboard = true),只需创建一个类似于上例中的计时器对象即可。

关于Python:几秒钟后将 bool 值从 True 更改为 False,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45683625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com