Daftar Isi:

Membuat Ulang Game Tersulit di Dunia di Arduino: 7 Langkah
Membuat Ulang Game Tersulit di Dunia di Arduino: 7 Langkah

Video: Membuat Ulang Game Tersulit di Dunia di Arduino: 7 Langkah

Video: Membuat Ulang Game Tersulit di Dunia di Arduino: 7 Langkah
Video: 5 Bahasa pemrograman tersulit didunia ๐Ÿ˜ฑ๐Ÿ˜ฑ 2024, Juli
Anonim
Image
Image

Proyek ini didasarkan pada permainan komputer yang dapat Anda temukan secara online. Namanya adalah, "Game Tersulit di Dunia." Saya dapat membuatnya kembali di Arduino menggunakan Matriks LED empat modul. Dalam instruksi ini saya mengajari Anda cara membangunnya sendiri. Sebelum kita membahas terlalu banyak detail, saya ingin memberikan gambaran singkat tentang langkah-langkah yang saya lalui untuk membuat game ini.

  1. Saya mengumpulkan semua bagian yang dibutuhkan.
  2. Saya menghubungkan bagian-bagian itu bersama-sama.
  3. Saya menulis sketsa yang menggunakan joystick untuk memindahkan LED pemain di semua modul.
  4. Saya merancang rintangan pertama dan menambahkannya ke sketsa sehingga mereka meniru Game Tersulit di Dunia.
  5. Saya kemudian menambahkan kode untuk mendeteksi tabrakan dengan rintangan, yang akan memulai kembali permainan.
  6. Dan kemudian saya merancang dua tingkat rintangan lagi.

Langkah 1: Semua Bagian

Semua Bagian
Semua Bagian
Semua Bagian
Semua Bagian

Berikut adalah daftar semua bagian yang Anda butuhkan:

  1. Konektor Arduino UNO dan usb:
  2. Empat modul 8x8: Matriks LED
  3. Joystick:
  4. 10 kabel pria ke wanita:

Langkah 2: Cara Menghubungkan Bagian ke Arduino

Bagaimana Menghubungkan Bagian ke Arduino
Bagaimana Menghubungkan Bagian ke Arduino

Cara Menghubungkan Matriks LED ke Arduino

  1. GND pergi ke GND
  2. VCC pergi ke 5V
  3. DataIn masuk ke pin digital 12
  4. CLK masuk ke pin digital 11
  5. CS atau LOAD masuk ke pin digital 10

Bagaimana Menghubungkan joystick

  1. GND pergi ke GND
  2. 5V menjadi 5V
  3. VRx menuju ke pin analog A0
  4. Vry menuju ke pin analog A1
  5. SW tidak digunakan

Baterai terhubung ke jack 9v untuk memberikan kekuatan Arduino

Langkah 3: Diagram Alir Program

Diagram Alir Program
Diagram Alir Program

Oval menunjukkan awal dari program.

Langkah pertama adalah mendefinisikan semua hambatan.

Dua langkah berikutnya menunjukkan pengaturan variabel dan menyalakan semua modul.

Langkah selanjutnya, adalah mengatur LED ke level pertama dan variabel lainnya.

Selanjutnya tampilkan level pemain saat ini.

Belah ketupat menunjukkan membaca Joystick untuk melihat ke arah mana ia didorong.

Kemudian gerakkan pemain ke arah mana pun Joystick didorong.

Periksa dan lihat apakah pemain bertabrakan dengan rintangan.

Jika pemain menabrak rintangan, kembali ke level pertama. Jika tidak, periksa untuk melihat apakah pemain mencapai akhir level.

Jika pemain berada di akhir level, setel ke level berikutnya lalu kembali ke, "Tampilkan Level Saat Ini.". Jika mereka tidak di akhir, pindahkan rintangan dan kembali ke, "Baca Joystick."

Langkah 4: Memprogram Joystick

Tentu saja untuk memindahkan titik kecil yaitu pemain, kita membutuhkan joystick. dan untuk memungkinkan joystick benar-benar menggerakkan pemutar, kita perlu mengkodekannya di Arduino IDE. Anda perlu menyertakan perpustakaan LedControl yang dapat Anda temukan dengan masuk ke menu sketsa> Sertakan Perpustakaan> kelola perpustakaan, dan cari LedControl. Berikut adalah tampilan kode untuk joystick.

#sertakan "LedControl.h"

int DataIn = 12; int CLK = 11; int DIN = 10; LedControl lc=LedControl(DataIn, CLK, DIN, 4); //Membuat objek untuk empat modul int delaytime = 50; //kecepatan permainan berjalan int joystick_RtLt, joystick_UpDn; int pemain_x = 0; //posisi horizontal pemain dari 0 hingga 31 int players_y = 3; //posisi vertikal pemain dari 0 hingga 7 int baris, kolom, modul; void setup() { initialize_modules(); //hidupkan dan setel keempat modul led } void loop() { move_player(); //mulai loop dengan memeriksa apakah pemain bergerak delay(delaytime); } void initialize_modules(){ lc.shutdown(0, false); // menjalankan modul 0 lc.setIntensity(0, 1); lc.shutdown(1, salah); // menjalankan modul 1 lc.setIntensity(1, 1); lc.shutdown(2, salah); // menjalankan modul 2 lc.setIntensity(2, 1); lc.shutdown(3, salah); // menjalankan modul 3 lc.setIntensity(3, 1); lc.clearDisplay(0); // mengosongkan modul 0 } void move_player(){ module = players_x/8; //menentukan modul mana pemain berada di kolom = pemain_x%8; //mendefinisikan kolom tempat pemain berada pada baris modul = pemain_y; lc.setLed(modul, baris, kolom, salah); //matikan led pada posisi pemain saat ini joystick_RtLt = analogRead(A0)/204 - 2; //membaca X-joystick dan rentang peta dari 2 hingga -2 if(joystick_RtLt > 0) //ketika joystick berada di sebelah kanan player_x++; //ke kanan lagi if(joystick_RtLt 0) //jika joystick ke kiri dan bukan di awal player_x--; //gerak ke kiri joystick_UpDn = analogRead(A1)/204 - 2; //baca Y-joystick dan rentang peta dari 2 hingga -2 if(joystick_UpDn 0) //jika joystick turun dan pemain tidak di bawah player_y--; //bergerak ke bawah jika(joystick_UpDn > 0 && player_y < 7) //jika joystick naik dan pemain tidak berada di atas player_y++; //naik modul = pemain_x/8; //set modul ke pemain kolom posisi baru = pemain_x%8; //set kolom ke pemain posisi baru baris = pemain_y; //set baris ke posisi pemain baru lc.setLed(module, row, column, true); //nyalakan led di posisi baru pemain }

Sekarang setelah Anda menambahkan joystick, mari kita kerjakan rintangan pertama!

Langkah 5: Tingkat Pertama

Baiklah, sekarang saatnya masuk ke bagian utama programnya, yaitu hambatannya! Hambatan adalah apa yang benar-benar membuat ini, "Game Tersulit di Dunia." Jadi jika Anda ingin benar-benar memainkan game tersebut, Anda perlu menambahkan ini ke kode Anda:

byte rintangan[LEVELS][SCENES][COLUMNS][ROWS] = { //tiga level, 8 adegan, 8 kolom, 8 baris

{{{1, 1, 1, 1, 1, 1, 0, 0}, //tingkat pertama, adegan pertama {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1}, { 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //tingkat pertama, adegan kedua {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 1, 1, 1, 1 }, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //tingkat pertama, ketiga adegan {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 0, 0, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 1, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //pertama level, adegan keempat {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 1, 0, 0, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //tingkat pertama, adegan kelima {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{1, 0, 0, 1, 1, 1, 1, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, //tingkat pertama, adegan keenam {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, { 1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{0, 0, 1, 1, 1, 1, 1, 1}, //tingkat pertama, adegan ketujuh {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0 }, {1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}, {{0, 1, 1, 1, 1, 1, 1, 1}, //tingkat pertama, kedelapan adegan {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}}}, void setup() { initialize_modules(); // nyalakan dan setel keempat modul led start_level(0); void loop() { move_player(); //mulai loop dengan memeriksa apakah pemain bergerak if (collision()){ //memeriksa level collision = 0; //jika tabrakan benar, setel ulang level start_level(level); //restart game }else if(delay_count ==obstacle_delay){ //jika tidak ada tabrakan pindahkan rintangan setiap tunda moveobstacle(); delay_count = 0; }else delay_count++; tunda (waktu tunda); //delay menurut kecepatan permainan }

Dan itulah hambatan pertama! Jika Anda bosan dengan ini sebagai level pertama Anda, maka Anda selalu dapat mengubah byte, ingatlah bahwa Anda harus memiliki delapan adegan berbeda! Mari kita lanjutkan ke langkah berikutnya, deteksi tabrakan!

Langkah 6: Deteksi Tabrakan

Langkah ini adalah bagian penting lain dari permainan, tanpanya tidak akan ada banyak tantangan! Anda bisa menenun jalan Anda melalui rintangan tanpa konsekuensi apa pun! itu tidak akan sangat menyenangkan bukan? jadi mari buat game lebih menantang (dan lebih menghibur!) dengan menambahkan bagian program ini:

lingkaran kosong() {

pindah_pemain(); //mulai loop dengan memeriksa apakah pemain bergerak if (collision()){ //memeriksa level collision = 0; //jika tabrakan benar, setel ulang level start_level(level); //restart game }else if(delay_count ==obstacle_delay){ //jika tidak ada tabrakan pindahkan rintangan setiap tunda moveobstacle(); delay_count = 0; }else delay_count++; tunda (waktu tunda); //delay by speed of game } int collision(){ //memeriksa apakah pemain menabrak rintangan di scene module = players_x/8; kolom = pemain_x%8; baris = pemain_y; if(module > 0) if(obstacle[level][scene][column][row] == 1) //jika posisi pemain sama dengan obstacle return(1); //tabrakan terdeteksi return true return(0); //tidak ada tabrakan yang mengembalikan false }

Dan itu dia! sekarang Anda dapat menikmati permainan lebih banyak! Sekarang saya akan menunjukkan kepada Anda bagaimana memprogram dua level terakhir dari permainan! Anda hampir selesai dengan instruksi ini, dan saya yakin Anda siap untuk mencobanya!

Langkah 7: Dua Level Terakhir

Akan datang ke akhir instruksi, dua level terakhir ini adalah semua yang Anda butuhkan untuk menyelesaikan game ini. Maka Anda dapat mencobanya sendiri! ini kodenya:

byte rintangan[LEVELS][SCENES][COLUMNS][ROWS] = { //tingkat kedua dan ketiga, 8 adegan, 8 kolom, 8 baris

{{{1, 0, 0, 0, 0, 0, 0, 1}, //tingkat kedua, adegan pertama {0, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, { 0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 0}, {1, 0, 0, 0, 0, 0, 0, 1}}, {{1, 1, 0, 0, 0, 0, 0, 1}, //tingkat kedua, adegan kedua {0, 0, 1, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 0, 0, 0 }, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 0, 0, 0, 1, 1}}, {{0, 1, 0, 0, 0, 0, 0, 0}, //tingkat kedua, adegan ketiga {0, 0, 1, 1, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 1, 1, 1, 0}, {0, 1, 1, 1, 1, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {0, 1, 0, 0, 0, 1, 1, 0}, {0, 0, 0, 0, 0, 0, 1, 0}}, {{0, 0, 1, 0, 0, 0, 0, 0}, //tingkat kedua adegan keempat {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {0, 1, 1, 1, 1, 0, 1, 0}, {0, 1, 0, 1, 1, 1, 1, 0}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}}, {{0, 0, 0, 1, 0, 0, 0, 0}, //tingkat kedua, fif adegan ke {0, 0, 0, 0, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 1, 1, 0, 0, 1}, {1, 0, 0, 1, 1, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, // tingkat kedua, adegan keenam {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 1, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 1, 1}, {0, 0, 1, 0, 0, 1, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 1, 0, 0}, //tingkat kedua, adegan ketujuh {0, 0, 0, 0, 0, 1, 0, 0}, {1, 1, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 1, 1}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 0, 0, 1, 0}, //tingkat kedua adegan kedelapan {1, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 0, 1, 1, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 1, 1}, {0, 1, 0, 0, 0, 0, 0, 0}}}, {{{0, 1, 0, 0, 0, 0, 0, 1}, //tingkat ketiga, adegan pertama {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 0, 0} }, {{0, 0, 0, 0, 1, 0, 0, 1}, //tingkat ketiga, adegan kedua {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, //tingkat ketiga, adegan ketiga {0, 0, 0, 1, 0, 0, 1, 0}, { 0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, //tingkat ketiga, adegan keempat {1, 0, 0, 1, 0, 0, 1, 0 }, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, //tingkat ketiga, adegan kelima {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 0, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 1}, //tingkat ketiga, adegan keenam {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}, {{0, 1, 0, 0, 1, 0, 0, 1}, //tingkat ketiga, adegan ketujuh {0, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}}, {{0, 0, 0, 0, 1, 0, 0, 0}, //tingkat ketiga, adegan kedelapan { 1, 0, 0, 0, 0, 0, 1, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 1}, {1, 0, 0, 1, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 1, 0, 0, 0}, {1, 0, 0, 1, 0, 0, 1, 0}}} };

Dan itu saja! Anda siap untuk mencoba menyelesaikan Worlds Hardest Game. Juga kode Arduino lengkap terlampir di bawah ini.

Direkomendasikan: