---
# System prepended metadata

title: Ardozaur v2

---

# Ardozaur v2

```c++
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
byte kursor[8] =
{
B00000,
B00000,
B11100,
B00110,
B00110,
B11100,
B00000,
B00000
};
byte skala_gorna[8]=
{
B11111,
B11111,
B01110,
B01110,
B11100,
B01110,
B01100,
B00100
};
byte skala_dolna[8]=
{
B00100,
B01100,
B01110,
B11100,
B01110,
B01110,
B11111,
B11111
};
byte boom[8]=
{
B00000,
B10101,
B01110,
B11111,
B01110,
B10101,
B00000,
B00000
};


void setup(){
  lcd.begin(16, 2);
  lcd.createChar(0,kursor);
  lcd.createChar(1,skala_gorna);
  lcd.createChar(2,skala_dolna);
  lcd.createChar(3,boom);
  pinMode(8,INPUT_PULLUP);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
  randomSeed(analogRead(0)); // deklarowanie “ziarna losowania”
  Serial.begin(9600);
}

bool gora[17]; //Jest ich 17, gdyż potrzebujemy jednego dodatkowego do "chowania" 
//następnych przeszkód
bool dol[17];
bool czolg = 1; // nowe
bool przycisk; // nowe
int hp = 3;
int punkty = 0;
int lvl = 1;
bool poczatek = true;
// Tworzenie funkcji gry (zadanie tych zajęć)
//Kolejność tej funkcji jest... ciekawa, trzeba przedyskutować
void gra(){
  lcd.setCursor(1,czolg);
  lcd.write(byte(0));
  for(int i = 0; i<random(2,6);i++){ //pętla oddzielająca przeszkody (przerwa 1-4)
      //random(min,max+1)
    //Sprawdzamy czy nasz gracz nie przywalił, patrzymy do przodu
  if (czolg == 0 && gora[2]==0){
    lcd.setCursor(1,0);
    lcd.write(byte(0));
    punkty++;
  }
  else if(czolg == 1 && dol[2]==0){
    lcd.setCursor(1,1);
    lcd.write(byte(0));
    punkty++;
  }
  else{//Walniecie
    lcd.setCursor(1,czolg);
    lcd.write(byte(3));
    hp--;
    if (czolg) 
      dol[2] = 0;
    else 
      gora [2] = 0;
  }
  
  for(int j =0; j<16; j++)// Nie podoba mi się to... ale działa
  //a zmiana byłaby za bardzo skomplikowana
  {
    if(gora[j+1]==1){ //Tu okazuje się po co nam 17, 
    //albowiem wyświetlamy o jeden do przodu (do gracza) od tego co jest w tablica
      lcd.setCursor(j,0); //Przez to, jesli nasza tablica miałaby tylko 16, 
      //to zawsze by wyświetlało się od 15 miejsca, gdyż ta część pomija jedną kratkę
      lcd.write(byte(1));
      gora[j]=1;
      gora[j+1]=0;
    }
    if(dol[j+1]==1){
      lcd.setCursor(j,1);
      lcd.write(byte(2));
      dol[j]=1;
      dol[j+1]=0;
    }
  }
  long czas = millis();
  while(millis()-czas<1000 - 150*lvl){// z kolejnymi lvl mamy mniej czasu 
    if(digitalRead(8)==HIGH) //przycisk
      przycisk = false;
    if(digitalRead(8)== LOW && przycisk == false){
      przycisk = true;
      czolg = !czolg;
    }
  }
  lcd.clear();
  Serial.println(punkty);
  switch (hp)//sprawdzamy hp
  {
    case 3:
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      digitalWrite(11,HIGH);
      break;
    case 2:
      digitalWrite(9,LOW);
      break;
    case 1:
      digitalWrite(10,LOW);
      break;
    case 0:
      digitalWrite(11,LOW);
      hp = 3;
      lcd.setCursor(1,0);
      lcd.print("Game");
      lcd.setCursor(1,1);
      lcd.print("Over");
      delay(2000);
      for(int j=0;j<17;j++)
      {
        gora[j]=0;
        dol[j]=0;
      }
      poczatek = true;
      return; //przegralismy, wracamy na poczatek
    }
    
    if (punkty == 50*lvl){
      lvl++;
      poczatek = true;
      lcd.setCursor(1,0);
      lcd.print("Next");
      lcd.setCursor(1,1);
      lcd.print("Level");
      for(int j=0;j<6;j++)// na wszelki wypadek, 
      //przy probach odrazu wraca sie a przed tobą może być przeszkoda
      {
        gora[j]=0;
        dol[j]=0;
      }
      delay(3000);
    }
  }
  if (random(0,2) == 0) //generowanie przeszkód
    gora[16]=1;
  else 
    dol[16]=1;
}


void loop(){
  if(poczatek){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("START");
    lcd.setCursor(0,1);
    lcd.print("Level");
    lcd.setCursor(6,1);
    lcd.print(lvl);
    delay(2500);
    punkty = 0;
    poczatek = false;
    lcd.clear();
  }
  else{
    gra();
  }
}
```
Do kolejnej obróbki, najlepiej do nowego napisania i przedyskutowania funkcji gra
To może być znośnie, ale nie wiem czy na zajęcia, jak już to obrobić to na parę funkcji