home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 07 / awari / awarcomp.inc next >
Encoding:
Text File  |  1987-06-10  |  10.8 KB  |  318 lines

  1. (***************************************************************************)
  2. (*                           AWARCOMP.INC                                  *)
  3. (*   IN DIESER INCLUDE-DATEI WIRD DER NAECHSTE COMPUTER-ZUG BERECHNET      *)
  4. (***************************************************************************)
  5.  
  6. PROCEDURE  c_analyse;  FORWARD;
  7.  
  8. PROCEDURE  m_analyse;  FORWARD;
  9.  
  10. PROCEDURE  c_again;    FORWARD;
  11.  
  12. PROCEDURE  m_again;    FORWARD;
  13.  
  14. (*-------------------------------------------------------------------------*)
  15. (*      Test-Computerzug wird ausgefuehrt, analysiert und bewertet:        *)
  16.  
  17. PROCEDURE  c_try (zug: INTEGER);
  18.  
  19.    VAR  anzahl, index, summe, erg  : INTEGER;
  20.         nochmal, mehr              : BOOLEAN;
  21.  
  22.    BEGIN
  23.      (*   Der Test-Computerzug wird ausgefuehrt   *)
  24.      stief := Succ(stief);  stapel[stief] := spiel;
  25.      IF  tiefe = 1  THEN  try_1 := zug;
  26.      mehr := TRUE;          nochmal := FALSE;
  27.      anzahl := spiel[zug];  spiel[zug] := 0;
  28.      FOR  index := 1  TO  anzahl  DO
  29.        BEGIN
  30.          zug := Succ(zug);
  31.          IF  zug = 14  THEN  zug := 0;
  32.          spiel[zug] := Succ(spiel[zug])
  33.        END;
  34.      (*   Eingetretene Spielsituation analysieren   *)
  35.      IF  zug = 0  THEN  nochmal := TRUE
  36.      ELSE  IF  zug <> 7  THEN  (*   Gegenueberliegendes Feld entleeren   *)
  37.        IF  spiel[zug] = 1  THEN
  38.          BEGIN
  39.            spiel[0] := spiel[0]+spiel[14-zug];  spiel[14-zug] := 0
  40.          END;
  41.      (*   Spielende?   *)
  42.      summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
  43.      IF  summe = 0 THEN  mehr := FALSE
  44.      ELSE  IF  zahl - spiel[0] - spiel[7] - summe = 0  THEN  mehr := FALSE;
  45.      (*  Organisierung der weiterfolgenden Analyse und Stellungsbewertung  *)
  46.      IF  mehr THEN
  47.        IF  nochmal  THEN  c_again
  48.        ELSE  IF  tiefe = stark  THEN
  49.          BEGIN
  50.            erg := spiel[0] - spiel[7];
  51.            IF  erg > wert[tiefe] THEN
  52.              BEGIN
  53.                wert[tiefe] := erg;
  54.                IF  tiefe = 1  THEN  best_1 := try_1
  55.              END
  56.          END
  57.        ELSE
  58.          BEGIN
  59.            m_analyse;
  60.            IF  wert[Succ(tiefe)] > wert[tiefe]  THEN
  61.              BEGIN
  62.                wert[tiefe] := wert[Succ(tiefe)];
  63.                IF  tiefe = 1  THEN  best_1 := try_1
  64.              END
  65.          END
  66.      ELSE
  67.        BEGIN
  68.          erg := spiel[0] - spiel[7];
  69.          IF  erg < 100  THEN  erg := erg - 50;
  70.          IF  erg > wert[tiefe]  THEN
  71.            BEGIN
  72.              wert[tiefe] := erg;
  73.              IF  tiefe = 1  THEN  best_1 := try_1
  74.            END
  75.        END;
  76.      spiel := stapel[stief];  stief := Pred(stief)
  77.    END;
  78.  
  79. (*-------------------------------------------------------------------------*)
  80. (* Test-Computer-Wiederholungszug wird ausgefuehrt,analysiert und bewertet *)
  81.  
  82. PROCEDURE  c_2nd (zug: INTEGER);
  83.  
  84.    VAR  anzahl, index, summe, erg : INTEGER;
  85.         mehr                      : BOOLEAN;
  86.  
  87.    BEGIN
  88.      (*   Der Test-Computer-Wiederholungszug wird ausgefuehrt   *)
  89.      stief := Succ(stief);  stapel[stief] := spiel;
  90.      IF  tiefe = 1  THEN  try_2 := zug;
  91.      mehr := TRUE;  anzahl := spiel[zug];  spiel[zug] := 0;
  92.      FOR  index := 1  TO  anzahl  DO
  93.        BEGIN
  94.          zug := Succ(zug);
  95.          IF  zug = 14  THEN  zug := 0;
  96.          spiel[zug] := Succ(spiel[zug])
  97.        END;
  98.      (*   Eingetretene Spielsituation analysieren   *)
  99.      IF  zug <> 0  THEN
  100.        IF  zug <> 7  THEN  (*   Gegenueberliegendes Feld entleeren   *)
  101.          IF  spiel[zug] = 1  THEN
  102.            BEGIN
  103.              spiel[0] := spiel[0]+spiel[14-zug];  spiel[14-zug] := 0
  104.            END;
  105.      (*   Spielende?   *)
  106.      summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
  107.      IF  summe = 0  THEN  mehr := FALSE
  108.      ELSE  IF  zahl - spiel[0] - spiel [7] - summe = 0  THEN  mehr :=FALSE;
  109.      (* Organisierung der weiterfolgenden Analyse und Stellungsbewertung *)
  110.      IF  mehr THEN
  111.        IF  tiefe = stark  THEN
  112.          BEGIN
  113.            erg := spiel[0]-spiel[7];
  114.            IF  erg > wert[tiefe]  THEN
  115.              BEGIN
  116.                wert[tiefe] := erg;
  117.                IF  tiefe = 1  THEN
  118.                  BEGIN
  119.                    best_1 := try_1;  best_2 := try_2
  120.                  END
  121.              END
  122.          END
  123.        ELSE
  124.          BEGIN
  125.            m_analyse;
  126.            IF  wert[Succ(tiefe)] > wert[tiefe]  THEN
  127.              BEGIN
  128.                wert[tiefe] := wert[Succ(tiefe)];
  129.                IF  tiefe = 1  THEN
  130.                  BEGIN
  131.                    best_1 := try_1;  best_2 := try_2
  132.                  END
  133.              END
  134.          END
  135.      ELSE
  136.        BEGIN
  137.          erg := spiel[0] - spiel[7];
  138.          IF  erg < 100  THEN  erg := erg - 50;
  139.          IF  erg > wert[tiefe]  THEN
  140.            BEGIN
  141.              wert[tiefe] := erg;
  142.              IF  tiefe = 1  THEN
  143.                BEGIN
  144.                  best_1 := try_1;  best_2 := try_2
  145.                END
  146.            END
  147.        END;
  148.      spiel := stapel[stief];  stief := Pred(stief)
  149.    END;
  150.  
  151. (*-------------------------------------------------------------------------*)
  152. (*       Test-Menschzug wird ausgefuehrt, analysiert und bewertet          *)
  153.  
  154. PROCEDURE  m_try (zug: INTEGER);
  155.  
  156.    VAR  anzahl, index, summe, erg  : INTEGER;
  157.         nochmal, mehr              : BOOLEAN;
  158.  
  159.    BEGIN
  160.      (*   Der Test-Menschzug wird ausgefuehrt   *)
  161.      stief := Succ(stief);  stapel[stief] := spiel;
  162.      mehr := TRUE;  nochmal := FALSE;
  163.      anzahl := spiel[zug];  spiel[zug] := 0;
  164.      FOR  index := 1  TO  anzahl  DO
  165.        BEGIN
  166.          zug := Succ(zug);
  167.          IF  zug = 14  THEN  zug := 0;
  168.          spiel[zug] := Succ(spiel[zug])
  169.        END;
  170.      (*   Eingetretene Spielsituation analysieren   *)
  171.      IF  zug = 7  THEN  nochmal := TRUE
  172.      ELSE  IF  zug <> 0  THEN  (*   Gegenueberliegendes Feld entleeren   *)
  173.        IF  spiel[zug] = 1  THEN
  174.          BEGIN
  175.            spiel[7] := spiel[7] + spiel[14-zug];  spiel[14-zug] := 0
  176.          END;
  177.      (*   Spielende?   *)
  178.      summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
  179.      IF  summe = 0  THEN  mehr := FALSE
  180.      ELSE  IF  zahl - spiel[0] - spiel[7] - summe = 0  THEN  mehr :=FALSE;
  181.      (*  Organisierung der weiterfolgenden Analyse und Stellungsbewertung  *)
  182.      IF  mehr  THEN
  183.        IF  nochmal  THEN  m_again
  184.        ELSE  IF  tiefe = stark  THEN
  185.          BEGIN
  186.            erg := spiel[0] - spiel[7];
  187.            IF  erg < wert[tiefe]  THEN  wert[tiefe] := erg;
  188.          END
  189.        ELSE
  190.          BEGIN
  191.            c_analyse;
  192.            IF  wert[Succ(tiefe)] < wert[tiefe]  THEN
  193.              wert[tiefe] := wert[Succ(tiefe)];
  194.          END
  195.      ELSE
  196.        BEGIN
  197.          erg := spiel[0] - spiel[7];
  198.          IF  erg > 100  THEN  erg := erg + 50;
  199.          IF  erg < wert[tiefe]  THEN  wert[tiefe] := erg;
  200.        END;
  201.      spiel := stapel[stief];  stief := Pred(stief)
  202.    END;
  203.  
  204. (*-------------------------------------------------------------------------*)
  205. (*  Test-Mensch-Wiederholungszug wird ausgefuehrt, analysiert und bewertet *)
  206.  
  207. PROCEDURE  m_2nd (zug: INTEGER);
  208.  
  209.    VAR  anzahl, index, summe, erg : INTEGER;
  210.         mehr                      : BOOLEAN;
  211.  
  212.    BEGIN
  213.      (*   Der Test-Mensch-Wiederholungszug wird ausgefuehrt   *)
  214.      stief := Succ(stief);  stapel[stief] := spiel;
  215.      mehr := TRUE;
  216.      anzahl := spiel[zug];  spiel[zug] := 0;
  217.      FOR  index := 1  TO  anzahl  DO
  218.        BEGIN
  219.          zug := Succ(zug);
  220.          IF  zug = 14  THEN  zug := 0;
  221.          spiel[zug] := Succ(spiel[zug])
  222.        END;
  223.      (*   Eingetretene Spielsituation analysieren   *)
  224.      IF  zug <> 7  THEN
  225.        IF  zug <> 0  THEN  (*   Gegenueberliegendes Feld entleeren   *)
  226.          IF  spiel[zug] = 1  THEN
  227.            BEGIN
  228.              spiel[7] := spiel[7] + spiel[14-zug];  spiel[14-zug] := 0
  229.            END;
  230.      (*   Spielende?   *)
  231.      summe := spiel[1]+spiel[2]+spiel[3]+spiel[4]+spiel[5]+spiel[6];
  232.      IF  summe = 0  THEN  mehr := FALSE
  233.      ELSE  IF  zahl - spiel[0] - spiel[7] - summe = 0  THEN  mehr := FALSE;
  234.      (* Organisierung der weiterfolgenden Analyse und Stellungsbewertung  *)
  235.      IF  mehr  THEN
  236.        IF  tiefe = stark  THEN
  237.          BEGIN
  238.            erg := spiel[0] - spiel[7];
  239.            IF  erg < wert[tiefe]  THEN  wert[tiefe] := erg;
  240.          END
  241.        ELSE
  242.          BEGIN
  243.            c_analyse;
  244.            IF  wert[Succ(tiefe)] < wert[tiefe]  THEN
  245.              wert[tiefe] := wert[Succ(tiefe)];
  246.          END
  247.      ELSE
  248.        BEGIN
  249.          erg := spiel[0] - spiel[7];
  250.          IF  erg > 100  THEN  erg := erg + 50;
  251.          IF  erg < wert[tiefe]  THEN  wert[tiefe] := erg;
  252.        END;
  253.      spiel := stapel[stief];  stief := Pred(stief)
  254.    END;
  255.  
  256. (*-------------------------------------------------------------------------*)
  257. (*  Legale Zuege fuer 1. Computerzug ermitteln und zur Analyse uebergeben  *)
  258.  
  259. PROCEDURE  c_analyse;
  260.  
  261.    BEGIN
  262.      tiefe := Succ(tiefe);  wert[tiefe] := 0;
  263.      IF  spiel[13] <> 0  THEN  c_try(13);
  264.      IF  spiel[12] <> 0  THEN  c_try(12);
  265.      IF  spiel[11] <> 0  THEN  c_try(11);
  266.      IF  spiel[10] <> 0  THEN  c_try(10);
  267.      IF  spiel[ 9] <> 0  THEN  c_try( 9);
  268.      IF  spiel[ 8] <> 0  THEN  c_try( 8);
  269.      tiefe := Pred(tiefe)
  270.    END;
  271.  
  272. (*-------------------------------------------------------------------------*)
  273. (* Legale Zuege fuer 2. Computerzug ermitteln und zur Analyse uebergeben   *)
  274.  
  275. PROCEDURE  c_again;
  276.  
  277.    BEGIN
  278.      IF  spiel[13] <> 0  THEN  c_2nd(13);
  279.      IF  spiel[12] <> 0  THEN  c_2nd(12);
  280.      IF  spiel[11] <> 0  THEN  c_2nd(11);
  281.      IF  spiel[10] <> 0  THEN  c_2nd(10);
  282.      IF  spiel[ 9] <> 0  THEN  c_2nd( 9);
  283.      IF  spiel[ 8] <> 0  THEN  c_2nd( 8);
  284.    END;
  285.  
  286. (*-------------------------------------------------------------------------*)
  287. (*   Legale Zuege fuer 1. Menschzug ermitteln und zur Analyse uebergeben   *)
  288.  
  289. PROCEDURE  m_analyse;
  290.  
  291.    BEGIN
  292.      tiefe := Succ(tiefe);  wert[tiefe] := 200;
  293.      IF  spiel[6] <> 0  THEN  c_2nd(6);
  294.      IF  spiel[5] <> 0  THEN  c_2nd(5);
  295.      IF  spiel[4] <> 0  THEN  c_2nd(4);
  296.      IF  spiel[3] <> 0  THEN  c_2nd(3);
  297.      IF  spiel[2] <> 0  THEN  c_2nd(2);
  298.      IF  spiel[1] <> 0  THEN  c_2nd(1);
  299.      tiefe := Pred(tiefe)
  300.    END;
  301.  
  302. (*-------------------------------------------------------------------------*)
  303. (*   Legale Zuege fuer 2. Menschzug ermitteln und zur Analyse uebergeben   *)
  304.  
  305. PROCEDURE  m_again;
  306.  
  307.    BEGIN
  308.      IF  spiel[6] <> 0  THEN  c_2nd(6);
  309.      IF  spiel[5] <> 0  THEN  c_2nd(5);
  310.      IF  spiel[4] <> 0  THEN  c_2nd(4);
  311.      IF  spiel[3] <> 0  THEN  c_2nd(3);
  312.      IF  spiel[2] <> 0  THEN  c_2nd(2);
  313.      IF  spiel[1] <> 0  THEN  c_2nd(1);
  314.    END;
  315.  
  316. (*-------------------------------------------------------------------------*)
  317. (*                         Ende von AWARCOMP.INC                           *)
  318.