ALG(9

ALG(9



12.3. Algorytm inini-max 289

(

if (gracz==komputer) return człowiek; else

return komputer;

}

Przydadzą się również funkcje pomocnicze:

void WyswietlPlansze(plansza); void Zeruj Plansze(plansza) ; int KoniecGry(plansza);

Ostatnia funkcja dokonuje sprawdzenia, czy ktoś nie postawił linii złożonej z trzech jednakowych znaków, co - jak pamiętamy - gwarantuje zwycięstwo w tej grze, lub czy nie doszło do remisu.

Sama gra jest zwykłą pętlą, która prowokuje wykonanie ruchów. Załóżmy, że pętla ta została zamknięta w funkcji Graj:

void Graj(plansza, gracz)

{

gracz tmp=gracz;

while(!SprawdzCzyKoniecGry(plansza,gracz_tmp))

WyswietlPlansze(plansza) ; ruch=WybierzRuch(gracz_tmp, plansza);

WykonajRuch(gracz_tmp, plansza, ruch); gracz_tmp=Nastepny_Gracz(gracz_tmp);

)

)

Powyższy schemat jest identyczny dla większości gier dwuosobowych. Na samym początku musimy określić, kto zaczyna (komputer, człowiek'?), np. poprzez losowy' wybór. Losowanie to powinno się dokonać raz w funkcji mam. która po wyzerowaniu planszy powinna wywołać procedurę Graj. Warunkiem progresji pętli jest stan, w którym nikt jeszcze nie wygrał lub nie zremisował gry . Procedura WykonajRuch ściśle zależy od zastosowanych struktur danych. W naszym przypadku może to być po prostu:

plansza[ruch]=gracz_tmp;

Nieco trudniejsze jest wykonanie ruchu w tak skomplikowanej grze jak szachy, czy' też Reversi, mamy bowiem do uwzględnienia efekty uboczne, takie jak bicie pionów, roszady...

Skąd mamy jednak wiedzieć, jaki ruch powinien zostać wykonany? Odpowiedzi dostarczyć nam powinna funkcja WybierzRuch. która używa poznanej wcześniej funkcji mini-max:


Wyszukiwarka

Podobne podstrony:
ALG(7 12.3. Algorytm mini-max 287 Załóżmy również, że wartości liczbowe węzłów z ostatniego poziomu,
ALG)1 12.3. Algorytm mini-max 291 Na tym zakończymy omawianie zagadnień technicznych związanych z pr
ALG(6 286 Rozdział 12. Czy komputery mogą myśleli?12.3.Algorytm mini-max Wychodzimy z pozycji starto
ALG!5 8.2. Nowe algorytmy poszukiwań 215 l int i=-1 ; start: i++; etO: if (t: i]! = ■ i + + ; a
12.1.7.    Hamowanie wchłaniania trucizn..........289 12.1.8.
Scan Pic0252 12 Z Mantysy logarylmów dziesiętnych Ig If 0 1 2 3 4 5 6 7 8 9 155 19 0332g 06128 08
289 (12) 15 Radar w nawigacji 289 Wyszczególnione w tabelach odległości wykrycia radarem różnych obi
3 12 (3) m Algorytm zastosowania AED Upewnij się, czy nikt nie dotyka poszkodowanego Naciśnij przyci
TACHYKARDIA algorytm postępowania Ryc. 4.12. Algorytm postępowania w przypadku tachykardii
70529 Scan Pic0252 12 Z Mantysy logarylmów dziesiętnych Ig If 0 1 2 3 4 5 6 7 8 9 155 19 0332g 06
Zadanie 12 Algorytm Homera w bazie Newtona. Różnice dzielone. Zaprogramuj w octavie funkcję ze zmody
1 (32) Ihutóbordan) 2.10. abra. 12,8 V kimeneti fesziiltsegu, max. 2 A terhełhetósegu hólózaii stabi
12.Lipomatosis myocardii 0ft062c2£K£ 6ERŁfl *7-^’    ’ If^iUFf i J3^>Ł.
Wyszukiwanie i porządkowanie informacji nieź wykazać, że algorytmy Min-i-Max i Min-i-Max_rec są opty
b) Algorytm cięć Alfa-beta Algorytm cięć o - V Jest to rozszerzeni# algorytmu minl-max. Idea sprowad
image032 (12) Kierunek wiatru 1 ^ max. 100 m -i Zasłony Droga
essent?rving?30 E S S E N T l A L W O O I) C A R V I N G T E C H X I Q U E S Fig 12.6 The małe skele
35919 techniki i technologie?zwykopowe 12$ wykomsrywany w inspekcjach video-c.iL 1 • • *4# Ł

więcej podobnych podstron