Создание игры
- Войдите на сайт для отправки комментариев
Вс, 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