home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB Zuggenerator (Stellung AS ANY, Zugliste() AS ANY, ZugZahl%)
- DECLARE SUB FuehreZugAus (Stellung AS ANY, Zug AS ANY)
- DECLARE SUB NimmZugZurueck (Stellung AS ANY, Zug AS ANY)
- DECLARE FUNCTION statischeBewertung% (Stellung AS ANY)
- DEFINT A-Z
-
- FUNCTION ErmittleStellungswert (Stellung AS StellungsTyp, Tiefe, alpha0, beta0, besterZug AS ZugTyp)
-
- '
- ' Konstanten
- ' ----------
- '
- MaxZuege =
- maxmimaleTiefe =
-
-
- DIM Zugliste(MaxZuege) AS ZugTyp, aktuellerZug AS ZugTyp, besterZugNeu AS ZugTyp
-
- IF Tiefe = maximaleTiefe THEN
- ErmittleStellungswert = statischeBewertung(Stellung)
- ELSE
- IF ComputerAmZug(Stellung) THEN alpha = -10000 ELSE beta = 10000
- CALL Zuggenerator(Stellung, Zugliste(), ZugZahl)
- IF ZugZahl = 0 THEN
- ErmittleStellungswert = 0
- ELSE
- FOR ZugNr = 1 TO ZugZahl
- aktuellerZug = Zugliste(ZugNr)
- CALL FuehreZugAus(Stellung, aktuellerZug)
- aktuellerWert = ErmittleStellungswert(Stellung, (Tiefe), (alpha), (beta), besterZugNeu)
- CALL NimmZugZurueck(Stellung, aktuellerZug)
- IF ComputerAmZug(Stellung) THEN
- IF alpha < aktuellerWert THEN
- alpha = aktuellerWert: besterZug = aktuellerZug
- END IF
- IF alpha >= beta0 THEN EXIT FOR
- ELSE
- IF beta > aktuellerWert THEN
- beta = aktuellerWert: besterZug = aktuellerZug
- END IF
- IF beta <= alpha0 THEN EXIT FOR
- END IF
- NEXT ZugNr
- IF ComputerAmZug(Stellung) THEN
- ErmittleStellungswert = alpha
- ELSE
- ErmittleStellungswert = beta
- END IF
- END IF
- END IF
-
- END FUNCTION