Dr. M. Grabert Abteilung Angewandte Informationsverarbeitung 25. Mai 2001
Johannes Mayer Blatt 4


[c]



Systemnahe Software (SS 2001)


Abgabetermin: 28. Mai 2001

6 Objektorientiertes non-interaktives Schneckenrennen (8 Punkte)

Erbarmen! Die Schnecken sind wieder unterwegs. Sie fressen im Garten alles kahl, was sich ihnen in den Weg stellt ... dabei ist es doch viel cooler, wenn man sie zu Rennzwecken umerzieht ... (Schumi-Schnecke und so ...)
Schreiben Sie ein C-Programm, das ein Schneckenrennen zwischen n Rennschnecken simuliert. Jede Rennschnecke wird durch einen eigenen Prozess repräsentiert (also: objektorientiert :-)). Jede Schnecke zieht pro Zug zwischen 0 und 2 Felder weiter. Wie weit eine Schnecke zieht, soll sie selbst durch eine Zufallszahl bestimmen. Es gibt einen Rennleiter (Vaterprozess/ Scheduler/Schiedsrichter/Taktgeber), der das Rennen koordiniert: er gibt pro Sekunde jeder Schnecke ein Signal (im wahrsten Sinne des Wortes! benutzen Sie hier bitte SIGUSR1), damit sie ihren Zug ausführt. Die Schnecke, die zuerst am Ziel angekommen ist (nach k zurückgelegten Feldern), terminiert ihren Schneckenprozess. Der Vater checkt nach jeder Runde, ob bereits eine Schnecke terminiert hat (z.B. via waitpid) und kürt dann den Sieger. Sollten mehrere Schnecken gleichzeitig ans Ziel kommen, gewinnt die Schnecke mit der kleinsten Startnummer. Die restlichen Schnecken werden erbarmungslos via SIGKILL zur Schnecke gemacht ...

7 ASCII-getriebene Bildschirmdarstellung des Rennens (2 Punkte)

Damit die Sache etwas lustiger für die Fans am Streckenrand wird, werden wir das Rennen auf dem Bildschirm darstellen! Via system(``clear``); löscht man den Bildschirm. Jetzt kommt der überraschende Move: sendet man an ein Terminal (mit den meisten ;-) klappt es) die Sequenz ESCAPE[y;xH dann wird der Cursor genau an die Stelle (x,y) positioniert und eine Ausgabe via z.B. printf erfolgt ab dieser Stelle. Lassen Sie dadurch die Schnecken über den Bildschirm laufen! Zeichnen Sie durch den Spielleiter auch schon mal die Ziellinie auf den Schirm ... Sie finden auf dem FTP-Server ein lauffähiges Demoprogramm, an dem Sie sich orientieren können!


Gib Gas! Ich will Spaß!


Johannes Mayer, 2001-05-25