home *** CD-ROM | disk | FTP | other *** search
- (***************************************************************************)
- (* AWARCOMP.INC *)
- (* IN DIESER INCLUDE-DATEI WIRD DER NAECHSTE COMPUTER-ZUG BERECHNET *)
- (***************************************************************************)
-
- PROCEDURE c_analyse; FORWARD;
-
- PROCEDURE m_analyse; FORWARD;
-
- PROCEDURE c_again; FORWARD;
-
- PROCEDURE m_again; FORWARD;
-
- (*-------------------------------------------------------------------------*)
- (* Test-Computerzug wird ausgefuehrt, analysiert und bewertet: *)
-
- PROCEDURE c_try (zug: INTEGER);
-
- VAR anzahl, index, summe, erg : INTEGER;
- nochmal, mehr : BOOLEAN;
-
- BEGIN
- (* Der Test-Computerzug wird ausgefuehrt *)
- stief := Succ(stief); stapel[stief] := spiel;
- IF tiefe = 1 THEN try_1 := zug;
- mehr := TRUE; nochmal := FALSE;
- anzahl := spiel[zug]; spiel[zug] := 0;
- FOR index := 1 TO anzahl DO
- BEGIN
- zug := Succ(zug);
- IF zug = 14 THEN zug := 0;
- spiel[zug] := Succ(spiel[zug])
- END;
- (* Eingetretene Spielsituation analysieren *)
- IF zug = 0 THEN nochmal := TRUE
- ELSE IF zug <> 7 THEN (* Gegenueberliegendes Feld entleeren *)
- IF spiel[zug] = 1 THEN
- BEGIN
- spiel[0] := spiel[0]+spiel[14-zug]; spiel[14-zug] := 0
- END;
- (* Spielende? *)
- summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
- IF summe = 0 THEN mehr := FALSE
- ELSE IF zahl - spiel[0] - spiel[7] - summe = 0 THEN mehr := FALSE;
- (* Organisierung der weiterfolgenden Analyse und Stellungsbewertung *)
- IF mehr THEN
- IF nochmal THEN c_again
- ELSE IF tiefe = stark THEN
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg > wert[tiefe] THEN
- BEGIN
- wert[tiefe] := erg;
- IF tiefe = 1 THEN best_1 := try_1
- END
- END
- ELSE
- BEGIN
- m_analyse;
- IF wert[Succ(tiefe)] > wert[tiefe] THEN
- BEGIN
- wert[tiefe] := wert[Succ(tiefe)];
- IF tiefe = 1 THEN best_1 := try_1
- END
- END
- ELSE
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg < 100 THEN erg := erg - 50;
- IF erg > wert[tiefe] THEN
- BEGIN
- wert[tiefe] := erg;
- IF tiefe = 1 THEN best_1 := try_1
- END
- END;
- spiel := stapel[stief]; stief := Pred(stief)
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Test-Computer-Wiederholungszug wird ausgefuehrt,analysiert und bewertet *)
-
- PROCEDURE c_2nd (zug: INTEGER);
-
- VAR anzahl, index, summe, erg : INTEGER;
- mehr : BOOLEAN;
-
- BEGIN
- (* Der Test-Computer-Wiederholungszug wird ausgefuehrt *)
- stief := Succ(stief); stapel[stief] := spiel;
- IF tiefe = 1 THEN try_2 := zug;
- mehr := TRUE; anzahl := spiel[zug]; spiel[zug] := 0;
- FOR index := 1 TO anzahl DO
- BEGIN
- zug := Succ(zug);
- IF zug = 14 THEN zug := 0;
- spiel[zug] := Succ(spiel[zug])
- END;
- (* Eingetretene Spielsituation analysieren *)
- IF zug <> 0 THEN
- IF zug <> 7 THEN (* Gegenueberliegendes Feld entleeren *)
- IF spiel[zug] = 1 THEN
- BEGIN
- spiel[0] := spiel[0]+spiel[14-zug]; spiel[14-zug] := 0
- END;
- (* Spielende? *)
- summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
- IF summe = 0 THEN mehr := FALSE
- ELSE IF zahl - spiel[0] - spiel [7] - summe = 0 THEN mehr :=FALSE;
- (* Organisierung der weiterfolgenden Analyse und Stellungsbewertung *)
- IF mehr THEN
- IF tiefe = stark THEN
- BEGIN
- erg := spiel[0]-spiel[7];
- IF erg > wert[tiefe] THEN
- BEGIN
- wert[tiefe] := erg;
- IF tiefe = 1 THEN
- BEGIN
- best_1 := try_1; best_2 := try_2
- END
- END
- END
- ELSE
- BEGIN
- m_analyse;
- IF wert[Succ(tiefe)] > wert[tiefe] THEN
- BEGIN
- wert[tiefe] := wert[Succ(tiefe)];
- IF tiefe = 1 THEN
- BEGIN
- best_1 := try_1; best_2 := try_2
- END
- END
- END
- ELSE
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg < 100 THEN erg := erg - 50;
- IF erg > wert[tiefe] THEN
- BEGIN
- wert[tiefe] := erg;
- IF tiefe = 1 THEN
- BEGIN
- best_1 := try_1; best_2 := try_2
- END
- END
- END;
- spiel := stapel[stief]; stief := Pred(stief)
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Test-Menschzug wird ausgefuehrt, analysiert und bewertet *)
-
- PROCEDURE m_try (zug: INTEGER);
-
- VAR anzahl, index, summe, erg : INTEGER;
- nochmal, mehr : BOOLEAN;
-
- BEGIN
- (* Der Test-Menschzug wird ausgefuehrt *)
- stief := Succ(stief); stapel[stief] := spiel;
- mehr := TRUE; nochmal := FALSE;
- anzahl := spiel[zug]; spiel[zug] := 0;
- FOR index := 1 TO anzahl DO
- BEGIN
- zug := Succ(zug);
- IF zug = 14 THEN zug := 0;
- spiel[zug] := Succ(spiel[zug])
- END;
- (* Eingetretene Spielsituation analysieren *)
- IF zug = 7 THEN nochmal := TRUE
- ELSE IF zug <> 0 THEN (* Gegenueberliegendes Feld entleeren *)
- IF spiel[zug] = 1 THEN
- BEGIN
- spiel[7] := spiel[7] + spiel[14-zug]; spiel[14-zug] := 0
- END;
- (* Spielende? *)
- summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
- IF summe = 0 THEN mehr := FALSE
- ELSE IF zahl - spiel[0] - spiel[7] - summe = 0 THEN mehr :=FALSE;
- (* Organisierung der weiterfolgenden Analyse und Stellungsbewertung *)
- IF mehr THEN
- IF nochmal THEN m_again
- ELSE IF tiefe = stark THEN
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg < wert[tiefe] THEN wert[tiefe] := erg;
- END
- ELSE
- BEGIN
- c_analyse;
- IF wert[Succ(tiefe)] < wert[tiefe] THEN
- wert[tiefe] := wert[Succ(tiefe)];
- END
- ELSE
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg > 100 THEN erg := erg + 50;
- IF erg < wert[tiefe] THEN wert[tiefe] := erg;
- END;
- spiel := stapel[stief]; stief := Pred(stief)
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Test-Mensch-Wiederholungszug wird ausgefuehrt, analysiert und bewertet *)
-
- PROCEDURE m_2nd (zug: INTEGER);
-
- VAR anzahl, index, summe, erg : INTEGER;
- mehr : BOOLEAN;
-
- BEGIN
- (* Der Test-Mensch-Wiederholungszug wird ausgefuehrt *)
- stief := Succ(stief); stapel[stief] := spiel;
- mehr := TRUE;
- anzahl := spiel[zug]; spiel[zug] := 0;
- FOR index := 1 TO anzahl DO
- BEGIN
- zug := Succ(zug);
- IF zug = 14 THEN zug := 0;
- spiel[zug] := Succ(spiel[zug])
- END;
- (* Eingetretene Spielsituation analysieren *)
- IF zug <> 7 THEN
- IF zug <> 0 THEN (* Gegenueberliegendes Feld entleeren *)
- IF spiel[zug] = 1 THEN
- BEGIN
- spiel[7] := spiel[7] + spiel[14-zug]; spiel[14-zug] := 0
- END;
- (* Spielende? *)
- summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
- IF summe = 0 THEN mehr := FALSE
- ELSE IF zahl - spiel[0] - spiel[7] - summe = 0 THEN mehr := FALSE;
- (* Organisierung der weiterfolgenden Analyse und Stellungsbewertung *)
- IF mehr THEN
- IF tiefe = stark THEN
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg < wert[tiefe] THEN wert[tiefe] := erg;
- END
- ELSE
- BEGIN
- c_analyse;
- IF wert[Succ(tiefe)] < wert[tiefe] THEN
- wert[tiefe] := wert[Succ(tiefe)];
- END
- ELSE
- BEGIN
- erg := spiel[0] - spiel[7];
- IF erg > 100 THEN erg := erg + 50;
- IF erg < wert[tiefe] THEN wert[tiefe] := erg;
- END;
- spiel := stapel[stief]; stief := Pred(stief)
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Legale Zuege fuer 1. Computerzug ermitteln und zur Analyse uebergeben *)
-
- PROCEDURE c_analyse;
-
- BEGIN
- tiefe := Succ(tiefe); wert[tiefe] := 0;
- IF spiel[13] <> 0 THEN c_try(13);
- IF spiel[12] <> 0 THEN c_try(12);
- IF spiel[11] <> 0 THEN c_try(11);
- IF spiel[10] <> 0 THEN c_try(10);
- IF spiel[ 9] <> 0 THEN c_try( 9);
- IF spiel[ 8] <> 0 THEN c_try( 8);
- tiefe := Pred(tiefe)
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Legale Zuege fuer 2. Computerzug ermitteln und zur Analyse uebergeben *)
-
- PROCEDURE c_again;
-
- BEGIN
- IF spiel[13] <> 0 THEN c_2nd(13);
- IF spiel[12] <> 0 THEN c_2nd(12);
- IF spiel[11] <> 0 THEN c_2nd(11);
- IF spiel[10] <> 0 THEN c_2nd(10);
- IF spiel[ 9] <> 0 THEN c_2nd( 9);
- IF spiel[ 8] <> 0 THEN c_2nd( 8);
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Legale Zuege fuer 1. Menschzug ermitteln und zur Analyse uebergeben *)
-
- PROCEDURE m_analyse;
-
- BEGIN
- tiefe := Succ(tiefe); wert[tiefe] := 200;
- IF spiel[6] <> 0 THEN c_2nd(6);
- IF spiel[5] <> 0 THEN c_2nd(5);
- IF spiel[4] <> 0 THEN c_2nd(4);
- IF spiel[3] <> 0 THEN c_2nd(3);
- IF spiel[2] <> 0 THEN c_2nd(2);
- IF spiel[1] <> 0 THEN c_2nd(1);
- tiefe := Pred(tiefe)
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Legale Zuege fuer 2. Menschzug ermitteln und zur Analyse uebergeben *)
-
- PROCEDURE m_again;
-
- BEGIN
- IF spiel[6] <> 0 THEN c_2nd(6);
- IF spiel[5] <> 0 THEN c_2nd(5);
- IF spiel[4] <> 0 THEN c_2nd(4);
- IF spiel[3] <> 0 THEN c_2nd(3);
- IF spiel[2] <> 0 THEN c_2nd(2);
- IF spiel[1] <> 0 THEN c_2nd(1);
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Ende von AWARCOMP.INC *)
-