#include <LiquidCrystal.h>
const int rs = PA8, en = PB1, d4 = PB6, d5 = PB7, d6 = PB0, d7 = PA12;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
const int toggle_lane = PB5;
int player_row = 0;
int opponent_row = 0;
int score = 0;
int column = 15;
void setup() {
pinMode(toggle_lane, INPUT);
lcd.begin(16, 2);
lcd.print("--ASCII--RACER--");
lcd.setCursor(0, 1);
lcd.print("----------------");
delay(3000);
lcd.clear();
}
void loop() {
if (column < 0){
column = 15;
}
opponent_row = random(0, 2);
for (int i = 15; i>=0; i--){
if (digitalRead(toggle_lane) == HIGH){
delay(40);
if (player_row == 0){
player_row = 1;
}
else if (player_row == 1){
player_row = 0;
}
}
lcd.clear();
lcd.setCursor(0, player_row);
lcd.print("-=}-");
lcd.setCursor(i,opponent_row);
lcd.print("O");
if( (player_row != opponent_row) && (i==1))
score++;
if( (player_row == opponent_row) && (i==3))
{ lcd.clear(); lcd.print(" Game over ");
lcd.setCursor(0, 1); lcd.print("Score = "); lcd.print(10*score);
delay(4000);
score = 0;
column = 15;
}
delay(300);
column --;
}
}
Loading
st-nucleo-l031k6
st-nucleo-l031k6