Adding README
This commit is contained in:
73
README.md
Normal file
73
README.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
# Zeitschätzspiel
|
||||||
|
|
||||||
|
Es handelt sich um ein einfaches Zeitschätzspiel, bei dem eine vorgegebene Zeit möglichst genau abgeschätzt werden muss.\
|
||||||
|
Zur Zeitmessung und Auswertung der Eingaben wird ein Arduino verwendet. Die grafische Darstellung und die Verwaltung der
|
||||||
|
Spielergebnisse erfolgt mit einem Python Programm. Die Kommunikation zwischen Arduino und GUI erfolgt textbasiert über
|
||||||
|
eine Serielle Schnittstelle.
|
||||||
|
|
||||||
|
## Benötigtes Material
|
||||||
|
|
||||||
|
- Arduino mit USB-Schnittstelle
|
||||||
|
- Taster (z.B. Grobhandtaster)
|
||||||
|
|
||||||
|
## Hardwareaufbau
|
||||||
|
|
||||||
|
Der Hardwareaufbau ist denkbar einfach. Dazu wird der verwendete Taster mit GND und Pin2 am Arduino verbunden.\
|
||||||
|
Es wird kein zusätzlicher Pull-Up Widerstand benötigt, da der interne Pull-Up Widerstand vom Arduino verwendet wird.
|
||||||
|
|
||||||
|
## Abhängigkeiten
|
||||||
|
|
||||||
|
### Arduino Sketch
|
||||||
|
|
||||||
|
Der Arduino Sketch greift ausschließlich auf Systemfunktionen zu und benötigt keine zusätzlichen Librarys.
|
||||||
|
|
||||||
|
### Python Frontend
|
||||||
|
|
||||||
|
- python3
|
||||||
|
- pip3
|
||||||
|
- tkinter
|
||||||
|
- pygame
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
``` BASH
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install python3 python3-pip python3-tk python3-pygame
|
||||||
|
git clone https://git.dorf.cloud/lukasdietz/Zeitschaetzspiel.git
|
||||||
|
cd ../Zeitschaetzspiel
|
||||||
|
```
|
||||||
|
|
||||||
|
Den Arduino Sketch ``../Zeitschaetzspiel/Arduino/Zeitschaetzspiel.ino`` auf den Aruino übertragen und ggf. prüfen, ob eine
|
||||||
|
serielle Kommunikation (9600 Baud) mit dem Arduino möglich ist.
|
||||||
|
|
||||||
|
## Verwendung
|
||||||
|
|
||||||
|
Das Frontent wird mit ``python3 game.py`` gestartet.
|
||||||
|
Nach dem öffnen der Oberfläche muss der Arduino verbunden werden. Dazu im Menü **Verbindung -> Verbinden** benutzen und den entsprechenden Seriellen Port angeben.
|
||||||
|
|
||||||
|
Nach erfolgreichem Verbindungsaufbau kann über den Button **Neues Spiel starten** ein Spiel gestartet werden.
|
||||||
|
|
||||||
|
Es wird vom Arduino eine zufällige ganzzahlige Zeit zwischen 5 und 30 Sekunden vorgegeben und als Zielzeit angezeigt.\
|
||||||
|
Mit dem ersten Tastendruck wird die Zeitmessung gestartet und durch eine Tonausgabe signalisiert.\
|
||||||
|
Beim zweiten Tastendruck wird die Zeitmessung gestoppt und sowohl die geschätzte Zeit, als auch die Abweichung in Sekunden angezeigt.
|
||||||
|
|
||||||
|
Möchte sich der Spieler in die Rangliste aufnehmen lassen, besteht nun die Möglichkeit einen Namen einzutragen und den Messwert in die Rangliste zu speichern.
|
||||||
|
|
||||||
|
Ist der eingegebene Namen bereits in der Rangliste enthalten bietet das Programm zwei Möglichkeiten an:
|
||||||
|
|
||||||
|
1. Namen beibehalten und alten Datensatz überschreiben
|
||||||
|
2. Neuen Namen eingeben und neuen Datensatz speichern
|
||||||
|
|
||||||
|
Soll das Spielergebnis nicht in die Rangliste aufgenommen werden, kann direkt ein neues Spiel gestartet werden.
|
||||||
|
|
||||||
|
## Rangliste
|
||||||
|
|
||||||
|
In der Oberfläche werden immer die 20 besten Messungen mit Namen, Zielzeit, Sollzeit und Abweichung angezeigt. Maßgeblich für die Sortierung ist die Abweichung zwischen Sollzeit und gemessener Zeit.
|
||||||
|
|
||||||
|
Die Rangliste wird in der Datei leaderboard.json im Verzeichnis des Spiels gespeichert und beim nächsten Start des Programms automatisch wieder geladen.
|
||||||
|
|
||||||
|
Über den Menüpunkt **Datei -> Rangliste zurücksetzen** werden alle Messungen aus der Rangliste entfernt.
|
||||||
|
|
||||||
|
## Lizenzinformationen
|
||||||
|
|
||||||
|
Die Verwendeten Sounddateien stammen von pixybay.com und stehen zur kostenlosen Nutzung unter der [Pixabay-Inhaltslizenz](https://pixabay.com/de/service/license-summary/) zur Verfügung.
|
||||||
Reference in New Issue
Block a user