380 likes | 579 Views
Metodyka nauczania Informatyki. Budowanie algorytmów – algorytmy gier. 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. Algorytmy losowe. Najprostsza implementacja
E N D
Metodyka nauczania Informatyki Budowanie algorytmów – algorytmy gier
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
Algorytmy losowe • Najprostsza implementacja • Tylko interfejs • Dobre do testowania • Mało ciekawe rozgrywki, choć różnorodne
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
Drzewo gry - przykład Pełne drzewo gry „Kółko i krzyżyk” ma 362880 węzłów!
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, …
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”
Przykład algorytmu wygrywania • Przykład rozgrywki: 4 13 14 20 23 24 33 37 42 49 58 59 60 67 73 77 81 88 93 100 (wygrana)
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
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
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ą
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)
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
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.
Algorytm z oceną sytuacji Wartości czwórek (my gramy niebieskimi)
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
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.
Przykłady gier • Gry dla dwóch graczy • Proste gry planszowe • Gry za pomocą papieru i ołówka • Gry z małą liczbą rekwizytów
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
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
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
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
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
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
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ć
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
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
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