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 prALG(6 286 Rozdział 12. Czy komputery mogą myśleli?12.3.Algorytm mini-max Wychodzimy z pozycji startoALG!5 8.2. Nowe algorytmy poszukiwań 215 l int i=-1 ; start: i++; etO: if (t: i]! = ■ i + + ; a12.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 08289 (12) 15 Radar w nawigacji 289 Wyszczególnione w tabelach odległości wykrycia radarem różnych obi3 12 (3) m Algorytm zastosowania AED Upewnij się, czy nikt nie dotyka poszkodowanego Naciśnij przyciTACHYKARDIA algorytm postępowania Ryc. 4.12. Algorytm postępowania w przypadku tachykardii70529 Scan Pic0252 12 Z Mantysy logarylmów dziesiętnych Ig If 0 1 2 3 4 5 6 7 8 9 155 19 0332g 06Zadanie 12 Algorytm Homera w bazie Newtona. Różnice dzielone. Zaprogramuj w octavie funkcję ze zmody1 (32) Ihutóbordan) 2.10. abra. 12,8 V kimeneti fesziiltsegu, max. 2 A terhełhetósegu hólózaii stabi12.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ą optyb) Algorytm cięć Alfa-beta Algorytm cięć o - V Jest to rozszerzeni# algorytmu minl-max. Idea sprowadimage032 (12) Kierunek wiatru 1 ^ max. 100 m -i Zasłony Drogaessent?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 skele35919 techniki i technologie?zwykopowe 12$ wykomsrywany w inspekcjach video-c.iL 1 • • *4# Łwięcej podobnych podstron