• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kółko krzyżyk z komputerem

VPS Starter Arubacloud
+2 głosów
1,695 wizyt
pytanie zadane 29 lipca 2016 w C i C++ przez derold Początkujący (280 p.)
Witam, po obejrzeniu odcinka kursu obiektowego c++ nr9 (Tam gdzie powstała gra w kółko krzyżyk) naszła mnie ochota na zrobienie tej gry ale nie na dwóch graczy tylko gracz i komputer. I czy mógłby ktoś napisać mi jakieś wskazówki jak to ugryźć ?Myślałem o tym żeby zrobić funkcję która sprawdzała by gdzie jest postawiony krzyżyk i wstawiała kółko w takim miejscu aby "zagrodzić" wygraną ale nie jestem pewny czy to dobry pomysł a może ktoś z was nasunie coś lepszego.

4 odpowiedzi

+3 głosów
odpowiedź 30 lipca 2016 przez Porcupine Nałogowiec (31,560 p.)
Naszła mnie taka myśl, że mógłbyś wpleść w to machine learning i ze względu na dość ograniczony zbiór możliwych ruchów wyszłoby to bardzo prosto :)

Tzn. Twój algorytm sam uczyłby się jak grać. Na początku próbowałby jakieś losowe ruchy (oczywiście takie, które są dopuszczalne w danym momencie), po czym po każdej rozgrywce mógłby zapisywać w jakieś kolekcji wynik gry i sekwencje ruchów, która do tego wyniku doprowadziła. W przyszłości na bierząco przeglądałby tą kolekcję i jeśli widziałby, że dana sekwencja ruchów prowadzi do zwycięstwa (ew. remisu, gdy nie ma lepszej możliwości) to by wykonywał zapamiętane ruchy, z kolei jeśli sekwencja prowadziłaby do porażki próbowałby czegoś nowego :)

Myślę, że mogłoby to na prawdę fajnie działać, szczególnie jakbyś trochę pogłówkował nad efektywną implementacją algorytmu. Może traktować ruchy jako graf i przeglądać BFSem? Może zoptymalizować jeszcze bardziej uwzględniając symetrie planszy? Play with it! :)
komentarz 30 lipca 2016 przez ZakosiliMiNeta Nałogowiec (30,910 p.)
Chcesz wprowadzić sieć neuronową po podstawowym kursie programowania ? To nie ma sensu bynajmniej nie widzę. Jak można to o wiele prościej zrobić i komputer zawsze będzie remisował
komentarz 30 lipca 2016 przez niezalogowany
to co tutaj jest opisane nie ma nic wspólnego z siecią neuronową.
+2 głosów
odpowiedź 30 lipca 2016 przez Józef Mądrala (5,200 p.)
Jeżeli dobrze się zastanowisz, to dojdziesz do wniosku, że przy odpowiednim prowadzeniu gry już drugi ruch rozstrzyga, czy partia zostanie wygrana/zremisowana (przy założeniu, iż pierwszy ruch będzie umieszczał symbol w centrum planszy). W takim przypadku możesz napisać algorytm, który bezbłędnie pozwoli komputerowi wygrać lub zremisować (bez względu na to pierwszeństwo ruchu). Następnie za pomocą zwykłego losowania ustalasz, czy komputer skorzysta z tej niezawodnej strategii, czy też celowo popełni błąd, który pozwoli wygrać graczowi. Nie jest to oczywiście dobre rozwiązanie do gry, ale może być ciekawym ćwiczeniem.

Jeżeli chodzi o strategię gry, to gdy gracz A umieszcza symbol w centrum planszy, to gracz B może podjąć tylko jedną z dwóch decyzji - albo umieści w prostej linii w stosunku do centrum, albo po skosie (innymi słowy jeśli polom na planszy przypiszemy liczby 1-9, centrum oznaczymy jako 5, to pierwszą opcją będą liczby 2, 4, 6, 8, natomiast drugą 1, 3, 7, 9). Jeśli gracz B zdecyduje się na pierwszą opcję, to gracz A ma zagwarantowane zwycięstwo (umieszczając swój symbol "po skosie"). Jeżeli gracz B wybierze opcję drugą, to przy odpowiedniej grze może doprowadzić do remisu. Oczywiście taki scenariusz jest możliwy jedynie w przypadku, gdy po wykonaniu drugiego ruchu żaden z graczy nie popełni błędu.

W takim przypadku komputer jako gracz B zawsze będzie stawiał swój symbol "po skosie" i prowadził grę tak, aby doprowadzić do remisu lub zwycięstwa, jeżeli gracz popełnia błędy. Losowanie "zdecyduje", czy komputer skorzysta ze strategii/przy pierwszym ruchu umieści swój symbol w centrum (co daje największe szanse na wygraną).

Praca domowa - opracuj algorytm, który pozwoli komputerowi zareagować, gdy człowiek będzie grał jako pierwszy i nie postawi swojego symbolu w centrum. Moja rada jest taka, abyś przed przystąpieniem do pisania pobawił się trochę z kartką i ołówkiem.
+1 głos
odpowiedź 30 lipca 2016 przez ZakosiliMiNeta Nałogowiec (30,910 p.)
Prosta rekurencja sprawdzająca każda kombinację ruchów i wybranie optymalnego rozwiązania
0 głosów
odpowiedź 29 lipca 2016 przez niezalogowany
dobrze myślisz, na początek możesz to zrobić, chociaż ja bym zrobił klasę Komputer i tam wsadził całą mechanikę

Podobne pytania

0 głosów
1 odpowiedź 385 wizyt
pytanie zadane 10 lipca 2020 w C i C++ przez kaminie318 Bywalec (2,070 p.)
0 głosów
2 odpowiedzi 1,162 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez pysiek Początkujący (280 p.)
+1 głos
0 odpowiedzi 635 wizyt

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...