home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 08 / minimax / minimax.bas next >
Encoding:
BASIC Source File  |  1989-05-10  |  1.7 KB  |  53 lines

  1. DECLARE SUB Zuggenerator (Stellung AS ANY, Zugliste() AS ANY, ZugZahl%)
  2. DECLARE SUB FuehreZugAus (Stellung AS ANY, Zug AS ANY)
  3. DECLARE SUB NimmZugZurueck (Stellung AS ANY, Zug AS ANY)
  4. DECLARE FUNCTION statischeBewertung% (Stellung AS ANY)
  5. DEFINT A-Z
  6.  
  7. FUNCTION ErmittleStellungswert (Stellung AS StellungsTyp, Tiefe, alpha0, beta0, besterZug AS ZugTyp)
  8.  
  9. '
  10. ' Konstanten
  11. ' ----------
  12. '
  13. MaxZuege =
  14. maxmimaleTiefe =
  15.  
  16.  
  17. DIM Zugliste(MaxZuege) AS ZugTyp, aktuellerZug AS ZugTyp, besterZugNeu AS ZugTyp
  18.  
  19. IF Tiefe = maximaleTiefe THEN
  20.    ErmittleStellungswert = statischeBewertung(Stellung)
  21. ELSE
  22.    IF ComputerAmZug(Stellung) THEN alpha = -10000 ELSE beta = 10000
  23.    CALL Zuggenerator(Stellung, Zugliste(), ZugZahl)
  24.    IF ZugZahl = 0 THEN
  25.       ErmittleStellungswert = 0
  26.    ELSE
  27.       FOR ZugNr = 1 TO ZugZahl
  28.           aktuellerZug = Zugliste(ZugNr)
  29.           CALL FuehreZugAus(Stellung, aktuellerZug)
  30.           aktuellerWert = ErmittleStellungswert(Stellung, (Tiefe), (alpha), (beta), besterZugNeu)
  31.           CALL NimmZugZurueck(Stellung, aktuellerZug)
  32.           IF ComputerAmZug(Stellung) THEN
  33.              IF alpha < aktuellerWert THEN
  34.                 alpha = aktuellerWert: besterZug = aktuellerZug
  35.              END IF
  36.              IF alpha >= beta0 THEN EXIT FOR
  37.           ELSE
  38.              IF beta > aktuellerWert THEN
  39.                 beta = aktuellerWert: besterZug = aktuellerZug
  40.              END IF
  41.              IF beta <= alpha0 THEN EXIT FOR
  42.           END IF
  43.       NEXT ZugNr
  44.       IF ComputerAmZug(Stellung) THEN
  45.          ErmittleStellungswert = alpha
  46.       ELSE
  47.          ErmittleStellungswert = beta
  48.       END IF
  49.    END IF
  50. END IF
  51.  
  52. END FUNCTION
  53.