PROGRAM Vier_gewinnt; { *** Vier gewinnt fr ein oder zwei Spieler *** *** Version 4.82 *** *** von Dominik Wagenfhr *** *** programmiert vom 28. Mai bis 28. Juni *** } { Bem.: Das Programm erfllt leider nicht all meine Ansprche, da die Kapazitt des "Code Segments" begrenzt ist. Leider wei ich nicht, wie man dies umgeht, z.B. wie man einen Programmteil auslagert. Deswegen konnte ich folgende Ideen nicht mit einbauen : Unterbrechen eines Spieles, Rckkehr ins Hauptmen, Mglichkeit zum Abspeichern; Wiederaufnahme eines unterbrochenen Spieles; Laden und Weiterfhrung eines Spieles; eine Highscore-Liste fr die fnf besten Spieler, die den Computer am schnellsten - mit den wenigstens - Steinen schlagen konnten. Ein paar andere gute Ideen konnte ich aber verwirklichen : Ein- und Zwei-Spieler Modus; Menauswahl mit Cursorsteuerung; relativ gute Grafikumsetzung; Cursorsteuerung auf dem Spielfeld; Hilfe fr den Spieler (gibt an, wo man (nicht) setzen sollte); Auswahl, wer beginnen soll; Computer reagiert nicht nur, sondern agiert auch. (Wie er das tut, ist in der beigefgten Anleitung ausfhrlich beschrieben !) Jetzt wnsche ich noch viel Spa beim Spielen und bei dem Versuch den Computer zu schlagen. Der Programmierer } USES CRT; VAR spielername : ARRAY [1..3] OF STRING[12]; spieleranzahl : BYTE; spielanzahl, spielnummer : INTEGER; computerpunkte : INTEGER; spielerpunkte : ARRAY[1..3] OF INTEGER; computersteine, gesamtsteine : BYTE; spielersteine : ARRAY[1..3] OF BYTE; feld : ARRAY [1..6, 1..7] OF BYTE; sperre, spalte, hilfsspalte : ARRAY [1..7] OF BYTE; sperren1, sperren2 : BYTE; hilfsspalten, hilfsspalten1, hilfsspalten2, hilfsspalten3 : BYTE; x, y, dx, dy : BYTE; { Koordinaten des Spielfeldes } ycor, xcor : BYTE; { Koordinaten fr Zeiger } beginner : STRING; spieler : BOOLEAN; stelle : BYTE; feldgesetzt : BOOLEAN; gewinner : BYTE; taste : CHAR; pruef1 : BOOLEAN; zfl : BYTE; { Zufallszahl } dummy1 : STRING; pruef3 : BYTE; k, l : BYTE; { Zhlvariable } { ----------------------------------------------------------------------- } PROCEDURE Titelscreen1; BEGIN CLRSCR; WRITE('ͻ'); WRITE(' Vier gewinnt von Dominik Wagenfhr (C) 1998 '); WRITE('͹'); WRITE(' '); WRITE(' '); WRITE(' ͻ '); WRITE(' Spielanzahl '); WRITE(' ĺ '); WRITE(' Spieleranzahl '); WRITE(' ĺ '); WRITE(' Spielername '); WRITE(' ĺ '); WRITE(' Es beginnt '); WRITE(' ĺ '); WRITE(' Spiel starten '); WRITE(' ĺ '); WRITE(' '); WRITE(' ĺ '); WRITE(' E N D E '); WRITE(' ͼ '); WRITE(' '); WRITE(' '); WRITE(' '); WRITE('ͼ'); END; { of Titelscreen1 } PROCEDURE Titelscreen2; BEGIN CLRSCR; WRITE('ͻ'); WRITE(' Vier gewinnt von Dominik Wagenfhr (C) 1998 '); WRITE('͹'); WRITE(' '); WRITE(' '); WRITE(' 1 2 3 4 5 6 7 '); WRITE(' ͻ ͹'); WRITE(' '); WRITE(' ĺ '); WRITE(' '); WRITE(' ĺ '); WRITE(' ͹'); WRITE(' ĺ '); WRITE(' '); WRITE(' ĺ '); WRITE(' '); WRITE(' ĺ '); WRITE(' ͹'); WRITE(' ͼ '); WRITE(' '); WRITE(' '); WRITE(' '); WRITE(' '); WRITE('ͼ'); END; { of Titelscreen2 } { ------------------------ Computerberechnung --------------------------- } PROCEDURE SetComp1; { of Vierersetzen & Viererblocken } BEGIN IF spalte[dx] <> 0 THEN IF pruef3 < 45 THEN BEGIN x := 9; feldgesetzt := TRUE; END ELSE FOR l := 1 TO 7 DO IF (dx = l) AND (hilfsspalte[l] < 2) THEN BEGIN pruef3 := pruef3 - 10; x := 9; feldgesetzt := TRUE; END; END; PROCEDURE SetComp2; { of Rest } BEGIN IF (sperre[dx] = 0) AND (spalte[dx] <> 0) THEN IF pruef3 < 45 THEN BEGIN x := 9; feldgesetzt := TRUE; END ELSE FOR l := 1 TO 7 DO IF (dx = l) AND (hilfsspalte[l] = 0) THEN BEGIN pruef3 := pruef3 - 10; x := 9; feldgesetzt := TRUE; END; END; PROCEDURE Spalten_sperren1; BEGIN FOR y := 5 DOWNTO 1 DO BEGIN x:= 0; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] =1) AND (feld[y, x + 3] = 1) THEN sperre[x] := 1; IF (x < 8) AND pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] =1) AND (feld[y, x + 3] = 1) THEN sperre[x + 1] := 1; IF (x < 8) AND pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] =0) AND (feld[y, x + 3] = 1) THEN sperre[x + 2] := 1; IF (x < 8) AND pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] =1) AND (feld[y, x + 3] = 0) THEN sperre[x + 3] := 1; IF (y = 5) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 1; IF (x < 8) AND pruef1 THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) AND (feld[y + 2, x + 1] <> 0) THEN sperre[x + 1] := 1; IF (x < 8) AND pruef1 THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) AND (feld[y + 2, x + 2] <> 0) THEN sperre[x + 2] := 1; IF (x < 8) AND pruef1 THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) AND (feld[y + 2, x + 3] <> 0) THEN sperre[x + 3] := 1; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN x := 0; REPEAT INC(x); pruef1 := TRUE; IF pruef1 THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) THEN sperre[x + 1] := 1; IF pruef1 THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 2] <> 0) THEN sperre[x + 2] := 1; IF pruef1 THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 3] <> 0) THEN sperre[x + 3] := 1; IF (y = 6) THEN pruef1 := FALSE; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) THEN sperre[x] := 1; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y + 1, x + 1] <> 0) THEN sperre[x + 1] := 1; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 2] <> 0) THEN sperre[x + 2] := 1; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 3] <> 0) THEN sperre[x + 3] := 1; IF (y = 5) THEN pruef1 := FALSE; IF pruef1 THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 1; IF pruef1 THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y + 1, x + 1] <> 0) THEN sperre[x + 1] := 1; IF pruef1 THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 2] <> 0) THEN sperre[x + 2] := 1; IF pruef1 THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 3] <> 0) THEN sperre[x + 3] := 1; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN x := 0; REPEAT INC(x); pruef1 := TRUE; IF pruef1 THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 1; IF pruef1 THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 1] <> 0) THEN sperre[x + 1] := 1; IF pruef1 THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) THEN sperre[x + 2] := 1; IF (y = 3) THEN pruef1 := FALSE; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 1; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 1] <> 0) THEN sperre[x + 1] := 1; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 4, x + 2] <> 0) THEN sperre[x + 2] := 1; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) THEN sperre[x + 3] := 1; IF (y = 2) THEN pruef1 := FALSE; IF pruef1 THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 1; IF pruef1 THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 1] <> 0) THEN sperre[x + 1] := 1; IF pruef1 THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 4, x + 2] <> 0) THEN sperre[x + 2] := 1; IF pruef1 THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 5, x + 3] <> 0) THEN sperre[x + 3] := 1; UNTIL x > 3; END; { of FOR } END; { of Spalten sperren 1 } PROCEDURE Spalten_sperren2; BEGIN FOR y := 5 DOWNTO 1 DO BEGIN x:= 0; REPEAT INC(x); pruef1 := TRUE; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] =2) AND (feld[y, x + 3] = 2) THEN sperre[x] := 2; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] =2) AND (feld[y, x + 3] = 2) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] =0) AND (feld[y, x + 3] = 2) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] =2) AND (feld[y, x + 3] = 0) THEN sperre[x + 3] := 2; IF (y = 5) THEN pruef1 := FALSE; IF pruef1 THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) AND (feld[y + 2, x + 1] <> 0) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) AND (feld[y + 2, x + 2] <> 0) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) AND (feld[y + 2, x + 3] <> 0) THEN sperre[x + 3] := 2; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN x := 0; REPEAT INC(x); pruef1 := TRUE; IF pruef1 THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 2] <> 0) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 3] <> 0) THEN sperre[x + 3] := 2; IF (y = 6) THEN pruef1 := FALSE; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) THEN sperre[x] := 2; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y + 1, x + 1] <> 0) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 2] <> 0) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (y = 5) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 3] <> 0) THEN sperre[x + 2] := 2; IF (y = 5) THEN pruef1 := FALSE; IF pruef1 THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y + 1, x + 1] <> 0) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 2] <> 0) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 3] <> 0) THEN sperre[x + 3] := 2; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN x := 0; REPEAT INC(x); pruef1 := TRUE; IF pruef1 THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 2; IF pruef1 THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 1] <> 0) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) THEN sperre[x + 2] := 2; IF (y = 3) THEN pruef1 := FALSE; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 2; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 1] <> 0) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 4, x + 2] <> 0) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (y = 2) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) THEN sperre[x + 2] := 2; IF (y = 2) THEN pruef1 := FALSE; IF pruef1 THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x] <> 0) THEN sperre[x] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 1] <> 0) THEN sperre[x + 1] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 4, x + 2] <> 0) THEN sperre[x + 2] := 2; IF pruef1 THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 5, x + 3] <> 0) THEN sperre[x + 3] := 2; UNTIL x > 3; END; { of FOR } END; { of Spalten sperren 2 } PROCEDURE Computerberechnung1; BEGIN { of Vierer suchen } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) THEN IF (x <> 1) AND (x <> 5) AND (feld[y, 4] <> 2) THEN x := 8; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp1; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x + 1] <> 0) THEN BEGIN dy := y; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x + 2] <> 0) THEN BEGIN dy := y; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp1; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp1; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp1; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp1; END; IF (y = 3) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp1; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); IF (x < 8) OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x] = 2) AND (feld[y - 2, x] = 2) AND (feld[y - 3, x] = 0) THEN BEGIN dy := y - 3; dx := x; SetComp1; END; UNTIL x > 6; END; { of FOR } END; { of Vierer suchen } PROCEDURE Computerberechnung2; BEGIN { of Vierer blocken } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp1; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x + 1] <> 0) THEN BEGIN dy := y; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x + 2] <> 0) THEN BEGIN dy := y; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp1; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp1; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp1; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp1; END; IF (y = 3) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp1; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp1; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); IF (x < 8) OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x] = 1) AND (feld[y - 2, x] = 1) AND (feld[y - 3, x] = 0) THEN BEGIN dy := y - 3; dx := x; SetComp1; END; UNTIL x > 6; END; { of FOR } END; { of Vierer blocken } PROCEDURE Computerberechnung3; BEGIN { of Steine erweitern1 } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x = 1) THEN IF (feld[y, x] <> 2) AND (feld[y, x + 1] <> 2) AND (feld[y, x + 4] <> 2) AND (feld[y, x + 5] <> 2) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x + 2] <> 0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 1] <> 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 3) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } END; { of Steine erweitern1 } PROCEDURE Computerberechnung4; BEGIN { of Steine erweitern2 } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 2] <> 0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x + 1] <> 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 2] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 3) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); IF (x < 8) OR (pruef3 > 45) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x] = 2) AND (feld[y - 2, x] = 0) THEN BEGIN dy := y - 2; dx := x; SetComp2; END; UNTIL x > 6; END; { of FOR } END; { of Steine erweitern2 } PROCEDURE Computerberechnung5; BEGIN { of Steine unterbrechen1 } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x = 1) THEN IF (feld[y, x] <> 1) AND (feld[y, x + 1] <> 1) AND (feld[y, x + 4] <> 1) AND (feld[y, x + 5] <> 1) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x + 2] <> 0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 1] <> 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 3) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } END; { of Steine unterbrechen1 } PROCEDURE Computerberechnung6; BEGIN { of Steine unterbrechen2 } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x + 1] <> 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 2] <> 0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 0) AND (feld[y, x + 3] = 0) AND (feld[y + 1, x + 3] <> 0) THEN BEGIN dy := y; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 1) AND (feld[y, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 2] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 6) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y - 2, x + 2] = 0) AND (feld[y - 3, x + 3] = 0) AND (feld[y - 2, x + 3] <> 0) THEN BEGIN dy := y - 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y - 1, x + 1] = 0) AND (feld[y - 2, x + 2] = 1) AND (feld[y - 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (y = 3) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (y = 3) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 3, x + 2] <> 0) THEN BEGIN dy := y + 2; dx := x + 2; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 2, x + 1] <> 0) THEN BEGIN dy := y + 1; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y + 2, x + 2] = 0) AND (feld[y + 3, x + 3] = 0) AND (feld[y + 4, x + 3] <> 0) THEN BEGIN dy := y + 3; dx := x + 3; SetComp2; END; IF (x < 8) AND pruef1 OR (pruef3 > 45) THEN IF (feld[y, x] = 0) AND (feld[y + 1, x + 1] = 0) AND (feld[y + 2, x + 2] = 1) AND (feld[y + 3, x + 3] = 1) AND (feld[y + 1, x] <> 0) THEN BEGIN dy := y; dx := x; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); IF (x < 8) OR (pruef3 > 45) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x] = 1) AND (feld[y - 2, x] = 0) THEN BEGIN dy := y - 2; dx := x; SetComp2; END; UNTIL x > 6; END; { of FOR } END; { of Steine unterbrechen2 } PROCEDURE Computerberechnung7; BEGIN { of Steine erweitern3 und unterbrechen3 } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (feld[y, x] <> 2) OR (feld[y, x + 3] <> 2) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (y = 6) THEN IF (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 0) AND (feld[y + 1, x + 1] <>0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 THEN IF (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 0) AND (feld[y + 1, x + 2] <>0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (feld[y + 3, x] <> 2) OR (feld[y, x + 3] <> 2) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y + 2, x + 1] = 0) AND (feld[y + 1, x + 2] = 0) AND (feld[y + 3, x + 1] <> 0) THEN BEGIN dy := y + 2; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 THEN IF (feld[y + 2, x + 1] = 0) AND (feld[y + 1, x + 2] = 0) AND (feld[y + 2, x + 2] <> 0) THEN BEGIN dy := y + 1; dx := x + 2; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (feld[y - 3, x] <> 2) OR (feld[y, x + 3] <> 2) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y - 2, x + 1] = 0) AND (feld[y - 1, x + 2] = 0) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx:= x + 1; SetComp2; END; IF (x < 8) AND pruef1 THEN IF (feld[y - 2, x + 1] = 0) AND (feld[y - 1, x + 2] = 0) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (feld[y, x] <> 1) OR (feld[y, x + 3] <> 1) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (y = 6) THEN IF (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (y = 6) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 0) AND (feld[y + 1, x + 1] <>0) THEN BEGIN dy := y; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 THEN IF (feld[y, x + 1] = 0) AND (feld[y, x + 2] = 0) AND (feld[y + 1, x + 2] <>0) THEN BEGIN dy := y; dx := x + 2; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 3 DOWNTO 1 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (feld[y + 3, x] <> 1) OR (feld[y, x + 3] <> 1) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y + 2, x + 1] = 0) AND (feld[y + 1, x + 2] = 0) AND (feld[y + 3, x + 1] <> 0) THEN BEGIN dy := y + 2; dx := x + 1; SetComp2; END; IF (x < 8) AND pruef1 THEN IF (feld[y + 2, x + 1] = 0) AND (feld[y + 1, x + 2] = 0) AND (feld[y + 2, x + 2] <> 0) THEN BEGIN dy := y + 1; dx := x + 2; SetComp2; END; UNTIL x > 3; END; { of FOR } FOR y := 6 DOWNTO 4 DO BEGIN IF feldgesetzt = FALSE THEN x := 0 ELSE x := 8; REPEAT INC(x); pruef1 := TRUE; IF (feld[y - 3, x] <> 1) OR (feld[y, x + 3] <> 1) THEN pruef1 := FALSE; IF (x < 8) AND pruef1 THEN IF (feld[y - 2, x + 1] = 0) AND (feld[y - 1, x + 2] = 0) AND (feld[y, x + 1] <> 0) THEN BEGIN dy := y - 1; dx:= x + 1; SetComp2; END; IF (x < 8) AND pruef1 THEN IF (feld[y - 2, x + 1] = 0) AND (feld[y - 1, x + 2] = 0) AND (feld[y - 1, x + 2] <> 0) THEN BEGIN dy := y - 2; dx := x + 2; SetComp2; END; UNTIL x > 3; END; { of FOR } END; { of Steine erweitern3 oder unterbrechen3 } PROCEDURE Taktisch; BEGIN IF (x < 8) THEN IF feld[6, 4] = 0 THEN BEGIN dy := 6; dx := 4; SetComp2; END; RANDOMIZE; REPEAT BEGIN l := 0; FOR k := 1 TO 7 DO IF spalte[k] = 0 THEN l := l + 1; END; zfl := random(7) + 1; IF (x < 8) THEN IF spalte[zfl] > 0 THEN IF sperre[zfl] = 0 THEN BEGIN dx := zfl; dy := spalte[dx]; x := 9; END; IF (x < 8) THEN IF l + sperren1 + sperren2 > 6 THEN IF sperre[zfl] = 2 THEN BEGIN dx := zfl; dy := spalte[dx]; x := 9; END; IF (x < 8) THEN IF l + sperren1 > 6 THEN IF sperre[zfl] = 1 THEN BEGIN dx := zfl; dy := spalte[dx]; x := 9; END; UNTIL x > 7; END; { of Taktisch } PROCEDURE Computer_setzen; BEGIN gesamtsteine := gesamtsteine + 1; computersteine := computersteine + 1; GOTOXY (dx * 4 + 4, spalte[dx] * 2 + 6); TEXTCOLOR (lightblue); WRITE ('O'); TEXTCOLOR (black); feld[dy, dx] := 2; spalte[dx] := spalte[dx] - 1; END; { of Computer_setzen } PROCEDURE Vierer_Compi; BEGIN FOR y := 6 DOWNTO 1 DO BEGIN x := 0; REPEAT INC(x); IF feld[y, 4] <> 2 THEN x := 8; IF (x < 8) THEN IF (feld[y, x] = 2) AND (feld[y, x + 1] = 2) AND (feld[y, x + 2] = 2) AND (feld[y, x + 3] = 2) THEN gewinner := 2; UNTIL x > 3; END; { of FOR } FOR x := 1 TO 7 DO BEGIN y := 7; REPEAT y := y - 1; IF feld[3, x] <> 2 THEN y := 3; IF feld[y - 3, x] <> 2 THEN y := 3; IF (y > 3) THEN IF (feld[y, x] = 2) AND (feld[y - 1, x] = 2) AND (feld[y - 2, x] = 2) AND (feld[y - 3, x] = 2) THEN gewinner := 2; UNTIL y < 5; END; { of FOR } FOR y := 6 DOWNTO 4 DO FOR x := 1 TO 4 DO IF (feld[y, x] = 2) AND (feld[y - 1, x + 1] = 2) AND (feld[y - 2, x + 2] = 2) AND (feld[y - 3, x + 3] = 2) THEN gewinner := 2; FOR y := 3 DOWNTO 1 DO FOR x := 1 TO 4 DO IF (feld[y, x] = 2) AND (feld[y + 1, x + 1] = 2) AND (feld[y + 2, x + 2] = 2) AND (feld[y + 3, x + 3] = 2) THEN gewinner := 2; END; { of Vierer_Compi } PROCEDURE Sperren; BEGIN FOR k := 1 TO 7 DO sperre[k] := 0; sperren1 := 0; sperren2 := 0; IF spielersteine[3] > 2 THEN Spalten_sperren1; IF computersteine > 2 THEN Spalten_sperren2; FOR k := 1 TO 7 DO BEGIN IF sperre[k] = 1 THEN sperren1 := sperren1 + 1; IF sperre[k] = 2 THEN sperren2 := sperren2 + 1; END; { of FOR } END; { of Sperren } PROCEDURE Computer; BEGIN { of Computerberechnung } Sperren; x := 0; pruef3 := 0; feldgesetzt := FALSE; IF (computersteine > 2) THEN Computerberechnung1; IF (spielersteine[3] > 2) AND (feldgesetzt = FALSE) THEN Computerberechnung2; IF feldgesetzt = FALSE THEN Computerberechnung3; IF feldgesetzt = FALSE THEN Computerberechnung4; IF feldgesetzt = FALSE THEN Computerberechnung5; IF feldgesetzt = FALSE THEN Computerberechnung6; IF feldgesetzt = FALSE THEN Computerberechnung7; IF feldgesetzt = FALSE THEN Taktisch; Computer_setzen; IF computersteine > 3 THEN Vierer_Compi; END; { of Computerberechnung } PROCEDURE Hilfe; BEGIN Sperren; FOR x := 1 TO 7 DO hilfsspalte[x] := 0; feldgesetzt := FALSE; x := 0; dx := 0; REPEAT pruef3 := 46; IF spielersteine[3] > 2 THEN Computerberechnung2; IF pruef3 = 36 THEN IF dx <> 0 THEN hilfsspalte[dx] := 3; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 46; REPEAT pruef3 := 47; IF computersteine > 2 THEN Computerberechnung1; IF pruef3 = 37 THEN IF dx <> 0 THEN hilfsspalte[dx] := 2; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 47; REPEAT pruef3 := 48; Computerberechnung5; IF pruef3 = 38 THEN IF dx <> 0 THEN hilfsspalte[dx] := 1; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 48; REPEAT pruef3 := 48; Computerberechnung6; IF pruef3 = 38 THEN IF dx <> 0 THEN hilfsspalte[dx] := 1; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 48; REPEAT pruef3 := 48; Computerberechnung7; IF pruef3 = 38 THEN IF dx <> 0 THEN hilfsspalte[dx] := 1; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 48; REPEAT pruef3 := 48; Computerberechnung3; IF pruef3 = 38 THEN IF dx <> 0 THEN hilfsspalte[dx] := 1; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 48; REPEAT pruef3 := 48; Computerberechnung4; IF pruef3 = 38 THEN IF dx <> 0 THEN hilfsspalte[dx] := 1; feldgesetzt := FALSE; x := 0; dx := 0; UNTIL pruef3 = 48; hilfsspalten1 := 0; hilfsspalten2 := 0; hilfsspalten3 := 0; FOR x := 1 TO 7 DO BEGIN IF hilfsspalte[x] = 1 THEN INC (hilfsspalten1); IF hilfsspalte[x] = 2 THEN INC (hilfsspalten2); IF hilfsspalte[x] = 3 THEN INC (hilfsspalten3); END; { of FOR } hilfsspalten := hilfsspalten1 + hilfsspalten2 + hilfsspalten3; pruef3 := 0; IF hilfsspalten3 <> 0 THEN BEGIN GOTOXY (48, 22); WRITE ('Ich empfehle die Spalte '); k := 0; REPEAT INC(k); IF hilfsspalte[k] = 3 THEN BEGIN WRITE (k); k := 7; END; UNTIL k = 7; END; IF (hilfsspalten3 = 0) AND (hilfsspalten2 <> 0) THEN BEGIN pruef3 := 0; GOTOXY (48,22); WRITE ('Ich empfehle die Spalte '); k := 0; REPEAT INC (k); IF hilfsspalte[k] = 2 THEN BEGIN INC (pruef3); IF pruef3 = 1 THEN WRITE (k) ELSE WRITE (', ',k); END; UNTIL k = 7; END; IF (hilfsspalten3 = 0) AND (hilfsspalten2 = 0) AND (hilfsspalten1 <> 0) THEN BEGIN pruef3 := 0; GOTOXY (41,22); WRITE ('Ich empfehle die Spalte/n '); FOR k := 1 TO 7 DO BEGIN IF hilfsspalte[k] = 1 THEN BEGIN INC (pruef3); IF pruef3 = 1 THEN WRITE (k) ELSE WRITE (', ',k); END; END; { of FOR } IF (sperren1 <> 0) OR (sperren2 <> 0) THEN BEGIN pruef3 := 0; GOTOXY (41,23); WRITE ('Nicht setzen in Spalte/n '); FOR k := 1 TO 7 DO IF (sperre[k] <> 0) THEN FOR x := 1 TO 7 DO IF (k = x) AND (hilfsspalte[x] = 0) THEN BEGIN INC(pruef3); IF pruef3 = 1 THEN WRITE (k) ELSE WRITE (', ',k); END; END; END; IF pruef3 = 0 THEN BEGIN GOTOXY (41,23); WRITE (' '); END; IF hilfsspalten = 0 THEN BEGIN x := 0; IF (sperren1 <> 0) OR (sperren2 <> 0) THEN BEGIN GOTOXY (41,22); WRITE ('Nicht setzen in Spalte/n '); FOR k := 1 TO 7 DO IF sperre[k] <> 0 THEN BEGIN INC(x); IF x = 1 THEN WRITE (k) ELSE WRITE (', ',k); END; END; IF x = 0 THEN BEGIN GOTOXY (41, 22); WRITE (' Es gibt keine besondere Stelle !'); END; END; END; PROCEDURE Spielroutine1; BEGIN IF gesamtsteine < 42 THEN BEGIN { of Abfrage & Setzen } gewinner := 0; IF spieler = TRUE THEN spieler := FALSE ELSE spieler := TRUE; IF spieler = TRUE THEN BEGIN { of Setzen } GOTOXY (72, 14); WRITE (gesamtsteine:2); GOTOXY (70, 15); WRITE (': ', spielersteine[3]:2); GOTOXY (72, 16); WRITE (computersteine:2); GOTOXY (9, 22); WRITE ('Wo wollen Sie setzen ?'); REPEAT pruef1 := TRUE; GOTOXY (xcor, 20); WRITE ('^'); GOTOXY (80, 24); taste := READKEY; GOTOXY (41, 22); WRITE (' '); GOTOXY (41, 23); WRITE (' '); pruef1 := TRUE; CASE taste OF 'h' : Hilfe; 'H' : Hilfe; #0 : BEGIN { of Sondertasten } taste := READKEY; GOTOXY (xcor, 20); WRITE (' '); CASE taste OF #75 : IF xcor > 8 THEN xcor := xcor - 4; #77 : IF xcor < 32 THEN xcor := xcor + 4; END; { of CASE } END; { of Sondertasten } #13 : BEGIN { of Return } stelle := ROUND((xcor - 4) * 0.25); IF (stelle < 1) OR (stelle > 7) THEN pruef1 := FALSE; IF spalte[stelle] = 0 THEN pruef1 := FALSE; END; { of Return } END; { of CASE } UNTIL (taste = #13) AND pruef1; GOTOXY (stelle * 4 + 4, spalte[stelle] * 2 + 6); feld[spalte[stelle], stelle] := 1; spalte[stelle] := spalte[stelle] - 1; TEXTCOLOR (red); WRITE ('X'); TEXTCOLOR (black); gesamtsteine := gesamtsteine + 1; spielersteine[3] := spielersteine[3] + 1; IF spielersteine[3] > 3 THEN BEGIN { of Vierer Spieler } FOR y := 6 DOWNTO 1 DO BEGIN x := 0; REPEAT INC(x); IF feld[y, 4] <> 1 THEN x := 8; IF (x < 8) THEN IF (feld[y, x] = 1) AND (feld[y, x + 1] = 1) AND (feld[y, x + 2] = 1) AND (feld[y,x+3]=1) THEN gewinner := 1; UNTIL x > 3; END; { of FOR } FOR x := 1 TO 7 DO BEGIN y := 7; REPEAT y := y - 1; IF feld[3, x] <> 1 THEN y := 3; IF feld[y - 3, x] <> 1 THEN y := 3; IF (y > 3) THEN IF (feld[y, x] = 1) AND (feld[y - 1, x] = 1) AND (feld[y - 2, x] = 1) AND (feld[y - 3, x] = 1) THEN gewinner := 1; UNTIL y < 5; END; { of FOR } FOR y := 6 DOWNTO 4 DO FOR x := 1 TO 4 DO IF (feld[y, x] = 1) AND (feld[y - 1, x + 1] = 1) AND (feld[y-2,x+2]=1) AND (feld[y - 3, x + 3] = 1) THEN gewinner := 1; FOR y := 3 DOWNTO 1 DO FOR x := 1 TO 4 DO IF (feld[y, x] = 1) AND (feld[y + 1, x + 1] = 1) AND (feld[y+2,x+2]=1) AND (feld[y + 3, x + 3] = 1) THEN gewinner := 1; END; { of Vierer Spieler } END { of Setzen } ELSE Computer; END { of Abfrage & Setzen } ELSE gewinner := 3; END; { of Spielroutine1 } PROCEDURE Anfang1; BEGIN spielersteine[3] := 0; computersteine := 0; gesamtsteine := 0; spielnummer := spielnummer + 1; FOR y := 1 TO 6 DO FOR x := 1 TO 7 DO feld[y, x] := 0; FOR k := 1 TO 7 DO spalte[k] := 6; FOR k := 1 TO 7 DO sperre[k] := 0; Titelscreen2; GOTOXY (52, 5); WRITE ('Spiel ',spielnummer,' von ',spielanzahl); GOTOXY (52-ROUND(length(spielername[3])/2), 9); WRITE (spielername[3]); GOTOXY (63, 9); WRITE ('Computer'); GOTOXY (50, 10); WRITE (spielerpunkte[3]:2); GOTOXY (59, 10); WRITE (':'); GOTOXY (66, 10); WRITE (computerpunkte:2); GOTOXY (45, 14); WRITE ('Steine auf dem Spielfeld : '); GOTOXY (45, 15); WRITE ('Steine von ',spielername[3]); GOTOXY (45, 16); WRITE ('Steine des Computers : '); GOTOXY (52, 20); WRITE (#39,'H',#39,' fr Hilfe'); REPEAT Spielroutine1 UNTIL gewinner > 0; GOTOXY (52, 20); WRITE (' '); GOTOXY (41, 22); WRITE (' '); GOTOXY (41, 23); WRITE (' '); IF gewinner = 3 THEN BEGIN { of Keiner ist Gewinner } GOTOXY (43, 20); WRITE ('Es ist unentschieden ausgegangen !'); END; { of Keiner ist Gewinner } IF gewinner = 1 THEN BEGIN { of Spieler ist Gewinner } GOTOXY (50, 20); WRITE ('Sie haben gewonnen !'); spielerpunkte[3] := spielerpunkte[3] + 22 - spielersteine[3]; spieler := TRUE; END; { of Spieler ist Gewinner } IF gewinner = 2 THEN BEGIN { of Computer ist Gewinner } GOTOXY (50, 20); WRITE ('Ich habe gewonnen !'); computerpunkte := computerpunkte + 22 - computersteine; spieler := FALSE; END; { of Computer ist Gewinner } taste := READKEY; END; { of Anfang1 } PROCEDURE Ende1; BEGIN IF spielerpunkte[3] > computerpunkte THEN BEGIN { of Spieler ist Gesamtgewinner } GOTOXY (41, 20); WRITE ('Sie haben das gesamte Spiel gewonnen !'); GOTOXY (52, 22); WRITE ('Und zwar ', spielerpunkte[3], ' : ', computerpunkte,'.'); END; { of Spieler ist Gesamtgewinner } IF computerpunkte > spielerpunkte[3] THEN BEGIN { of Computer ist Gesamtgewinner } GOTOXY (41, 20); WRITE ('Ich habe das gesamte Spiel gewonnen !'); GOTOXY (52, 22); WRITE ('Und zwar ', computerpunkte, ' : ', spielerpunkte[3], '.'); END; { of Computer ist Gesamtgewinner } IF computerpunkte = spielerpunkte[3] THEN BEGIN { of Keiner ist Gesamtgewinner } GOTOXY (43, 20); WRITE ('Das Spiel ging unentschieden aus !'); GOTOXY (52, 22); WRITE ('Und zwar ', spielerpunkte[3], ' : ', computerpunkte,'.'); END; { of Keiner ist Gesamtgewinner } taste := READKEY; END; { of Ende1 } PROCEDURE Spielroutine2; BEGIN IF gesamtsteine < 42 THEN BEGIN { of Abfrage & Setzen } GOTOXY (72, 14); WRITE (gesamtsteine:2); GOTOXY (70, 15); WRITE (': ', spielersteine[1]:2); GOTOXY (70, 16); WRITE (': ', spielersteine[2]:2); gewinner := 0; IF spieler = TRUE THEN spieler := FALSE ELSE spieler := TRUE; IF spieler = TRUE THEN k := 1 ELSE k := 2; BEGIN { of Setzen } GOTOXY (2, 22); WRITE (' '); GOTOXY (9-ROUND(length(spielername[k])/2), 22); WRITE ('Wo wollen Sie setzen ', spielername[k],' ?'); REPEAT pruef1 := TRUE; GOTOXY (xcor, 20); WRITE ('^'); taste := READKEY; CASE taste OF #0 : BEGIN { of Sondertasten } taste := READKEY; GOTOXY (xcor, 20); WRITE (' '); CASE taste OF #75 : IF xcor > 8 THEN xcor := xcor - 4; #77 : IF xcor < 32 THEN xcor := xcor + 4; END; { of CASE } END; { of Sondertasten } #13 : BEGIN { of Return } stelle := ROUND((xcor - 4) * 0.25); IF (stelle < 1) OR (stelle > 7) THEN pruef1 := FALSE; IF spalte[stelle] = 0 THEN pruef1 := FALSE; END; { of Return } END; { of CASE } UNTIL (taste = #13) AND pruef1 ; GOTOXY (stelle * 4 + 4, spalte[stelle] * 2 + 6); feld[spalte[stelle], stelle] := k; spalte[stelle] := spalte[stelle] - 1; IF spieler = TRUE THEN BEGIN TEXTCOLOR (red); WRITE ('X'); TEXTCOLOR (black); END ELSE BEGIN TEXTCOLOR (lightblue); WRITE ('O'); TEXTCOLOR (black); END; gesamtsteine := gesamtsteine + 1; spielersteine[k] := spielersteine[k] + 1; IF spielersteine[k] > 3 THEN BEGIN { of Vierer Spieler } FOR y := 6 DOWNTO 1 DO BEGIN x := 0; REPEAT INC(x); IF feld[y, 4] <> k THEN x := 7 + k; IF (x < 8) THEN IF (feld[y, x] = k) AND (feld[y, x + 1] = k) AND (feld[y, x + 2] = k) AND (feld[y,x+3]=k) THEN gewinner := k; UNTIL x > 3; END; { of FOR } FOR x := 1 TO 7 DO BEGIN y := 7; REPEAT y := y - 1; IF feld[3, x] <> k THEN y := 3; IF feld[y - 3, x] <> k THEN y := 3; IF (y > 3) THEN IF (feld[y, x] = k) AND (feld[y - 1, x] = k) AND (feld[y - 2, x] = k) AND (feld[y - 3, x] = k) THEN gewinner := k; UNTIL y < 5; END; { of FOR } FOR y := 6 DOWNTO 4 DO FOR x := 1 TO 4 DO IF (feld[y, x] = k) AND (feld[y - 1, x + 1] = k) AND (feld[y-2,x+2]=k) AND (feld[y - 3, x + 3] = k) THEN gewinner := k; FOR y := 3 DOWNTO 1 DO FOR x := 1 TO 4 DO IF (feld[y, x] = k) AND (feld[y + 1, x + 1] = k) AND (feld[y+2,x+2]=k) AND (feld[y + 3, x + 3] = k) THEN gewinner := k; END; { of Vierer Spieler } END; { of Setzen } END { of Abfrage & Setzen } ELSE gewinner := 3; END; { of Spielroutine2 } PROCEDURE Anfang2; BEGIN spielersteine[1] := 0; spielersteine[2] := 0; gesamtsteine := 0; spielnummer := spielnummer + 1; FOR y := 1 TO 6 DO FOR x := 1 TO 7 DO feld[y, x] := 0; FOR k := 1 TO 7 DO spalte[k] := 6; Titelscreen2; GOTOXY (52, 5); WRITE ('Spiel ',spielnummer,' von ',spielanzahl); GOTOXY (52-ROUND(length(spielername[1])/2), 9); WRITE (spielername[1]); GOTOXY (67-ROUND(length(spielername[2])/2), 9); WRITE (spielername[2]); GOTOXY (50, 10); WRITE (spielerpunkte[1]:2); GOTOXY (59, 10); WRITE (':'); GOTOXY (66, 10); WRITE (spielerpunkte[2]:2); GOTOXY (45, 14); WRITE ('Steine auf dem Spielfeld : 0 '); GOTOXY (45, 15); WRITE ('Steine von ', spielername[1]); GOTOXY (45, 16); WRITE ('Steine von ', spielername[2]); REPEAT Spielroutine2 UNTIL gewinner > 0; IF gewinner = 3 THEN BEGIN { of Keiner ist Gewinner } GOTOXY (43, 20); WRITE ('Es ist unentschieden ausgegangen !'); END { of Keiner ist Gewinner } ELSE BEGIN { of ein Spieler ist Gewinner } GOTOXY (53-ROUND(length(spielername[gewinner])/2), 20); WRITE (spielername[gewinner],' hat gewonnen !'); spielerpunkte[gewinner] := spielerpunkte[gewinner] + (22 - spielersteine[gewinner]); IF spieler = TRUE THEN spieler := FALSE ELSE spieler := TRUE; END; { of ein Spieler ist Gewinner } taste := READKEY; END; { of Anfang2 } PROCEDURE Ende2; BEGIN IF spielerpunkte[1] > spielerpunkte[2] THEN BEGIN { of Spieler ist Gesamtgewinner } GOTOXY (48-ROUND(length(spielername[1])/2), 20); WRITE (spielername[1],' hat insgesamt gewonnen !'); GOTOXY (52, 22); WRITE ('Und zwar ', spielerpunkte[1], ' : ', spielerpunkte[2],'.'); END; { of Spieler ist Gesamtgewinner } IF spielerpunkte[2] > spielerpunkte[1] THEN BEGIN { of Computer ist Gesamtgewinner } GOTOXY (48-ROUND(length(spielername[2])/2), 20); WRITE (spielername[2],' hat insgesamt gewonnen ! '); GOTOXY (52, 22); WRITE ('Und zwar ', spielerpunkte[2], ' : ', spielerpunkte[1], '.'); END; { of Computer ist Gesamtgewinner } IF spielerpunkte[2] = spielerpunkte[1] THEN BEGIN { of Keiner ist Gesamtgewinner } GOTOXY (43, 20); WRITE ('Das Spiel ging unentschieden aus ! '); GOTOXY (52, 22); WRITE ('Und zwar ', spielerpunkte[1], ' : ', spielerpunkte[2],'.'); END; { of Keiner ist Gesamtgewinner } taste := READKEY; END; { of Ende2 } { ----------------------------------------------------------------------- } BEGIN { of Hauptmenue } spielername[1] := 'Bobo'; spielername[2] := 'Bibi'; spielername[3] := 'Bobo'; spieler := FALSE; spielanzahl := 1; spieleranzahl := 1; ycor := 7; beginner := 'Spieler'; TEXTCOLOR (black); TEXTBACKGROUND (lightgray); Titelscreen1; REPEAT FOR k := 1 TO 3 DO BEGIN spielerpunkte[k] := 0; END; { of FOR } computerpunkte := 0; xcor := 8; spielnummer := 0; gewinner := 5; x := 0; y := 0; GOTOXY (37, 7); WRITE (' '); GOTOXY (37, 7); WRITE (spielanzahl); GOTOXY (37, 9); WRITE (spieleranzahl); GOTOXY (37, 11); WRITE (' '); GOTOXY (37, 13); WRITE (' '); IF spieleranzahl = 1 THEN BEGIN GOTOXY (30, 11); WRITE (' '); GOTOXY (37, 11); WRITE (spielername[3]); GOTOXY (37, 13); WRITE ('der ', beginner); END; IF spieleranzahl = 2 THEN BEGIN GOTOXY (30, 11); WRITE ('n'); GOTOXY (37, 11); WRITE (spielername[1],' und ', spielername[2]); GOTOXY (37, 13); WRITE ('Spieler ',beginner); END; GOTOXY (14, ycor); WRITE (''); GOTOXY (80, 24); taste := READKEY; TEXTCOLOR (black); CASE taste OF #0 : BEGIN { of Sondertasten } taste := READKEY; IF taste = #80 THEN BEGIN { of hoch } GOTOXY (14, ycor); WRITE (' '); IF ycor < 19 THEN ycor := ycor + 2; END; { of hoch } IF taste = #72 THEN BEGIN { of runter } GOTOXY (14, ycor); WRITE (' '); IF ycor > 7 THEN ycor := ycor - 2; END; { of runter } IF taste = #75 THEN BEGIN { of links } IF (ycor = 7) AND (spielanzahl > 1) THEN spielanzahl := spielanzahl - 1; IF ycor = 9 THEN IF spieleranzahl = 2 THEN BEGIN spieleranzahl := 1; IF beginner = '1' THEN beginner := 'Spieler' ELSE beginner := 'Computer'; END; IF ycor = 13 THEN BEGIN IF spieleranzahl = 1 THEN beginner := 'Spieler'; IF spieleranzahl = 2 THEN beginner := '1'; spieler := FALSE; END; END; { of links } IF taste = #77 THEN BEGIN { of rechts } IF ycor = 7 THEN spielanzahl := spielanzahl + 1; IF ycor = 9 THEN IF spieleranzahl = 1 THEN BEGIN spieleranzahl := 2; IF beginner = 'Spieler' THEN beginner := '1' ELSE beginner := '2' END; IF ycor = 13 THEN BEGIN IF spieleranzahl = 1 THEN beginner := 'Computer'; IF spieleranzahl = 2 THEN beginner := '2'; spieler := TRUE; END; END; { of rechts } END; { of Sondertasten } #13 : BEGIN { of Return } IF ycor = 11 THEN BEGIN { of Name ndern } IF spieleranzahl = 1 THEN BEGIN { of Ein Spieler Name ndern } GOTOXY (25, 21); WRITE('ͻ'); GOTOXY (25, 22); WRITE(' Neuer Name : '); GOTOXY (55, 22); WRITE (''); GOTOXY (25, 23); WRITE('ͼ'); GOTOXY (41, 22); READLN (dummy1); IF dummy1 <> '' THEN spielername[3] := dummy1; END; { of Ein Spieler Name ndern } IF spieleranzahl = 2 THEN BEGIN { of Zwei Spieler Name ndern } FOR k := 1 TO 2 DO BEGIN GOTOXY (48, 22); WRITE (' '); GOTOXY (18, 21); WRITE ('ͻ'); GOTOXY (18, 22); WRITE (' Neuer Name von Spieler ',k,' :'); GOTOXY (62, 22); WRITE (''); GOTOXY (18, 23); WRITE ('ͼ'); GOTOXY (48, 22); READLN (dummy1); IF dummy1 <> '' THEN spielername[k] := dummy1; END; { of FOR } END; { of Zwei Spieler Name ndern } GOTOXY (18, 21); WRITE (' '); GOTOXY (18, 22); WRITE (' '); GOTOXY (18, 23); WRITE (' '); END; { of Name ndern } IF ycor = 15 THEN BEGIN { of Spiel starten } IF spieleranzahl = 1 THEN BEGIN { of Ein Spieler-Spiel } REPEAT Anfang1; UNTIL spielnummer = spielanzahl; Ende1; END; { of Ein Spieler-Spiel } IF spieleranzahl = 2 THEN BEGIN { of Zwei Spieler-Spiel } REPEAT Anfang2; UNTIL spielnummer = spielanzahl; Ende2; END; { of Zwei Spieler-Spiel } Titelscreen1; END; { of Spiel starten } END; { of Return } END; { of CASE } UNTIL (taste = #13) AND (ycor = 19); END. { of Hauptprogramm }