Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Game Tic-Tac-Toe Arduino Touch

Komponen dan persediaan

Arduino UNO
× 1
2.8" Layar Sentuh
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

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 algoritme kecerdasan buatan apa pun dalam game ini, kami akan memahami mengapa algoritme 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

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

  • Arduino Uno
  • Layar Sentuh 2,8”

Biaya proyek sangat rendah. Ini hanya $15.

Sebelum mencoba membangun proyek ini, silakan tonton video yang telah saya siapkan tentang layar sentuh dengan mengklik kartu di sini. Ini akan membantu Anda memahami kode, dan mengkalibrasi layar sentuh.

Langkah 2:Layar Sentuh Warna 2,8" untuk Arduino

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 pelindung ini, kami hanya memiliki 2 pin digital dan 1 pin analog untuk proyek kami. Untungnya, tampilannya juga berfungsi dengan baik dengan Arduino Mega, 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. Keuntungan lain dari shield ini adalah ia menawarkan slot micro SD yang sangat mudah digunakan.

Langkah 3: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 memberikan pemain manusia kesempatan untuk menang. Dengan menambahkan dua baris lagi ke kode permainan, kita dapat membuat Arduino tidak mungkin kehilangan permainan. Tapi bagaimana bisa sebuah chip $2, CPU Arduino, mengalahkan otak manusia? Apakah program yang kami kembangkan lebih pintar dari otak manusia?

Langkah 4:Algoritma Game

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 algoritme 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 Kecerdasan Buatan dan tentu saja kekuatan pemrosesan yang sangat besar. Selengkapnya tentang ini di video mendatang.

Langkah 5:Kode Proyek

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

  • TFTLCD Adafruit yang Dimodifikasi
  • GFX Adafruit
  • 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 checkOpponent()
{ 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; lain jika (papan[4]==1 &&papan[5]==1&&papan[3]==0) kembali 3; else if (board[3]==1 &&board[4]==0&&board[5]==1) return 4; lain jika (papan[1]==0 &&papan[4]==1&&papan[7]==1) kembali 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 terlampir pada tutorial 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:

batalkan initDisplay(){tft.reset();tft.begin(0x9341);tft.setRotation(3);} 
graphics.c TicTacToeEasy.ino

Langkah 6:Pemikiran dan Perbaikan Terakhir

Seperti yang Anda lihat, bahkan dengan Arduino Uno, kami dapat membangun algoritme 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 tutorialnya jika menurut Anda menarik. Terima kasih!

Kode

  • Cuplikan kode #1
  • Cuplikan kode #2
Cuplikan kode #1Teks biasa

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; } }

Cuplikan kode #2Teks biasa

int checkOpponent()
{ 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; lain jika (papan[4]==1 &&papan[5]==1&&papan[3]==0) kembali 3; else if (board[3]==1 &&board[4]==0&&board[5]==1) return 4; lain jika (papan[1]==0 &&papan[4]==1&&papan[7]==1) kembali 1; jika tidak, kembalikan 100;}

Github
https://github.com/adafruit/Adafruit-GFX-Libraryhttps://github.com/adafruit/Adafruit-GFX-Library
Github
https://github.com/adafruit/Touch-Screen-Libraryhttps://github.com/adafruit/Touch-Screen-Library

Proses manufaktur

  1. Catur
  2. Game Arduino Gyroscope dengan MPU-6050
  3. Game Arduino Pong - Tampilan OLED
  4. Piano Sentuh Kapasitif Portabel
  5. Pengontrol Game Arduino
  6. Game Arduino Pong pada Matrix 24x16 dengan MAX7219
  7. Game Breakout Arduino Touch
  8. Giant Animatronics Lego Minfig Operation Game
  9. Game Pixel Chaser
  10. Game Dino otomatis menggunakan arduino