Mục lục:

Trò chơi Arduino Space Rocks: 3 bước
Trò chơi Arduino Space Rocks: 3 bước

Video: Trò chơi Arduino Space Rocks: 3 bước

Video: Trò chơi Arduino Space Rocks: 3 bước
Video: ChatGPT with Arduino Nano #arduino #chatgpt #technology #openAI #electronic 2024, Tháng bảy
Anonim
Trò chơi Arduino Space Rocks
Trò chơi Arduino Space Rocks

Cho dù chúng được chơi trên máy tính, trên điện thoại, trên bảng điều khiển trò chơi hay trên một hộp độc lập, rất nhiều trò chơi điện tử bao gồm yếu tố tránh chướng ngại vật. Chắc chắn, có thể có điểm thưởng khi thu thập mã thông báo hoặc tìm đường qua mê cung, nhưng hãy yên tâm rằng có thể có thứ gì đó trong trò chơi với mục đích duy nhất là ngăn bạn làm điều đó. Trò chơi điện tử đầu tiên là Pong, nhưng sau đó những trò chơi phổ biến nhất là những trò như “Tiểu hành tinh” hoặc “Pac-Man”. Một biến thể gần đây hơn sẽ là trò chơi đơn giản nhưng gây nghiện “Flappy Birds”.

Gần đây, tôi thấy ai đó đã tạo một phiên bản “Flappy Bird” hai cấp đơn giản được phát trên một màn hình LCD 1602 thông thường. Tôi nghĩ rằng đó sẽ là một cái gì đó mà các cháu gái có thể thích nên tôi quyết định thực hiện biến thể của riêng mình từ đầu. Phiên bản 1602 chỉ có hai cấp độ nên tôi quyết định sử dụng màn hình LCD 2004 (20x4) để tăng độ khó một chút. Tôi cũng chọn làm cho nó giống “Tiểu hành tinh” hơn bằng cách để người chơi hướng dẫn “con tàu” qua mê cung “đá không gian”. Ngay cả khi bạn không quan tâm đến việc xây dựng trò chơi, có thể có một số yếu tố của phần mềm mà bạn có thể sử dụng trong một trong các dự án của riêng mình.

Bước 1: Phần cứng

Phần cứng
Phần cứng
Phần cứng
Phần cứng
Phần cứng
Phần cứng

Phần cứng có thể dựa trên khá nhiều phiên bản Arduino. Tôi đã tạo mẫu bằng Nano và sau đó ghi mã vào chip ATMega328. Đó là cùng một con chip được sử dụng trong Nano nhưng việc sử dụng nó cho phép tạo ra một cấu trúc nhỏ gọn hơn và tiêu thụ ít điện năng hơn. Như bạn có thể thấy, tôi đã xây dựng mạch trên một bảng mạch nhỏ gắn trên mô-đun LCD. Một khía cạnh khác khác là Nano chạy ở tốc độ 16 MHz sử dụng tinh thể bên ngoài nhưng tôi đã chọn sử dụng bộ dao động 8 MHz tích hợp cho chip ATMega328. Điều đó giúp tiết kiệm các bộ phận và điện năng.

Màn hình LCD 2004 giao tiếp với Arduino theo cách giống như màn hình LCD 1602. Một sự khác biệt thú vị là ở địa chỉ của các vị trí hiển thị. Rõ ràng là có sự khác biệt bởi vì có bốn dòng thay vì hai, nhưng vào năm 2004, dòng thứ ba là phần mở rộng của dòng đầu tiên và dòng thứ tư là phần mở rộng của dòng thứ hai. Nói cách khác, nếu bạn có một chương trình thử nghiệm vừa gửi một chuỗi ký tự đến màn hình LCD, ký tự thứ 21 sẽ hiển thị ở đầu dòng thứ ba và ký tự thứ 41 sẽ quay trở lại đầu dòng đầu tiên. Tôi sử dụng đặc tính đó trong phần mềm để tăng gấp đôi chiều dài của mê cung một cách hiệu quả.

Tôi quyết định cung cấp pin cho phiên bản của mình nên tôi đã sử dụng pin 18650 Li-ion, 3,6 volt thông thường. Điều đó yêu cầu tôi phải thêm một bảng nhỏ để cho phép sạc USB và một bảng nhỏ khác để tăng điện áp pin lên 5 volt cho màn hình LCD và chip ATMega. Các hình ảnh cho thấy các mô-đun tôi đã sử dụng nhưng cũng có những mô-đun tất cả trong một thực hiện cả hai chức năng.

Bước 2: Phần mềm

Phần mềm này giống nhau cho cả chip Nano và ATMega328. Sự khác biệt duy nhất là trong phương pháp lập trình. Tôi sử dụng phiên bản phần mềm LCD 1602 của riêng mình và phần mềm LCD trong dự án này dựa trên đó. Tôi đã cần thêm các khả năng để giải quyết các dòng thừa của màn hình 2004 và cũng thêm các quy trình để thay đổi màn hình. Sự thay đổi hiển thị cung cấp hiệu ứng chuyển động của “những tảng đá” phía trước “con tàu”.

Như đã đề cập trước đó, dòng 1 và 3 tạo thành một hàng đợi tròn và dòng 2 và 4 cũng vậy. Điều đó có nghĩa là sau 20 ca làm việc, dòng 1 và 3 được đổi chỗ và dòng 2 và 4 được đổi chỗ. Sau 40 ca, các đường trở lại vị trí ban đầu. Do hành vi này, mê cung 20 ký tự ban đầu trở nên hoàn toàn khác khi các dòng hoán đổi. Điều đó khiến cuộc sống trở nên thú vị khi tôi cố gắng hình thành một mê cung. Cuối cùng, tôi chỉ cần mở một bảng tính Excel để tôi có thể lập biểu đồ đường dẫn mà không cần phải liên tục thay đổi phần mềm. Phần mềm được cung cấp ở đây có hai phiên bản của mê cung (một phiên bản được chú thích) để bạn có thể chọn cái nào bạn muốn hoặc tự trang điểm.

Ban đầu tôi muốn điều này đủ đơn giản để các cháu nhỏ có thể chơi nó, nhưng tôi cũng muốn nó có thêm một số thử thách nếu họ (hoặc ai đó) chơi quá giỏi. Trò chơi bắt đầu với tốc độ thay đổi được đặt ở 1 giây. Tốc độ tic nội bộ là 50ms, nghĩa là có 20 khoảng thời gian mà các nút lên / xuống có thể được nhấn. Trên thực tế, một nút được nhấn tiêu thụ 2 tic vì khoảng thời gian 50ms được sử dụng để phát hiện thao tác nhấn và khoảng thời gian 50ms khác được sử dụng để chờ nhả. Với mê cung mặc định, số lần nhấn tối đa cần thiết trước ca tiếp theo là ba. Cách đơn giản để tăng độ khó của trò chơi là rút ngắn thời gian giữa các ca để một vài dòng mã làm điều đó khi điểm số tăng lên. Tốc độ thay đổi được thiết lập để tăng tốc độ 50ms sau mỗi 20 ca làm việc, với tốc độ tối thiểu được giới hạn trong 500ms. Thật dễ dàng để thay đổi các thông số này.

Ngoài việc thay đổi tốc độ dịch chuyển, logic cơ bản trong phần mềm là di chuyển “con tàu” và xác định xem “con tàu” có va chạm với một “tảng đá” hay không. Các hàm này tận dụng lợi thế của mảng “rock / space” đã xác định và cũng là mảng xác định các vị trí bộ nhớ trong màn hình. Số dịch chuyển tương ứng với độ dài dòng của màn hình LCD (0-19) và được sử dụng làm chỉ số cho các mảng này. Logic hơi phức tạp bởi thực tế là các dòng hoán đổi sau mỗi 20 lần dịch chuyển. Logic tương tự được sử dụng để xác định vị trí của “con tàu” có thể nằm trên bất kỳ đường nào trong bốn dòng.

Điểm cho mỗi lần chơi chỉ đơn giản là đếm số ca đã xảy ra và điểm cao được lưu trong EEROM nội bộ của vi điều khiển. Thư viện EEPROM được sử dụng để đọc và ghi vào bộ nhớ này. Các quy trình có sẵn cho phép đọc / ghi byte đơn và đọc / ghi các giá trị dấu phẩy động. Giá trị 0xA5 được lưu ở vị trí EEROM đầu tiên để cho biết rằng điểm số cao đã được lưu. Nếu giá trị đó xuất hiện khi bật nguồn, thì giá trị dấu phẩy động cho điểm cao sẽ được đọc và hiển thị. Nếu giá trị 0xA5 không có, thì một quy trình được gọi để khởi tạo điểm cao thành giá trị 1. Quy trình tương tự đó được gọi nếu muốn đặt lại điểm cao. Điểm cao được đặt trở lại giá trị 1 bằng cách nhấn giữ một trong các nút lên / xuống và sau đó nhấn nút đặt lại trong giây lát.

Bước 3: Chơi trò chơi

Chơi trò chơi
Chơi trò chơi
Chơi trò chơi
Chơi trò chơi

Khi có nguồn, điểm cao hiện tại được hiển thị. Sau khi điểm số cao được hiển thị, mê cung của “đá” và “tàu” được hiển thị sau đó trò chơi bắt đầu sau đó vài giây. Khi “con tàu” chạm vào một “tảng đá”, thông báo “CRASH AND BURN” sẽ nhấp nháy một vài lần trước khi hiển thị điểm số của trò chơi. Nếu một điểm cao mới được thực hiện, thì thông báo đó cũng được hiển thị. Một trò chơi mới được bắt đầu bằng cách nhấn nút đặt lại.

Đề xuất: