| | Reaktionstest mit ROBO TX und Python 3.1.1
|
Vier Lampen an O1, O3, O5 und O7
Vier Taster an I1 - I4
Programm ReaktionEins :
Nach Text auf der Console wird eine 10er-Runde mit vom Programm zufällig
gewählte Tasten gestartet : DRÜCKEN. Die Reaktionszeit wird angezeigt.
Programm ReaktionZwei :
In einer Runde über zehn Tasten die zur aufleuchtenden Lampe gehörende
Taste drücken. Die einzelnen Reaktionszeiten und die Summe der
Reaktionszeiten wird angezeigt. Lampenauswahl und Pausenzeit sind
zufällig. Programm ReaktionDrei :
Mit Tricksersperre : Gleichzeitiges Drücken aller Taster hilft nicht
mehr. |
Programm ReaktionEins, der einfachste Fall :
from random import *
from time import *
from FishFaTX import *
tx = FishFace()
tx.OpenController(4)
print("Spiel gestartet")
ReaktionGesamt = 0
for i in range(1, 11):
Taste = randrange(1, 5)
print("Taste : ", Taste)
StartZeit = time()
tx.WaitForLow(0, Taste)
ReaktionsZeit = time() - StartZeit
print("Aktuelle Reaktionszeit : ", ReaktionsZeit)
ReaktionGesamt += ReaktionsZeit
print("Gesamtzeit : ", ReaktionGesamt)
tx.CloseController()
Anmerkungen :
- Imports für Zugriff auf Zufallszahlen und Timer sowie FishFaTX.py
- tx As New FishFace() : Instanzierung der Klasse
- tx.OpenController(4) : Verbindung zu TX Controller an Port 4 (mit
RoboTxTest.EXE ermitteln)
- for-Schleife mit zehn zufälligen Tasten. Die jeweilige Tastennummer wird
über print angezeigt
- Startzeit : Reaktionszeit auf Ausgang
- WaitForLow(0, Taste) : Warten Drücken / Loslassen Taste
- Feststellen der Reaktionszeit und Ausgeben (print)
- Summieren der Gesamtzeit
- nach Schleifen-Ende : Anzeige der Gesamtzeit, Beenden der Verbindung zum TX
Controller
Program ReaktionZwei :
from random import *
from time import *
from FishFaTX import *
tx = FishFace()
tx.OpenController(4)
print("Spiel gestartet")
ReaktionGesamt = 0
tx.Pause(1234)
for i in range(1, 11):
Taste = randrange(1, 5)
Lampe = Taste * 2 - 1
tx.SetLamp(0, Lampe, 512)
StartZeit = time()
tx.WaitForLow(0, Taste)
tx.SetLamp(0, Lampe, 0)
ReaktionsZeit = time() - StartZeit
print("Aktuelle Reaktionszeit : ", ReaktionsZeit)
ReaktionGesamt += ReaktionsZeit
tx.Pause(randrange(333, 1234))
for i in range(1, 8, 2):
tx.SetLamp(0, i, 512)
print("Gesamtzeit : ", ReaktionGesamt)
tx.CloseController()
Anmerkungen :
- Aufbau wie Eins.
- Hinzugekommen sind die Lampen, die vor dem tx.WaitForLow ein- und danach
wieder ausgeschaltet werden.
Die Textaufforderung fehlt hier.
- Hinzukommen ist noch mehr Zufall : Eine Zufällige Wartezeit vor dem Schalten
der jeweiligen Lampe.
- Das Ende der For-Schleife wird durch Einschalten aller Lampen angezeigt.
Programm ReaktionDrei :
from random import *
from time import *
from FishFaTX import *
tx = FishFace()
tx.OpenController(4)
print("Spiel gestartet")
ReaktionGesamt = 0
seed()
tx.Pause(1234)
for i in range(1, 11):
Taste = randrange(1, 5)
Lampe = Taste * 2 - 1
tx.SetLamp(0, Lampe, 512)
StartZeit = time()
ok = False
while not ok:
tx.WaitForInput(0, Taste)
ok = True
for i in range(1, 5):
if i != Taste and tx.GetInput(0, i) == 1: ok = False
tx.WaitForInput(0, Taste, 0)
if not ok: tx.Pause(1234)
tx.SetLamp(0, Lampe, 0)
ReaktionsZeit = time() - StartZeit
print("Aktuelle Reaktionszeit : ", ReaktionsZeit)
ReaktionGesamt += ReaktionsZeit
tx.Pause(randrange(333, 1234))
for i in range(1, 8, 2): tx.SetLamp(0, i, 512)
print("Gesamtzeit : ", ReaktionGesamt)
tx.CloseController()
Anmerkungen :
Anstelle des schlichten WaitForLow wird hier eine while-Schleife eingesetzt in
der zunächst auf auf das Drücken der zufälligen Taste gewartet wird. Ist das
geschehen, werden in einer for-Schleife alle anderen Tasten auf gedrückt
abgefragt, wenn ja dann ok = False. Nach Schleifenende wird auf Taste nicht
gedrückt gewartet und bei ok = False eine Strafpause eingelegt.
Download
Sources enthalten in PythonFish311.ZIP
Stand : 27.01.2010
|