Isi kandungan:

Permainan Arduino Touch Tic Tac Toe: 6 Langkah (dengan Gambar)
Permainan Arduino Touch Tic Tac Toe: 6 Langkah (dengan Gambar)

Video: Permainan Arduino Touch Tic Tac Toe: 6 Langkah (dengan Gambar)

Video: Permainan Arduino Touch Tic Tac Toe: 6 Langkah (dengan Gambar)
Video: Biggest! Arduino Game - Sensor based Tic-Tac-Toe using Arduino mega 2024, Jun
Anonim
Image
Image
Permainan Arduino Touch Tic Tac Toe
Permainan Arduino Touch Tic Tac Toe
Permainan Arduino Touch Tic Tac Toe
Permainan Arduino Touch Tic Tac Toe
Permainan Arduino Touch Tic Tac Toe
Permainan Arduino Touch Tic Tac Toe

Rakan-rakan yang terhormat selamat datang ke tutorial Arduino yang lain! Dalam tutorial terperinci ini kita akan membina permainan Arduino Tic Tac Toe. Seperti yang anda lihat, kami menggunakan skrin sentuh dan bermain dengan komputer. Permainan sederhana seperti Tic Tac Toe adalah pengenalan yang baik untuk pengaturcaraan permainan dan Kecerdasan Buatan. Walaupun kami tidak akan menggunakan Algoritma Kecerdasan Buatan dalam permainan ini, kami akan memahami mengapa Algoritma Kecerdasan Buatan diperlukan dalam permainan yang lebih kompleks.

Membangunkan permainan untuk Arduino tidak mudah dan memerlukan banyak masa. Tetapi kita boleh membina beberapa permainan mudah untuk Arduino kerana ia menyeronokkan dan ini akan membolehkan kita meneroka beberapa topik pengaturcaraan yang lebih maju, seperti kecerdasan buatan. Ini adalah pengalaman belajar yang hebat dan pada akhirnya anda akan mempunyai permainan yang bagus untuk anak-anak!

Mari buat projek ini sekarang.

Langkah 1: Dapatkan Semua Bahagian

Image
Image
2.8
2.8

Bahagian yang diperlukan untuk membina projek ini adalah seperti berikut:

Arduino Uno ▶

Skrin Sentuh 2.8 "▶

Kos projek ini sangat rendah. Ia hanya 15 $

Sebelum cuba membina projek ini, sila tonton video yang telah saya siapkan mengenai paparan sentuhan. Saya telah melampirkannya dalam arahan ini. Ini akan membantu anda memahami kod tersebut, dan menentukurkan skrin sentuh.

Langkah 2: Paparan Warna Sentuh 2.8 "untuk Arduino

Image
Image
2.8
2.8
2.8
2.8

Saya menemui skrin sentuh ini di banggood.com dan memutuskan untuk membelinya untuk mencuba menggunakannya dalam beberapa projek saya. Seperti yang anda lihat paparannya murah, harganya sekitar $ 11.

Dapatkannya di sini ▶

Paparannya menawarkan resolusi 320x240 piksel dan ia hadir sebagai pelindung yang menjadikan hubungan dengan Arduino sangat mudah. Seperti yang anda lihat, paparan menggunakan hampir semua pin digital dan analog Arduino Uno. Semasa menggunakan perisai ini, kita hanya mempunyai 2 pin digital dan 1 pin analog untuk projek kita. Nasib baik, paparannya berfungsi dengan baik dengan Arduino Mega juga, jadi apabila kita memerlukan lebih banyak pin, kita dapat menggunakan Arduino Mega dan bukan Arduino Uno. Sayangnya paparan ini tidak berfungsi dengan papan Arduino Due atau Wemos D1 ESP8266. Kelebihan lain dari perisai ialah ia menawarkan slot micro SD yang sangat mudah digunakan.

Langkah 3: Membangun Projek dan Mengujinya

Membangun Projek dan Mengujinya
Membangun Projek dan Mengujinya
Membangun Projek dan Mengujinya
Membangun Projek dan Mengujinya
Membangun Projek dan Mengujinya
Membangun Projek dan Mengujinya

Setelah menyambungkan skrin ke Arduino Uno, kami dapat memuatkan kodnya dan kami siap bermain.

Pada mulanya, kami menekan butang "Start Game" dan permainan dimulakan. Arduino bermain terlebih dahulu. Kita kemudian boleh memainkan langkah kita hanya dengan menyentuh skrin. Arduino kemudian memainkan gerakannya dan seterusnya. Pemain yang berjaya meletakkan tiga markah mereka dalam barisan mendatar, menegak, atau pepenjuru memenangi permainan. Apabila permainan selesai, skrin Game Over muncul. Kita kemudian boleh menekan butang main lagi untuk memulakan permainan semula.

Arduino sangat bagus dalam permainan ini. Ini akan memenangi sebahagian besar permainan, atau jika anda pemain yang sangat baik, permainan akan berakhir seri. Saya sengaja merancang algoritma ini untuk membuat beberapa kesilapan untuk memberi peluang kepada pemain manusia untuk menang. Dengan menambahkan dua baris lagi pada kod permainan, kita dapat menjadikan Arduino mustahil untuk kehilangan permainan. Tetapi bagaimana cip 2 $, CPU Arduino, dapat mengalahkan otak manusia? Adakah program yang kita bangunkan lebih pintar daripada otak manusia?

Langkah 4: Algoritma Permainan

Algoritma Permainan
Algoritma Permainan
Algoritma Permainan
Algoritma Permainan

Untuk menjawab soalan ini, mari kita lihat algoritma yang telah saya laksanakan.

Komputer sentiasa dimainkan terlebih dahulu. Keputusan ini sahaja, menjadikan permainan lebih mudah bagi Arduino untuk menang. Langkah pertama selalu menjadi sudut. Langkah kedua untuk Arduino juga merupakan sudut rawak dari yang lain tanpa mempedulikan pemain bergerak sama sekali. Mulai saat ini, Arduino terlebih dahulu memeriksa sama ada pemain boleh menang dalam gerakan seterusnya dan menyekat pergerakan itu. Sekiranya pemain tidak dapat menang dalam satu gerakan, ia akan melakukan gerakan sudut jika tersedia atau satu rawak dari yang lain. Itu sahaja, algoritma mudah ini dapat mengalahkan pemain manusia setiap kali atau pada senario terburuk permainan akan menghasilkan seri. Ini bukan algoritma permainan tic tac toe terbaik, tetapi salah satu yang paling mudah.

Algoritma ini dapat dilaksanakan di Arduino dengan mudah, kerana permainan Tic Tac Toe sangat mudah, dan kita dapat menganalisisnya dan menyelesaikannya dengan mudah. Sekiranya kita merancang pokok permainan, kita dapat menemui beberapa strategi kemenangan dan menerapkannya dengan mudah dalam kod atau kita membiarkan CPU menghitung pohon permainan dalam waktu nyata dan memilih langkah terbaik dengan sendirinya. Sudah tentu, algoritma yang kami gunakan dalam permainan ini sangat mudah, kerana permainan ini sangat mudah. Sekiranya kita cuba merancang algoritma yang berjaya untuk catur, walaupun kita menggunakan komputer terpantas, kita tidak dapat mengira pokok permainan dalam seribu tahun! Untuk permainan seperti ini, kita memerlukan pendekatan lain, kita memerlukan beberapa algoritma Kecerdasan Buatan dan tentunya kekuatan pemprosesan yang besar. Lebih lanjut mengenai ini dalam video akan datang.

Langkah 5: Kod Projek

Kod Projek
Kod Projek

Mari kita lihat kod projek dengan cepat. Kami memerlukan tiga perpustakaan agar kod dapat disusun.

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. Skrin sentuh:

Seperti yang anda lihat, walaupun permainan sederhana seperti ini, memerlukan lebih daripada 600 baris kod. Kodnya rumit, jadi saya tidak akan cuba menerangkannya dalam tutorial ringkas. Saya akan menunjukkan kepada anda pelaksanaan algoritma untuk pergerakan Arduino.

Pada mulanya, kami bermain dua penjuru rawak.

<int firstMoves = {0, 2, 6, 8}; // akan menggunakan kedudukan ini terlebih dahulu untuk (counter = 0; counter <4; counter ++) // Hitung pergerakan pertama yang dimainkan {if (board [firstMoves [counter]! = 0) // Langkah pertama dimainkan oleh seseorang {movePlayed ++; }} lakukan {if (bergerak <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; jika (papan [c] == 0) {kelewatan (1000); papan [c] = 2; Serial.print (firstMoves [randomMove]); Bersiri.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}

Seterusnya, pada setiap pusingan kami memeriksa apakah pemain boleh menang dalam langkah seterusnya.

int checkOpponent ()

{if (papan [0] == 1 && papan [1] == 1 && papan [2] == 0) pulangkan 2; jika tidak (papan [0] == 1 && papan [1] == 0 && papan [2] == 1) pulangkan 1; lain jika (papan [1] == 1 && papan [2] == 1 && papan [0] == 0) pulangkan 0; jika tidak (papan [3] == 1 && papan [4] == 1 && papan [5] == 0) pulangkan 5; jika tidak (papan [4] == 1 && papan [5] == 1 && papan [3] == 0) pulangkan 3; lain jika (papan [3] == 1 && papan [4] == 0 && papan [5] == 1) pulangkan 4; jika tidak (papan [1] == 0 && papan [4] == 1 && papan [7] == 1) pulangkan 1; lain pulangkan 100; }

Sekiranya ya, kami menyekat langkah tersebut. Kami tidak menghalang semua pergerakan untuk memberi peluang kepada pemain manusia untuk menang. Bolehkah anda mencari pergerakan mana yang tidak disekat? Setelah menyekat pergerakan, kami memainkan baki sudut, atau gerakan rawak. Anda boleh mempelajari kodnya, dan melaksanakan algoritma anda yang tidak dapat dikalahkan dengan mudah. Seperti biasa anda boleh mendapatkan kod projek yang dilampirkan pada arahan ini.

CATATAN: Oleh kerana Banggood menawarkan paparan yang sama dengan dua pemacu paparan yang berbeza, jika kod di atas tidak berfungsi, ubah fungsi initDisplay kepada yang berikut:

batal init Paparan ()

{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }

Langkah 6: Pemikiran dan Penambahbaikan Akhir

Pemikiran dan Penambahbaikan Akhir
Pemikiran dan Penambahbaikan Akhir

Seperti yang anda lihat, walaupun dengan Arduino Uno, kami dapat membina algoritma yang tidak dapat dikalahkan untuk permainan sederhana. Projek ini bagus, kerana senang dibina, dan pada masa yang sama pengenalan hebat untuk kecerdasan buatan dan pengaturcaraan permainan. Saya akan cuba membina beberapa projek yang lebih maju dengan Artificial Intelligence pada masa akan datang dengan menggunakan Raspberry Pi yang lebih hebat, jadi nantikan! Saya ingin mendengar pendapat anda mengenai projek ini.

Sila hantarkan komen anda di bawah dan jangan lupa menyukai arahan sekiranya anda menarik. Terima kasih!

Disyorkan: