私はこのコードを持っています。バスケットボールゲーム(振動センサーとHC-SR04を使ったアーケードスタイルのバスケットボールゲームの一種です。ヒットと得点ショット)。私はいくつかの秒が経過した後にTrueからFalseへのグローバルなブール値の変化を持つ方法を理解しようとしています。Python:数秒後にTrueからFalseへのブール値の変更を行います
ボールがバックボードに当たってゴバールバックボードが真になると、そこからボールがバックボードからネットにバウンスしたかどうかを数秒間真っ直ぐに保ちます。ボールがネットを通過したときにバックボード変数がまだ真の場合、バックボードがオフになっていることを知っていて、他のクールなものの特殊効果を再生することができます。
バックボード変数は、ボールがバックボードに当たったときにTrueに設定されますが、プレイヤーが数秒後にfalseに戻るのではなく、Trueに留まります。ここで
コードです:
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
あり、私のコードの最後の行にタイプミスだった - ultrasonic.when_in_rangeは= がされている必要があります()を獲得: ultrasonic.when_in_rangeは= .Thisが今 –