Spisu treści:

Gra Arduino Touch Tic Tac Toe: 6 kroków (ze zdjęciami)
Gra Arduino Touch Tic Tac Toe: 6 kroków (ze zdjęciami)

Wideo: Gra Arduino Touch Tic Tac Toe: 6 kroków (ze zdjęciami)

Wideo: Gra Arduino Touch Tic Tac Toe: 6 kroków (ze zdjęciami)
Wideo: Kurs C++ - 6. Wyjątki i błędy | KJCPP 2024, Czerwiec
Anonim
Image
Image
Gra Arduino Touch Tic Tac Toe
Gra Arduino Touch Tic Tac Toe
Gra Arduino Touch Tic Tac Toe
Gra Arduino Touch Tic Tac Toe
Gra Arduino Touch Tic Tac Toe
Gra Arduino Touch Tic Tac Toe

Drodzy przyjaciele, zapraszamy do kolejnego samouczka Arduino! W tym szczegółowym samouczku zamierzamy zbudować grę Arduino Tic Tac Toe. Jak widać, używamy ekranu dotykowego i gramy przeciwko komputerowi. Prosta gra, taka jak Tic Tac Toe, to świetne wprowadzenie do programowania gier i sztucznej inteligencji. Mimo że w tej grze nie będziemy używać żadnych algorytmów sztucznej inteligencji, zrozumiemy, dlaczego algorytmy sztucznej inteligencji są wymagane w bardziej złożonych grach.

Tworzenie gier na Arduino nie jest łatwe i wymaga dużo czasu. Ale możemy zbudować kilka prostych gier dla Arduino, ponieważ jest to zabawne i pozwoli nam zgłębić bardziej zaawansowane tematy programowania, takie jak sztuczna inteligencja. To wspaniałe doświadczenie edukacyjne, a na koniec będziesz mieć fajną grę dla dzieci!

Zbudujmy teraz ten projekt.

Krok 1: Zdobądź wszystkie części

Image
Image
2,8
2,8

Części potrzebne do zbudowania tego projektu to:

Arduino Uno ▶

Ekran dotykowy 2,8” ▶

Koszt projektu jest bardzo niski. To tylko 15$

Przed przystąpieniem do budowy tego projektu proszę obejrzeć przygotowany przeze mnie film o wyświetlaczu dotykowym. Załączyłem to w tej instrukcji. Pomoże Ci zrozumieć kod i skalibrować ekran dotykowy.

Krok 2: Kolorowy wyświetlacz dotykowy o przekątnej 2,8 cala dla Arduino

Image
Image
2,8
2,8
2,8
2,8

Odkryłem ten ekran dotykowy na banggood.com i postanowiłem go kupić, aby spróbować go wykorzystać w niektórych moich projektach. Jak widać, wyświetlacz jest niedrogi, kosztuje około 11 dolarów.

Pobierz tutaj ▶

Wyświetlacz oferuje rozdzielczość 320x240 pikseli i jest wyposażony w osłonę, dzięki czemu połączenie z Arduino jest niezwykle łatwe. Jak widać, wyświetlacz wykorzystuje prawie wszystkie cyfrowe i analogowe piny Arduino Uno. Używając tego nakładki, do naszych projektów pozostają tylko 2 piny cyfrowe i 1 pin analogowy. Na szczęście wyświetlacz działa dobrze również z Arduino Mega, więc gdy potrzebujemy więcej pinów, możemy użyć Arduino Mega zamiast Arduino Uno. Niestety ten wyświetlacz nie współpracuje z płytką Arduino Due ani Wemos D1 ESP8266. Kolejną zaletą osłony jest to, że oferuje gniazdo micro SD, które jest bardzo łatwe w użyciu.

Krok 3: Budowanie projektu i testowanie go

Budowanie projektu i testowanie go
Budowanie projektu i testowanie go
Budowanie projektu i testowanie go
Budowanie projektu i testowanie go
Budowanie projektu i testowanie go
Budowanie projektu i testowanie go

Po podłączeniu ekranu do Arduino Uno możemy wczytać kod i jesteśmy gotowi do gry.

Najpierw wciskamy przycisk „Rozpocznij grę” i gra się rozpoczyna. Arduino gra jako pierwsze. Następnie możemy zagrać nasz ruch po prostu dotykając ekranu. Arduino następnie odtwarza swój ruch i tak dalej. Gracz, któremu uda się umieścić trzy swoje znaki w rzędzie poziomym, pionowym lub ukośnym, wygrywa grę. Po zakończeniu gry pojawi się ekran Game Over. Następnie możemy nacisnąć przycisk Odtwórz ponownie, aby ponownie rozpocząć grę.

Arduino jest bardzo dobre w tej grze. Wygra większość gier lub jeśli jesteś bardzo dobrym graczem, gra zakończy się remisem. Celowo zaprojektowałem ten algorytm, aby popełniać błędy, aby dać graczowi szansę na wygraną. Dodając jeszcze dwie linijki do kodu gry, możemy uniemożliwić Arduino przegranie gry. Ale jak chip za 2 $, procesor Arduino, może pokonać ludzki mózg? Czy program, który opracowaliśmy, jest mądrzejszy niż ludzki mózg?

Krok 4: Algorytm gry

Algorytm gry
Algorytm gry
Algorytm gry
Algorytm gry

Aby odpowiedzieć na to pytanie, spójrzmy na algorytm, który zaimplementowałem.

Komputer zawsze gra pierwszy. Już sama ta decyzja sprawia, że Arduino znacznie łatwiej wygrywa grę. Pierwszym ruchem jest zawsze rzut rożny. Drugi ruch dla Arduino to również losowy róg od pozostałych, nie dbając w ogóle o ruch gracza. Od tego momentu Arduino najpierw sprawdza, czy gracz może wygrać w kolejnym ruchu i blokuje ten ruch. Jeśli gracz nie może wygrać w jednym ruchu, wykonuje ruch narożny, jeśli jest dostępny, lub losowy z pozostałych. To wszystko, ten prosty algorytm może pokonać człowieka za każdym razem lub w najgorszym przypadku, gdy gra zakończy się remisem. To nie jest najlepszy algorytm gry w kółko i krzyżyk, ale jeden z najprostszych.

Algorytm ten można łatwo zaimplementować w Arduino, ponieważ gra Tic Tac Toe jest bardzo prosta i możemy ją łatwo przeanalizować i rozwiązać. Jeśli zaprojektujemy drzewo gry, możemy odkryć kilka zwycięskich strategii i łatwo zaimplementować je w kodzie lub pozwolić procesorowi na obliczenie drzewa gry w czasie rzeczywistym i samodzielny wybór najlepszego ruchu. Oczywiście algorytm, którego używamy w tej grze jest bardzo prosty, ponieważ gra jest bardzo prosta. Jeśli spróbujemy zaprojektować zwycięski algorytm dla szachów, nawet jeśli użyjemy najszybszego komputera, nie możemy obliczyć drzewa gry za tysiąc lat! W przypadku takich gier potrzebujemy innego podejścia, potrzebujemy algorytmów sztucznej inteligencji i oczywiście ogromnej mocy obliczeniowej. Więcej na ten temat w przyszłym filmie.

Krok 5: Kod Projektu

Kod Projektu
Kod Projektu

Rzućmy okiem na kod projektu. Aby kod się skompilował, potrzebujemy trzech bibliotek.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Ekran dotykowy:

Jak widać, nawet tak prosta gra, jak ta, wymaga ponad 600 linijek kodu. Kod jest skomplikowany, więc nie będę próbował wyjaśniać go w krótkim tutorialu. Pokażę Ci jednak implementację algorytmu dla ruchów Arduino.

Na początku gramy dwa losowe rzuty rożne.

<int firstMoves={0, 2, 6, 8}; // użyje tych pozycji jako pierwszy for(licznik=0;licznik<4;licznik++) //Policz pierwsze zagrane ruchy { if(board[firstMoves[counter]!=0) // Pierwszy ruch jest zagrany przez kogoś { ruchyGrane++; } } do{ if(ruchy<=2) { int randomMove =random(4); int c=pierwszy ruch[losowy ruch]; if (tablica[c]==0) { delay(1000); deska[c]=2; Serial.print(firstMoves[randomMove]); Serial.println(); drawCpuMove(pierwszy ruch[losowy ruch]); b=1; } }

Następnie w każdej rundzie sprawdzamy, czy gracz może wygrać w kolejnym ruchu.

int checkOponent()

{ if(tablica[0]==1 && tablica[1]==1 && tablica[2]==0) return 2; else if(tablica[0]==1 && tablica[1]==0 && tablica[2]==1) return 1; else if (tablica[1]==1 && tablica [2]==1 && tablica[0]==0) return 0; else if (tablica[3]==1 && tablica[4]==1 && tablica[5]==0) return 5; else if (tablica[4]==1 && tablica[5]==1&& tablica[3]==0) return 3; else if (tablica[3]==1 && tablica[4]==0&& tablica[5]==1) return 4; else if (tablica[1]==0 && tablica[4]==1&& tablica[7]==1) return 1; w przeciwnym razie zwróć 100; }

Jeśli tak, w większości przypadków blokujemy ten ruch. Nie blokujemy wszystkich ruchów, aby dać szansę wygranej ludzkiemu graczowi. Czy potrafisz znaleźć ruchy, które nie są blokowane? Po zablokowaniu ruchu gramy pozostały róg lub losowy ruch. Możesz przestudiować kod i łatwo zaimplementować własny, bezkonkurencyjny algorytm. Jak zawsze możesz znaleźć kod projektu dołączony do tej instrukcji.

UWAGA: Ponieważ Banggood oferuje ten sam wyświetlacz z dwoma różnymi sterownikami ekranu, jeśli powyższy kod nie działa, zmień funkcję initDisplay na następującą:

void initDisplay()

{ tft.reset(); tft.początek (0x9341); tft.setRotation(3); }

Krok 6: Ostatnie myśli i ulepszenia

Końcowe myśli i ulepszenia
Końcowe myśli i ulepszenia

Jak widać, nawet z Arduino Uno możemy zbudować bezkonkurencyjny algorytm dla prostych gier. Ten projekt jest świetny, ponieważ jest łatwy do zbudowania, a jednocześnie jest świetnym wprowadzeniem do sztucznej inteligencji i programowania gier. W przyszłości spróbuję zbudować bardziej zaawansowane projekty ze sztuczną inteligencją, używając mocniejszego Raspberry Pi, więc bądźcie czujni! Chętnie poznam Twoją opinię na temat tego projektu.

Opublikuj swoje komentarze poniżej i nie zapomnij polubić instrukcji, jeśli uznasz ją za interesującą. Dziękuję!

Zalecana: