Die Umsetzung der Bedienoberfläche

Ein wichtiges Kriterium stellte für uns die Bedienbarkeit des Programmes dar, somit entschieden wir uns für eine benutzerfreundliche Umsetzung des Programmes. Turbo Pascal 7.0 bietet Möglichkeiten zur Gestaltung des Programmes in einer DOS-Umgebung, für die wir uns entschieden haben.

Wie wurde das Zeichnen von Rahmen vereinfacht?
Am Beispiel des Menubildschirmes werde ich ihnen das Zeichnen von Rahmen erklären. Da zum Zeichnen von Rahmen oft gleichartige Arbeitsschritte durchlaufen werden, haben wir dafür eine Procedure angelegt, die einen Rahmen von der ersten Koordinaten zur zweiten Koordinaten zieht. Dazu benutzten wir die Procedure gotoXY(), um zu einer Position auf dem Bildschirm zu springen und die Procedure write() um an dieser Stelle ein Zeichen zu setzen. Die Procedure "Drawframe" zeichnet zuerst alle Ecken, danach die zwei Horizontalen und die zwei Vertikalen. Die Ecken lassen sich nicht in einen Algorithmus oder eine Schleife verpacken. Horizontalen und Vertikalen berechnet die Procedur mit Hilfe der Differenz der Koordinatenwerte. Von dem entsprechendem Wert (x-Wert für Horizontale, y-Wert für Vertikale) der 1. Koordinaten ausgehend bis zum dem Wert der 2. Koordinaten zeichnet die Schleife das jeweilige Zeichen. Hier die Procedure "DrawFrame":

Mit dieser Procedur ist aber noch immer kein Rahmen gezeichnet. Nun kommen wir also zum eigentlichen Zeichnen und werden das setzen von Rahmen anhand unserer Funktion "Menuscreen" erläutern. Zuerst einmal zeichnet die Funktion einen Hauptrahmen. Dies geschieht mit folgenden Aufruf:

Ähnlich gestaltet sich die Verwendung eines zweiten Rahmens um den Mastermind-Schriftzug. Dabei wird durch einen zweiten Aufruf der Funktion (natürlich mit dem entsprechenden Koordinaten) aber ein Teil des ersten Rahmens überschrieben, da sich 2 Schriftzeichen überschneiden. Dies wird umgangen, in dem ein "waagerechtes T-Stück" diese Stelle ein drittes Mal überschreibt:

Ein "Rahmengebilde" wird also aus mehreren einzelnen Rahmen erzeugt, Verbindungstücke werden überschrieben.

Wie wurde die Ein- und Ausgabe umgesetzt?
Eine grafische Oberfläche gliedert sich zunächst in Eingabe des Benutzers und Ausgabe des Computers. Grundlegend arbeitet Mastermind natürlich mit Zahlen, die grafische Oberfläche setzt also Zahlencodes in Farben um und wandelt von dem Benutzer gewählte Farben in Zahlen.
Für die Ausgabe von Farben durch den Computers reicht eine Procedure, die eine Zahl beliebiger Stelligkeit als Parameter hat. Sie ändert die Textfarbe in Abhängigkeit der Zahl und gibt schlieslich ein Zeichen (ein Sternchen) aus. Was ist jedoch, wenn die Zahl mehrere Ziffern beinhaltet? Dieser Fall entspricht dem else-Teil einer Case-Anweisung. Die Procedur "writecolor" ruft sich mit einer einzelnen Ziffer der Zahl selbst auf und ändert die Farbe sofort, da der Procedure nur eine Ziffer übergeben wurde. Dieser selbstaufruf geschieht so oft, bis alle Ziffern der Zahl geschrieben wurden.
Mit folgender Procedure sind wir in der Lage, einen Zahlencode (vom Typ Longint) als verschiedenfarbige Sternchen auszugeben:

Der kompliziertere Teil ist die Eingabe solcher Zahlencodes. Dazu haben wir eine Art Matrix erstellt, in der der Benutzer für jede Stelle (horizontal) die Farbe (vertikal) wählen kann. Das entspricht einer Funktion, die eine Zahl vom Typ Longint ausgibt. Die Funktion besteht aus verschiedenen Sub-Funktionen, um eine gewisse Übersicht zu gewährleisten. Anhand des nachfolgenden Quelltextauszuges können sie den groben Aufbau nachvollziehen:

Zurück


Startseite