Budowanie algorytmów – algorytmy gier

Download Report

Transcript Budowanie algorytmów – algorytmy gier

Budowanienauczania
algorytmów –Informatyki
algorytmy gier
Metodyka
1
Budowanie algorytmów gier
•
•
•
•
•
Algorytmy losowe
Algorytmy z pełnym drzewem gry
Algorytmy strategii
Algorytmy uczące się na błędach
Algorytmy uczące się od przeciwnika
2
Algorytmy losowe
• Najprostsza implementacja
– Tylko interfejs
• Dobre do testowania
• Mało ciekawe rozgrywki, choć różnorodne
3
Algorytmy z drzewem gry
• Tylko dla prostych (mało ciekawych) gier
• Wymagają rozpatrywania wszystkich
możliwych ruchów w każdej sytuacji
• Implementacja wskazana tylko wtedy, gdy:
– Drzewo można generować automatycznie
– Można w inny sposób (np. rekurencyjny)
przeglądać całe drzewo gry
4
Drzewo gry - przykład
Pełne drzewo gry
„Kółko i krzyżyk”
ma 362880
węzłów!
5
Algorytmy strategii gry
• Algorytm, który pozwala „obliczyć” ruch na
podstawie „sytuacji na planszy”
• Można to robić na dwa sposoby
– Stosować obmyśloną strategię wygrywającą
– Stosować algorytm oceny sytuacji i wybierać ruch,
który daje najgorszą sytuację przeciwnikowi, lub
najlepszą nam po najlepszym (lub każdym) ruchu
przeciwnika, …
6
Przykład algorytmu wygrywania
• Gra: „Do 100”
– Zasady gry
• Początek: pierwszy gracz podaje liczbę całkowitą
dodatnią mniejszą od 10
• Gracze na zmianę podają liczby naturalne, ale większe
od poprzedniej i większe nie więcej niż o 10
• Wygrywa ten, kto pierwszy zgodnie z regułami powie
„100”
7
Przykład algorytmu wygrywania
• Przykład rozgrywki:
4
42
81
13
49
88
14
58
93
20
23
24
59
60
67
100 (wygrana)
33
73
37
77
8
Przykład algorytmu wygrywania
• Analiza ogólna rozgrywki (od tyłu):
– Aby wygrać (powiedzieć 100) przeciwnik musi
powiedzieć: 99 lub 98 lub 97 lub … lub 90
– Aby przeciwnik powiedział liczbę n z przedziału 89 < n <
100 to muszę powiedzieć 89
– Abym mógł powiedzieć 89 to przeciwnik musi
powiedzieć liczbę n taką, że 78 < n < 89
– Abym mógł powiedzieć 78 muszę powiedzieć 67
– I dalej aby powiedzieć 67 muszę powiedzieć 56
wcześniej 45, 34, 23, 12, 1
9
Przykład algorytmu wygrywania
• Algorytm wygrywania:
– Ja zaczynam
• Mówię (bez względu na to co mówi przeciwnik) po kolei liczby:
1, 12, 23, 34, 45, 56, 67, 78, 89 i 100
– Zaczyna przeciwnik
• Staram się jak najszybciej powiedzieć jedną z liczb 1, 12, 23, 34,
45, 56, 67, 78, 89 i 100.
• Gdy to się uda, dalej mówię kolejno następne liczby z tego ciągu
• Gdy nie uda się powiedzieć jakiejś liczby z tego ciągu przegrałem
10
Algorytm z oceną sytuacji
• Założenia (jedno z dwóch):
– Jest funkcja oceniająca sytuację – dla każdej sytuacji na „planszy”
funkcja daje liczbę. Im liczba wyższa tym sytuacja lepsza
– Jest funkcja oceniająca dany ruch – dla każdego ruchu w danej
sytuacji funkcja daje liczbę. Im liczba wyższa tym to jest lepszy ruch
• Algorytm:
– W pierwszym przypadku: symulujemy ruch i obliczamy ocenę
sytuacji. Wybieramy taki ruch, po którym ocena sytuacji jest
najkorzystniejsza
– W drugim przypadku: wybieramy ruch z najwyższą oceną
11
Algorytm z oceną sytuacji
• Budowa funkcji oceniającej ruch
– Szachy:
• Suma umownej wartości figur
• Punkty za zajęcie środkowych pól szachownicy
• Punkty za zabezpieczenie króla (trudno dostępny przez bierki
przeciwnika)
• Punkty za rozwinięcie bierek (możliwość łatwego
przemieszczania, duże obszary szachowania, jak najmniej bierek
związanych, ochrona jednych bierek przez inne)
12
Algorytm z oceną sytuacji
• Budowa funkcji oceniającej ruch
– Gra: „Kółko i krzyżyk na kostce 4 x 4 x 4”
• Gracze na zmianę stawiają kółko lub krzyżyk w
dowolnej wolnej komórce kostki 4 x 4 x 4 – są 64
komórki
• Wygrywa ten, kto pierwszy ułoży linię (pionową,
poziomą lub ukośną w dowolnym kierunku) z 4
swoich znaków
13
Algorytm z oceną sytuacji
Dla każdej wolnej komórki
obliczamy jej ocenę, jako
potencjalnego miejsca na
postawienie swojego
pionka. Obliczamy sumę
wartości czwórek
przechodzących przez to
pole.
14
Algorytm z oceną sytuacji
Wartości czwórek
(my gramy niebieskimi)
15
Algorytmy uczące się
• Uczenie się na błędach
– Zawsze ruchy wybierane losowo ze zbioru
dostępnych w danej sytuacji
– Po przegranej usuwanie ostatniego ruchu ze
zbioru
– Gdy zbiór dostępnych ruchów pusty to poddajemy
grą i usuwamy ostatni ruch
16
Algorytmy uczące się
• Uczenie się od człowieka
– Na początku nie wie nic
– Po przegranej pyta „Jak mogłem nie przegrać?”
– Zapamiętuje odpowiedź jako przypadek
szczególny. Następnym razem w takiej samej
sytuacji postąpi według tego wzorca.
– Od sposobu uczenia zależy jak szybko algorytm
stanie się sprawny.
17
Przykłady gier
•
•
•
•
Gry dla dwóch graczy
Proste gry planszowe
Gry za pomocą papieru i ołówka
Gry z małą liczbą rekwizytów
18
SIEĆ
• Pole gry: kwadrat 7x7
• Ruch:
– narysowanie wewnątrz kwadratu prostego odcinka (po
krawędziach kratek) o długości nie mniejszej niż 2 kratki
zaczynającego i kończącego się na brzegu planszy lub na
innej linii (nie może przecinać innych linii)
– Każdy gracz gra zawsze cały czas w tym samym kierunku
(poziomo lub pionowo)
• Przegrywa ten kto nie może wykonać ruchu
19
SIEĆ
20
KĄTY
• Plansza
– Kwadrat, którego dwa stykające się boki są czerwone, a pozostałe
dwa czarne.
• Ruch
– Narysowanie w swoim kolorze kąta prostego o ramionach
równoległych do boku kwadratu kończącego się na bokach o
różnych kolorach
– Każdy gracz wykonuje 3 ruchy (na zmianę)
• Wynik
– Punkty zdobywa gracz za każdy prostokątny obszar mający więcej
boków w kolorze gracza
• Kto ma więcej punktów ten wygrywa
21
KĄTY
22
Okręty podwodne
• Plansza
– 2 kwadraty 8x8 (pole własne i przeciwnika) oznaczone wokół kolejnymi
liczbami (od lewego górnego rogu zgodnie z ruchem wskazówek zegara)
• Przygotowanie
– Na własnym polu zaznaczamy 4 własne okręty – cztery dowolnie wybrane
pola
• Ruch
– Strzał: podanie numeru pola wejścia „pocisku”
– Odpowiedź: numer pola wyjścia:
• Gdy pocisk napotka okręt podwodny to wyjście 0
• Gdy pocisk przechodzi obok okrętu to cofa się o jedno pole i skręca w lewo pod
kątem prostym (tyle razy ile trzeba)
• Wygrana
– Gdy znamy rozkład okrętów przeciwnika
23
Okręty podwodne
24
KAYLES
• Plansza
– Dwanaście patyczków w rzędzie
– Między 1 a 2 patykiem większy odstęp
• Ruch
– Wzięcie jednego lub dwóch patyków
– Dwa można wziąć tylko gdy są bezpośrednio obok siebie
• Wygrana
– Wzięcie ostatniego (lub dwóch ostatnich) patyka
25
KAYLES
26
Obracanka Kościana
• Rekwizyt: kostka do gry
• Przygotowanie: rzut kostką – liczba oczek wyznacza
liczbę startową
• Ruch
– Przekręcenie kostki na sąsiednią ścianę
– Dodanie do poprzedniej liczby liczby oczek na kostce
• Wygrana
– Osiągnięcie (lub przekroczenie) umówionej liczby punktów
27
Obracanka Kościana
28
PODKOWA
• Plansza:
– prostokąt bez jednego boku z przekątnymi (gra się na
wierzchołkach i przecięciu przekątnych)
– po dwa pionki w dwóch kolorach (na rogach prostokąta)
• Ruch:
– Przesunięcie własnego pionka na wolne pole
• Wygrana:
– Przeciwnik nie może wykonać ruchu
29
PODKOWA
30
Lis i gęsi
• Plansza:
– Krzyż złożony z 5 kwadratów z przekątnymi oraz liniami poziomymi i
pionowymi przez środki boków
– Jeden pionek czarny (lis)
– 13 pionków białych (gęsi)
• Ruch:
– Jedno pole w dowolnym kierunku
– Lis ma prawo bicia: przez przeskoczenie na wolne pole za zbijanym
pionkiem
• Wygrana:
– Gęsi: zablokowanie lisa
– Lis: zbicie tylu gęsi, że nie mogą go zablokować
31
Lis i gęsi
32
HEX
• Plansza
– Specjalna: romb złożony z sześciokątów o boku 11 komórek
– Boki równoległe w tym samym kolorze ale parami różne
kolory
• Ruch
– położenie pionka swojego koloru w dowolnej komórce
• Wygrana
– Połączenie brzegów planszy w tym samym kolorze
33
HEX
34
Cyfry
• Plansza
– Kwadrat 5x5
• Ruch
– Wpisanie kolejnej liczby w kratkę (począwszy od 1) w tym samym
wierszu lub kolumnie co poprzednia liczba
– Między poprzednią liczbą, a nową nie może być żadnej inne liczby
• Wygrana
– Gdy przeciwnik nie może wykonać ruchu
– Ostatnia wpisana liczba jest wynikiem punktowym zwycięzcy
35
Cyfry
36
Ziemniaczki
• Plansza
– Symetryczna piramida kółek (1, 3, 5, 7, 9)
• Ruch
– Zamalowanie jednego punktu
– Gdy zamalujemy ostatni punkt z prostej (poziomej, pionowej, ukośnej)
to dostajemy tyle punktów ile kółek leży na tej prostej (tych prostych)
• Koniec gry
– Gdy wszystkie punkty będą zamalowane
– Wygrywa ten kto ma więcej punktów
37
Ziemniaczki
38