Создание игры
- Войдите на сайт для отправки комментариев
Вс, 12/06/2022 - 19:25
Только недавно занялся ардуино и решил сделать так сказать небольшую игру на lcd 16X2 и двух кнопок.
Цель игры набрать как можно больше кликов. Проблема заключается в том что я не понимаю как сделать второй millis для игрового таймера. Помогите пожалуйста.
#include <LiquidCrystal.h> LiquidCrystal lcd(13, 12, 11, 10, 9, 8); unsigned int numbcount1 = 0; unsigned int numbcount2 = 0; boolean button1; boolean button2; #define player1button 2 #define player2button 3 unsigned long debounce; unsigned long time; void setup() { pinMode(player1button, INPUT_PULLUP); pinMode(player2button, INPUT_PULLUP); lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Player1:"); lcd.setCursor(0, 1); lcd.print("Player2:"); } void loop() { button1 = !digitalRead(player1button); button2 = !digitalRead(player2button); if(button1 == 1 && millis() - debounce > 110){ debounce = millis(); numbcount1++; lcd.setCursor(9, 0); lcd.print(numbcount1); } if(button2 == 1 && millis() - debounce > 110){ debounce = millis(); numbcount2++; lcd.setCursor(9, 1); lcd.print(numbcount2); if(millis() - time > 10000){ delay(1500); lcd.clear(); if(numbcount1 > numbcount2){ lcd.setCursor(4, 0); lcd.print("PLAYER 1"); lcd.setCursor(6, 1); lcd.print("WINS"); } else{ lcd.setCursor(4, 0); lcd.print("PLAYER 2"); lcd.setCursor(6, 1); lcd.print("WINS"); delay(900000); } } } }
Предположите, что Вы не знаете, что за игра и перечитайте свой пост. Вы поняли суть игры и принципы реализации? Я - нет.
Вне зависимости от сути и принципов игры второй миллис в ней не нужен. От слова "совсем".
Игра - кто быстрее сломает свою кнопку?
Даже не программисту должны броситься в глаза нелогичности в этом коде. Вот есть две кнопки. По сути одинаковые, обрабатываться должны одинаково. Тогда почему есть переменные button1 и button2, а переменная debounce только одна? Почему нажатие кнопки 1 обрабатывается 6 строками кода (24-29), а кнопки 2 - 23 строками (30-52)? Не кажется, что результат игры проверяется в принципе где-то не там? То же самое игроки - они же равноправные! Тогда почему у одного есть действие строки 49 (что бы оно не значило), а у другого нет?
Так что для начала, надо бы логику причесать и скобки по уму расставить... Не ровён час ещё и заработает!
Странная игра.
А если кнопку вообще не нажимать? Или зажать? У Вас не хватает триггера на нажатие кнопки.
Кроме того я не увидел инициализацию переменной time.
Ну и про debounce уже указали в #3