Metodyka nauczania Informatyki
description
Transcript of Metodyka nauczania Informatyki
Metodyka nauczania InformatykiBudowanie algorytmów – algorytmy gier
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
5
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, …
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:
8
4 13 14 20 23 24 33 3742 49 58 59 60 67 73 7781 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
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