danke für deine ausführliche antwort! habe es verstanden. namen wurden so im tutorial vorgegeben, für mein projekt ändere ich eh nochmal alles.
weitere frage (dazu hole ich etwas aus):
ich programmiere die steuerung einer tello drohne in python. ich möchte, dass die drohne startet, wenn ich space >3 sekunden halte. dazu wird, sobald space gedrückt wird, eine liste in jedem loop um die momentane sekundenzeit erweitert. wenn die letzte sekundenzeit nicht mehr mit der vorletzten sekundenzeit in der liste übereinstimmt, bedeutet das, dass eine sekunde vergangen ist. somit wird der sekundenzähler um 1 erhöht. wenn ich space <3 sekunden loslasse, soll der interne sekundenzaehler wieder auf 0 gehen. an sich funktioniert es, nur werden sekundenzaehler und drueckzeiten nicht wieder auf 0, bzw [0, 0] gesetzt wenn ich space loslasse (trotz des keyup events). findet hier wer meinen fehler?
DANKE!!!
mein code:
Code: Alles auswählen
def getKey(keyName):
ans = False
for event in pygame.event.get():
pass
keyInput = pygame.key.get_pressed()
myKey = getattr(pygame,'K_{}'.format(keyName))
if keyInput[myKey]:
ans = True
return ans
def steuern(drone, drueckzeiten, sekundenzaehler):
# starten, landen
if getKey("SPACE") == True and drone.is_flying == False:
drueckzeiten.append(datetime.now().second)
letzteZeit = drueckzeiten[-1]
vorletzteZeit = drueckzeiten[-2]
if letzteZeit != vorletzteZeit:
sekundenzaehler += 1
if sekundenzaehler > 3:
drone.is_flying = True
sekundenzaehler = 0
drueckzeiten = [0, 0]
for event in pygame.event.get():
if event.type == pygame.KEYUP:
if event.key == pygame.K_SPACE:
print('losgelassen')
sekundenzaehler = 0
drueckdauer = [0, 0]
steuern_return = {'drueckzeiten': drueckzeiten, 'sekundenzaehler': sekundenzaehler}
print(steuern_return)
return steuern_return
class Tello():
def __init__(self, is_flying):
self.is_flying = is_flying
def main():
steuerung_return = {'drueckzeiten': [0, 0], 'sekundenzaehler': 0}
pygame.init()
fensterBreite = 1500
fensterHoehe = 1000
screen = pygame.display.set_mode((fensterBreite, fensterHoehe))
pygame.display.set_caption("Tello Controll")
drone = Tello(False)
while True:
steuerung_return = steuern(drone, steuerung_return['drueckzeiten'], steuerung_return['sekundenzaehler'])
if __name__ == '__main__':
main()