Daftar Isi:

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

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

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

Teman-teman, selamat datang di tutorial Arduino lainnya! Dalam tutorial terperinci ini kita akan membuat game Arduino Tic Tac Toe. Seperti yang Anda lihat, kami menggunakan layar sentuh dan kami bermain melawan komputer. Gim sederhana seperti Tic Tac Toe adalah pengantar yang bagus untuk pemrograman gim dan Kecerdasan Buatan. Meskipun kami tidak akan menggunakan Algoritma Kecerdasan Buatan dalam game ini, kami akan memahami mengapa Algoritma Kecerdasan Buatan diperlukan dalam permainan yang lebih kompleks.

Mengembangkan game untuk Arduino tidaklah mudah dan membutuhkan banyak waktu. Tetapi kita dapat membuat beberapa permainan sederhana untuk Arduino karena menyenangkan dan memungkinkan kita untuk menjelajahi beberapa topik pemrograman yang lebih maju, seperti Kecerdasan buatan. Ini adalah pengalaman belajar yang luar biasa dan pada akhirnya Anda akan memiliki permainan yang bagus untuk anak-anak!

Sekarang mari kita bangun proyek ini.

Langkah 1: Dapatkan Semua Bagian

Image
Image
2.8
2.8

Bagian-bagian yang diperlukan untuk membangun proyek ini adalah sebagai berikut:

Arduino Uno

Layar Sentuh 2,8”

Biaya proyek sangat rendah. Itu hanya 15$

Sebelum mencoba membangun proyek ini, silakan tonton video yang sudah saya siapkan tentang layar sentuh. Saya telah melampirkannya dalam instruksi ini. Ini akan membantu Anda memahami kode, dan mengkalibrasi layar sentuh.

Langkah 2: Layar Sentuh Warna 2.8" untuk Arduino

Image
Image
2.8
2.8
2.8
2.8

Saya menemukan layar sentuh ini di banggood.com dan memutuskan untuk membelinya untuk mencoba menggunakannya di beberapa proyek saya. Seperti yang Anda lihat, layarnya tidak mahal, harganya sekitar $ 11.

Dapatkan di sini

Layar menawarkan resolusi 320x240 piksel dan hadir sebagai pelindung yang membuat koneksi dengan Arduino sangat mudah. Seperti yang Anda lihat, layar menggunakan hampir semua pin digital dan analog Arduino Uno. Saat menggunakan perisai ini, kami hanya memiliki 2 pin digital dan 1 pin analog untuk proyek kami. Untungnya, tampilan berfungsi dengan baik dengan Arduino Mega juga, jadi ketika kita membutuhkan lebih banyak pin, kita dapat menggunakan Arduino Mega daripada Arduino Uno. Sayangnya tampilan ini tidak berfungsi dengan Arduino Due atau papan Wemos D1 ESP8266. Keunggulan lain dari shield ini adalah ia menawarkan slot micro SD yang sangat mudah digunakan.

Langkah 3: Membangun Proyek dan Mengujinya

Membangun Proyek dan Mengujinya
Membangun Proyek dan Mengujinya
Membangun Proyek dan Mengujinya
Membangun Proyek dan Mengujinya
Membangun Proyek dan Mengujinya
Membangun Proyek dan Mengujinya

Setelah menghubungkan layar ke Arduino Uno, kita dapat memuat kode dan kita siap untuk bermain.

Pada awalnya, kami menekan tombol "Mulai Game" dan permainan dimulai. Arduino bermain terlebih dahulu. Kami kemudian dapat memainkan gerakan kami hanya dengan menyentuh layar. Arduino kemudian memainkan gerakannya dan seterusnya. Pemain yang berhasil menempatkan tiga dari tanda mereka dalam baris horizontal, vertikal, atau diagonal memenangkan permainan. Saat permainan selesai, layar Game Over akan muncul. Kami kemudian dapat menekan tombol play lagi untuk memulai permainan lagi.

Arduino sangat bagus dalam permainan ini. Ini akan memenangkan sebagian besar permainan, atau jika Anda adalah pemain yang sangat baik, permainan akan berakhir seri. Saya sengaja merancang algoritma ini untuk membuat beberapa kesalahan untuk memberi pemain manusia kesempatan untuk menang. Dengan menambahkan dua baris lagi ke kode permainan, kita dapat membuat Arduino tidak mungkin kehilangan permainan. Tapi bagaimana bisa chip 2$, CPU Arduino, mengalahkan otak manusia? Apakah program yang kita kembangkan lebih pintar dari otak manusia?

Langkah 4: Algoritma Game

Algoritma Permainan
Algoritma Permainan
Algoritma Permainan
Algoritma Permainan

Untuk menjawab pertanyaan ini, mari kita lihat algoritma yang telah saya terapkan.

Komputer selalu bermain terlebih dahulu. Keputusan ini saja, membuat permainan lebih mudah bagi Arduino untuk menang. Langkah pertama selalu menyudutkan. Langkah kedua untuk Arduino juga merupakan sudut acak dari yang tersisa tanpa mempedulikan gerakan pemain sama sekali. Mulai saat ini, Arduino pertama-tama memeriksa apakah pemain bisa menang di langkah berikutnya dan memblokir gerakan itu. Jika pemain tidak bisa menang dalam satu gerakan, ia memainkan gerakan sudut jika tersedia atau gerakan acak dari yang tersisa. Itu saja, algoritma sederhana ini dapat mengalahkan pemain manusia setiap saat atau dalam skenario terburuk permainan akan menghasilkan seri. Ini bukan algoritma permainan tic tac toe terbaik, tetapi salah satu yang paling sederhana.

Algoritma ini dapat diimplementasikan di Arduino dengan mudah, karena permainan Tic Tac Toe sangat sederhana, dan kita dapat dengan mudah menganalisis dan menyelesaikannya. Jika kita merancang pohon permainan, kita dapat menemukan beberapa strategi kemenangan dan dengan mudah menerapkannya dalam kode atau kita dapat membiarkan CPU menghitung pohon permainan secara real time dan memilih langkah terbaik dengan sendirinya. Tentu saja, algoritma yang kami gunakan dalam game ini sangat sederhana, karena permainannya sangat sederhana. Jika kami mencoba merancang algoritme pemenang untuk catur, bahkan jika kami menggunakan komputer tercepat, kami tidak dapat menghitung pohon permainan dalam seribu tahun! Untuk game seperti ini, kami membutuhkan pendekatan lain, kami membutuhkan beberapa algoritma Artificial Intelligence dan tentu saja kekuatan pemrosesan yang sangat besar. Lebih lanjut tentang ini di video mendatang.

Langkah 5: Kode Proyek

Kode Proyek
Kode Proyek

Mari kita lihat sekilas kode proyek. Kami membutuhkan tiga perpustakaan agar kode dapat dikompilasi.

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

Seperti yang Anda lihat, bahkan permainan sederhana seperti ini, membutuhkan lebih dari 600 baris kode. Kodenya rumit, jadi saya tidak akan mencoba menjelaskannya dalam tutorial singkat. Saya akan menunjukkan kepada Anda implementasi algoritma untuk gerakan Arduino.

Pada awalnya, kami memainkan dua sudut acak.

<int firstMoves={0, 2, 6, 8}; // akan menggunakan posisi ini terlebih dahulu for(counter=0;counter<4;counter++) //Menghitung gerakan pertama yang dimainkan { if(board[firstMoves[counter]!=0) // Gerakan pertama dimainkan oleh seseorang { movePlayed++; } } lakukan{ if(bergerak<=2) { int randomMove =random(4); int c=firstMoves[randomMove]; if (papan[c]==0) { delay(1000); papan[c]=2; Serial.print(FirstMoves[randomMove]); Serial.println(); drawCpuMove(FirstMoves[randomMove]); b=1; } }

Selanjutnya, di setiap putaran kami memeriksa apakah pemain bisa menang di langkah selanjutnya.

int cekOpponent()

{ if(board[0]==1 && board[1]==1 && board[2]==0) return 2; else if(board[0]==1 && board[1]==0 && board[2]==1) return 1; else if (board[1]==1 && board [2]==1 && board[0]==0) return 0; else if (board[3]==1 && board[4]==1 && board[5]==0) return 5; else if (board[4]==1 && board[5]==1&& board[3]==0) return 3; else if (board[3]==1 && board[4]==0&& board[5]==1) return 4; else if (board[1]==0 && board[4]==1&& board[7]==1) return 1; jika tidak, kembalikan 100; }

Jika ya, kami memblokir gerakan itu, sebagian besar waktu. Kami tidak memblokir semua gerakan untuk memberi pemain manusia kesempatan untuk menang. Bisakah Anda menemukan gerakan mana yang tidak terhalang? Setelah memblokir langkah, kami memainkan sudut yang tersisa, atau gerakan acak. Anda dapat mempelajari kodenya, dan menerapkan algoritme Anda sendiri yang tidak ada duanya dengan mudah. Seperti biasa, Anda dapat menemukan kode proyek yang dilampirkan pada instruksi ini.

CATATAN: Karena Banggood menawarkan tampilan yang sama dengan dua driver tampilan yang berbeda, jika kode di atas tidak berfungsi, ubah fungsi initDisplay menjadi berikut:

batal initDisplay()

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

Langkah 6: Pemikiran dan Perbaikan Terakhir

Pemikiran dan Perbaikan Terakhir
Pemikiran dan Perbaikan Terakhir

Seperti yang Anda lihat, bahkan dengan Arduino Uno, kami dapat membangun algoritma yang tidak ada duanya untuk game sederhana. Proyek ini sangat bagus, karena mudah dibuat, dan pada saat yang sama merupakan pengantar yang bagus untuk Kecerdasan Buatan dan pemrograman game. Saya akan mencoba membangun beberapa proyek yang lebih maju dengan Kecerdasan Buatan di masa depan menggunakan Raspberry Pi yang lebih kuat, jadi pantau terus! Saya akan senang mendengar pendapat Anda tentang proyek ini.

Silakan kirim komentar Anda di bawah ini dan jangan lupa untuk menyukai instruksinya jika menurut Anda menarik. Terima kasih!

Direkomendasikan: