Das Gangster-Krankenhaus
Um Python zu üben haben wir verschiedene Übungsaufgaben bekommen u.a. einen Zoo mit verschiedenen Tieren und einem Zoowärter, der überprüfen soll, ob die Tiere noch lebendig sind.
Jedoch habe ich mich entschieden vom Gangster-Krankenhaus zu erzählen.
Das Krankenhaus besteht aus 3 bzw. 4 Arten von Menschen: Patienten, Ärzten, natürlich den Gangstern und den Cops.
Arzt
Da der Arzt sowohl Patient, als auch Gangster behandeln muss, ist es für ihn notwendig auf die beiden Klassen zuzugreifen. In Python kann auf andere Klassen zugegriffen werden indem die Klasse die anderen Klassen imporrtiert:
from gangster import Gangster (Die Klasse Gangster wird importiert) from patient import Patient (Die Klasse Patient wird importiert)
Der Arzt hat Attribute wie die derzeitige Dienstzeit, oder die maximale Stundenzahl, die er arbeiten kann. Solange die Dienstzeit nicht die maximale Stundenzeit nicht überschreitet, kann er die Patienten behandeln, ansonsten legt der Arzt den Feierabend ein. Während der Behandlung erhalten die Patienten und Gangster Gesundheitspunkte; bei einer bestimmten Anzahl an Punkten dürfen sie entlassen werden.
Patient
Der Gesundheitswert den ein Patient erreichen muss wird zufällig bestimmt und sind in der Lage wegzugehen sobald der Wahrheitswert „entlassen“ wahr ist. Die Methode „behandeltWerden“ erhöht die Gesundheit des Patienten um die Zeit, welche der Arzt für den Patienten aufopfert.
Gangster
Da der Gangster eine spezifische Sorte von Patient ist, funktioniert mit den importierten Methoden des Patienten und weiteren. So werden dem Gangster von Cops, deren Existenz durch einen „Boolean“ geregelt wird, Handschellen an- und ab- gelegt; je nach dem, ob der Cop anwesend ist, oder nicht. Wenn die Handschellen angelegt sind, kann er nicht ohne weiteres entlassen werden.
API
Nach den praktischen Umsetzungen der genannten Projekte, sind wir nun soweit um auf die Cozmos umzusteigen. Um auch mit den Python-eigenen Befehlen die Besonderheiten von Cozmo für spätere Projekte zu nutzen, greifen wir immer wieder auf die API von Cozmo zu. Die API zeigt sämtliche Klassen, Methoden und Attribute an, die man für bestimmte Programmierbereiche des Cozmo braucht. Diese umfassen z.B Cubes, Gesichtsanimationen, Hebearme, Neigungswinkel des Kopfes etc. (Bewegungsabläufe). Doch bevor ich mich an komplexeren Bewegungsmechaniken probiere, teste ich ein paar kleine Dinge zur Übung aus.
Batterie
Zum Testen habe ich mir die Batterieleistung angeschaut bzw. wie diese im Display des Roboters ausgegeben wird. Dazu ist mir sofort der Befehl „print“ eingefallen. „battery_voltage“ wird in die Klammer des print-Befehls geschrieben, um den Batteriestand zu erfahren.
Jedoch gab es dabei ein kleines Problem: Nach wenigen Sekunden erlischt das Angezeigte wieder vom Display. Dafür gibt es eine klare Lösung: while-Schleife (vorprüfende). Komplex ist sie nicht, da sie der von Java gleicht. Ich verwende sie um einen künstlichen Zeitraum zu schaffen. Dafür initialisiere ich eine Variable x mit dem Wert 1. Da ich möchte, dass die Batterieleistung mind. 5 Sekunden angezeigt wird, erhöht sich die Variable jedes mal um 1. Um die Anzeigezeit zu erhöhen soll der Cozmo durch den Befehl „time.sleep()“ ,mit einer Sekundenzahl in der Klammer, in seinem derzeitigen Zustand verharren, bevor er die nächsten Sachen ausführt. Dieser Befehl kann sich als nützlich erweisen, wenn Cozmo mehrere Methoden nacheinander ausführen muss, was ihn überfordern würde und die Qualität des Projekts lindern würde…
… Heureka! Es hat FUNKTIONIERT!