Isi kandungan:

Menciptakan semula Dunia Terberat di Arduino: 7 Langkah
Menciptakan semula Dunia Terberat di Arduino: 7 Langkah

Video: Menciptakan semula Dunia Terberat di Arduino: 7 Langkah

Video: Menciptakan semula Dunia Terberat di Arduino: 7 Langkah
Video: MERINDING😱 A.I INI MERAMALKAN EVOLUSI MANUSIA DI MASA DEPAN #shorts #fyp #evolusi #funfacts 2024, Julai
Anonim
Image
Image

Projek ini berdasarkan permainan komputer yang boleh anda temui dalam talian. Namanya adalah, "The Worlds Hardest Game." Saya dapat membuatnya semula di Arduino menggunakan Matrik LED empat modul. Dalam arahan ini saya mengajar anda bagaimana membuatnya sendiri. Sebelum kita melihat terlalu banyak butiran, saya ingin memberikan gambaran ringkas mengenai langkah-langkah yang saya lalui untuk membuat permainan ini.

  1. Saya mengumpulkan semua bahagian yang diperlukan.
  2. Saya menyambungkan bahagiannya.
  3. Saya menulis lakaran yang menggunakan kayu bedik untuk menggerakkan LED pemain di semua modul.
  4. Saya merancang rintangan pertama dan menambahkannya ke dalam lakaran sehingga mereka meniru Worlds Hardest Game.
  5. Saya kemudian menambahkan kod untuk mengesan pertembungan dengan rintangan, yang akan memulakan semula permainan.
  6. Dan kemudian saya merancang dua tahap halangan lagi.

Langkah 1: Semua Bahagian

Semua Bahagian
Semua Bahagian
Semua Bahagian
Semua Bahagian

Berikut adalah senarai semua bahagian yang anda perlukan:

  1. Penyambung Arduino UNO dan usb:
  2. A empat modul 8x8: Matrik LED
  3. Joystick:
  4. 10 wayar lelaki hingga wanita:

Langkah 2: Cara Menghubungkan Bahagian ke Arduino

Cara Menghubungkan Bahagian ke Arduino
Cara Menghubungkan Bahagian ke Arduino

Cara Menghubungkan Matriks LED ke Arduino

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

Cara Menghubungkan kayu bedik

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

Bateri menyambung ke bicu 9v untuk memberi kuasa Arduino

Langkah 3: Carta Aliran Program

Carta Aliran Program
Carta Aliran Program

Oval menunjukkan permulaan program.

Langkah pertama adalah menentukan semua halangan.

Dua langkah seterusnya menunjukkan menetapkan pemboleh ubah dan menghidupkan semua modul.

Langkah seterusnya, adalah menetapkan LED ke tahap pertama dan pemboleh ubah lain.

Seterusnya paparkan tahap di mana pemain berada.

Rombus menunjukkan membaca Joystick untuk melihat arah mana ia ditolak.

Kemudian gerakkan pemain ke arah mana pun Joystick ditolak.

Periksa dan lihat apakah pemain bertembung dengan halangan.

Sekiranya pemain melanda halangan, kembali ke tahap pertama. Sekiranya tidak, periksa untuk melihat apakah pemain mencapai tahap akhir.

Sekiranya pemain berada di hujung tahap, tetapkan ke tahap seterusnya kemudian kembali ke, "Paparkan Tahap Semasa.". Sekiranya mereka tidak berada di penghujungnya, pindahkan halangan dan kembali ke, "Baca Joystick."

Langkah 4: Memprogram Joystick

Sudah tentu untuk memindahkan titik kecil yang menjadi pemain, kita memerlukan kayu bedik. dan untuk membolehkan kayu bedik benar-benar menggerakkan pemain, kita perlu mengekodkannya di Arduino IDE. Anda perlu memasukkan pustaka LedControl yang dapat anda temukan dengan pergi ke menu lakaran> Sertakan Perpustakaan> uruskan perpustakaan, dan cari LedControl. Inilah kod untuk kayu bedik itu.

#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; // kelajuan di mana permainan berjalan int joystick_RtLt, joystick_UpDn; pemain int_x = 0; // kedudukan mendatar pemain dari 0 hingga 31 pemain int_y = 3; // kedudukan menegak pemain dari 0 hingga 7 int baris, lajur, modul; kekosongan persediaan () {initialize_modules (); // hidupkan dan tetapkan keempat-empat modul led} gelung void () {move_player (); // memulakan gelung dengan memeriksa sama ada pemain bergerak kelewatan (waktu tunda); } batal initialize_modules () {lc.shutdown (0, false); // memulakan modul 0 lc.setIntensity (0, 1); lc.shutdown (1, salah); // memulakan modul 1 lc.setIntensity (1, 1); lc.shutdown (2, salah); // memulakan modul 2 lc.setIntensity (2, 1); lc.shutdown (3, salah); // memulakan modul 3 lc.setIntensity (3, 1); lc.clearDisplay (0); // membersihkan modul 0} void move_player () {module = players_x / 8; // menentukan modul mana pemain berada di ruangan = players_x% 8; // mentakrifkan lajur di mana pemain berada di baris modul = players_y; lc.setLed (modul, baris, lajur, salah); // matikan dipimpin pada posisi semasa pemain joystick_RtLt = analogRead (A0) / 204 - 2; // baca X-joystick dan peta berkisar antara 2 hingga -2 jika (joystick_RtLt> 0) // ketika joystick berada pada pemain yang betul_x ++; // ke kanan lain jika (joystick_RtLt 0) // jika joystick berada di sebelah kiri dan bukan pada permulaan pemain_x--; // gerakkan joystick kiri_UpDn = analogRead (A1) / 204 - 2; // baca Y-joystick dan peta berkisar antara 2 hingga -2 jika (joystick_UpDn 0) // jika joystick turun dan pemain tidak berada di bawah pemain_y--; // turun ke bawah jika (joystick_UpDn> 0 && players_y <7) // jika joystick naik dan pemain tidak berada di pemain teratas_y ++; // naik modul = players_x / 8; // tetapkan modul kepada pemain lajur kedudukan baru = players_x% 8; // tetapkan lajur kepada pemain baris kedudukan baru = players_y; // tetapkan baris ke pemain kedudukan baru lc.setLed (modul, baris, lajur, benar); // hidupkan dipimpin pada kedudukan baru pemain}

Sekarang setelah anda menambah kayu bedik mari kita atasi halangan pertama!

Langkah 5: Tahap Pertama

Baiklah, jadi sekarang tiba masanya untuk masuk ke bahagian utama program, halangan! Rintangan adalah apa yang menjadikannya ini, "Permainan Terberat di Dunia." Oleh itu, jika anda ingin benar-benar bermain permainan, anda perlu menambahkannya ke kod anda:

halangan bait [TINGKAT] [SCENES] [COLUMNS] [ROWS] = {// tiga peringkat, 8 pemandangan, 8 kolum, 8 baris

{{{1, 1, 1, 1, 1, 1, 0, 0}, // tahap pertama, pemandangan 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, 0}}, {{1, 1, 1, 1, 1, 0, 0, 1}, {0, 0, 0, 0, 0, 0, 0, 0}, // tahap pertama, pemandangan kedua {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}, {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 pemandangan {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 tahap, pemandangan 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}, // tahap pertama, pemandangan 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}, // tahap pertama, pemandangan 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}, // tahap pertama, pemandangan 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, 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}}, {{0, 1, 1, 1, 1, 1, 1, 1}, // tingkat pertama, kelapan pemandangan {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,}}}, batal persediaan () {initialize_modules (); // hidupkan dan tetapkan keempat modul led_level (0); gelung kosong () {move_player (); // gelung permulaan dengan memeriksa apakah pemain bergerak jika (perlanggaran ()) {// periksa tahap perlanggaran = 0; // jika berlaku perlanggaran, tetapkan semula tahap start_level (level); // mulakan semula permainan} lain jika (delay_count == obstacle_delay) {// jika tiada perlanggaran bergerak halangan setiap kelewatan bergerak lain (); kelewatan_kira = 0; } lain lambat_kira ++; kelewatan (waktu tunda); // kelewatan mengikut kelajuan permainan}

Dan itulah halangan pertama! Sekiranya anda bosan dengan ini sebagai tahap pertama anda, maka anda sentiasa boleh menukar bait, ingat bahawa anda perlu mempunyai lapan pemandangan yang berbeza! Mari teruskan ke langkah seterusnya, pengesanan perlanggaran!

Langkah 6: Pengesanan Perlanggaran

Langkah ini adalah bahagian penting lain dari permainan, tanpa di dalamnya tidak akan ada banyak cabaran! anda boleh menenun rintangan tanpa akibat! itu tidak akan menyenangkan, bukan? jadi mari menjadikan permainan lebih mencabar (dan lebih menghiburkan!) dengan menambahkan bahagian program ini:

gelung kosong () {

move_player (); // gelung permulaan dengan memeriksa apakah pemain bergerak jika (perlanggaran ()) {// periksa tahap perlanggaran = 0; // jika berlaku perlanggaran, tetapkan semula tahap start_level (level); // mulakan semula permainan} lain jika (delay_count == obstacle_delay) {// jika tiada perlanggaran bergerak halangan setiap kelewatan bergerak lain (); kelewatan_kira = 0; } lain lambat_kira ++; kelewatan (waktu tunda); // kelewatan dengan kelajuan permainan} perlanggaran int () {// periksa sama ada pemain mengalami halangan dalam modul pemandangan = players_x / 8; lajur = pemain_x% 8; baris = pemain_y; if (modul> 0) if (halangan [tahap] [pemandangan] [lajur] [baris] == 1) // jika kedudukan pemain sama dengan halangan kembali (1); // perlanggaran dikesan pulangan benar kembali (0); // tiada pelanggaran kembali palsu}

Dan di sana anda pergi! sekarang anda boleh menikmati permainan lebih banyak lagi! Sekarang saya akan menunjukkan kepada anda cara memprogram dua peringkat terakhir permainan! anda hampir selesai dengan arahan ini, dan saya yakin anda sudah bersedia untuk mencubanya!

Langkah 7: Dua Tahap Terakhir

Menjelang akhir arahan, dua tahap terakhir ini adalah semua yang anda perlukan untuk menyelesaikan permainan ini. Maka anda boleh mencubanya sendiri! berikut adalah kodnya:

rintangan bait [TINGKAT] [SCENES] [COLUMNS] [ROWS] = {// tahap kedua dan ketiga, 8 pemandangan, 8 lajur, 8 baris

{{{1, 0, 0, 0, 0, 0, 0, 1}, // tahap kedua, pemandangan 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, // tahap kedua, pemandangan 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}, // tahap kedua, pemandangan 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}, // adegan keempat tahap kedua {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}, // tahap kedua, lima pemandangan {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}, // tahap kedua, pemandangan 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}, // tahap kedua, pemandangan 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, 0, 1, 0}, // adegan kelapan tahap kedua {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}, // tahap ketiga, pemandangan 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}, // tahap ketiga, pemandangan 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}, // tahap ketiga, pemandangan 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}, // tahap ketiga, pemandangan 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}, // tahap ketiga, pemandangan 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, pemandangan 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}, // tahap ketiga, pemandangan 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}, // tahap ketiga, pemandangan kelapan { 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 sahaja! anda sudah bersedia untuk menyelesaikan Game Dunia Terberat. Juga kod Arduino penuh dilampirkan di bawah.

Disyorkan: