Создание игры

Gavrilchenko
Offline
Зарегистрирован: 12.06.2022

Только недавно занялся ардуино и решил сделать так сказать небольшую игру на 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);
     }
   }
  }
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Предположите, что Вы не знаете, что за игра и перечитайте свой пост. Вы поняли суть игры и принципы реализации? Я - нет.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Вне зависимости от сути и принципов игры второй миллис в ней не нужен. От слова "совсем".

kalapanga
Offline
Зарегистрирован: 23.10.2016

Игра - кто быстрее сломает свою кнопку?

Даже не программисту должны броситься в глаза нелогичности в этом коде. Вот есть две кнопки. По сути одинаковые, обрабатываться должны одинаково. Тогда почему есть переменные button1 и button2, а переменная debounce только одна? Почему нажатие кнопки 1 обрабатывается 6 строками кода (24-29), а кнопки 2 - 23 строками (30-52)? Не кажется, что результат игры проверяется в принципе где-то не там? То же самое игроки - они же равноправные! Тогда почему у одного есть действие строки 49 (что бы оно не значило), а у другого нет?

Так что для начала, надо бы логику причесать и скобки по уму расставить... Не ровён час ещё и заработает!

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Странная игра.

А если кнопку вообще не нажимать? Или зажать? У Вас не хватает триггера на нажатие кнопки.

Кроме того я не увидел инициализацию переменной time.

Ну и про  debounce уже указали в #3