03-01-2021, 20:59
(03-01-2021, 10:21)Agregacik napisał(a): Powinno działać na 6,7,8. Czy wszędzie zmieniałeś numery pinów w "void przyciski()" też? Rezystorów nie musi być ale nie zaszkodzą. Rezystory oczywiście podciągające do +5V.Nie chce działać na 6,7,8. Jak wpisać tabelę Układy i wartości
Układ liczy się tylko wtedy, gdy powstał w jednym rzucie. Dwójki, trójki, czwórki i szóstki liczą się jedynie w układach co najmniej trzech tych samych kości. Za każdy układ przysługuje określona liczba punktów:
jedna piątka - 5
jedna jedynka - 10
dwie piątki - 10
dwie jedynki - 20
trzy te same (z wyjątkiem jedynek) - wartość oczka razy 10
trzy jedynki - 100
cztery te same (z wyjątkiem jedynek) - wartość oczka razy 20
cztery jedynki - 200
pięć oczek po kolei (strit) - 150
pięć tych samych oczek - 1000 Próbowałem też połączyć menu z grą. I dodawać winiuk rzuto do sumy punktów. Nie wychodzi mi. W 1000 jest jeden rzut i zmiana gracza. Też mi nie wychodzi. Liczy kolejne kości ale to nie to. Dodać kolejny ekran void gra?
Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C_Hangul.h>
LiquidCrystal_I2C_Hangul lcd(0x27, 20, 4);
byte przyciskPrawo = 0;
byte przyciskLewo = 0;
byte przyciskOK = 0;
byte ekran = 0;
byte iloscGraczy = 0;
byte stanOK = 0;
byte stanLewo = 0;
byte stanPrawo = 0;
//ś
byte znak0[8] = {
B00010,
B00100,
B01110,
B10000,
B01110,
B00001,
B11110,
B00000
};
//ć
byte znak1[8] = {
B00010,
B00100,
B01110,
B10000,
B10000,
B10001,
B01110,
B00000
};
//ó
byte znak2[8] = {
B00010,
B00100,
B01110,
B10001,
B10001,
B10001,
B01110,
B00000
};
//ż
byte znak3[8] = {
B00100,
B00000,
B11111,
B00010,
B00100,
B01000,
B11111,
B00000
};
//ę
byte znak4[8] = {
B00000,
B01110,
B10001,
B11111,
B10000,
B01110,
B00010,
B00001
};
int losowaLiczba0;
int losowaLiczba1;
int losowaLiczba2;
int losowaLiczba3;
int losowaLiczba4;
int wynik;
int tura;
int rzut;
int suma;
int gracz;
int losowaLiczba[5];
void setup()
{
lcd.init();
lcd.backlight();
lcd.clear(); // zerowanie wyświetlacza
pinMode(2, INPUT_PULLUP); // przycisk prawo
pinMode(3, INPUT_PULLUP);// przycisk OK
pinMode(4, INPUT_PULLUP); //przycisk lewo
lcd.createChar(0, znak0);
lcd.createChar(1, znak1);
lcd.createChar(2, znak2);
lcd.createChar(3, znak3);
lcd.createChar(4, znak4);
}
void loop()
{
przyciski();
if (ekran == 0)
{
powitanie();
}
if (ekran == 1)
{
wyborIlosciGraczy();
}
if (ekran == 2)
{
ilosciGraczy();
}
}
void powitanie()
{
lcd.setCursor(0, 0);
lcd.print(" Witam Wszystkich ");
lcd.setCursor(0, 1);
lcd.print(" Gra w 1000");
lcd.setCursor(0, 2);
lcd.print(" Kenshin Himura");
lcd.setCursor(0, 3 );
lcd.print(" Naci");
lcd.print((char)0);
lcd.print("nij OK");
if (przyciskOK == 1 && stanOK == 0)
{
stanOK = 1;
}
if (przyciskOK == 0 && stanOK == 1)
{
stanOK = 0;
ekran = 1;
}
}
void przyciski()
{
if (digitalRead (2) == LOW)
{
delay (20);
if (digitalRead (2) == LOW)
{
przyciskPrawo = 1;
}
}
else
{
przyciskPrawo = 0;
}
if (digitalRead (3) == LOW)
{
delay (20);
if (digitalRead (3) == LOW)
{
przyciskOK = 1;
}
}
else
{
przyciskOK = 0;
}
if (digitalRead (4) == LOW)
{
delay (20);
if (digitalRead (4) == LOW)
{
przyciskLewo = 1;
}
}
else
{
przyciskLewo = 0;
}
}
void wyborIlosciGraczy()
{
lcd.setCursor(0, 0);
lcd.print("Wybierz Ilo");
lcd.print((char)0);
lcd.print((char)1);
lcd.print(" Graczy");
lcd.setCursor(0, 1);
lcd.print("Liczba Graczy:");
lcd.setCursor(14, 1);
lcd.print(iloscGraczy);
lcd.setCursor(0, 2);
lcd.print(" Naci");
lcd.print((char)0);
lcd.print("nij OK ");
lcd.setCursor(0, 3 );
lcd.print("Zatwierd");
lcd.print((char)3);
lcd.print(" OK");
if (przyciskPrawo == 1 && stanPrawo == 0 && iloscGraczy < 5)
{
stanPrawo = 1;
}
if (przyciskPrawo == 0 && stanPrawo == 1)
{
stanPrawo = 0;
iloscGraczy = iloscGraczy + 1;
}
if (przyciskLewo == 1 && stanLewo == 0 && iloscGraczy > 2)
{
stanLewo = 1;
}
if (przyciskLewo == 0 && stanLewo == 1)
{
stanLewo = 0;
iloscGraczy = iloscGraczy - 1;
}
if (przyciskOK == 1 && stanOK == 0)
{
stanOK = 1;
}
if (przyciskOK == 0 && stanOK == 1)
{
stanOK = 0;
ekran = 2;
}
}
void ilosciGraczy()
{
lcd.setCursor(0, 0);
lcd.print("Wybrano Graczy ");
lcd.setCursor(9, 0);
lcd.print(iloscGraczy);
lcd.setCursor(0, 1);
lcd.print("Rozpocznij gr");
lcd.print((char)4);
lcd.setCursor(0, 2);
lcd.print(" Naci");
lcd.print((char)0);
lcd.print("nij OK ");
lcd.setCursor(0, 3 );
lcd.print("Powodzenia ");
if (przyciskOK == 1 && stanOK == 0)
{
stanOK = 1;
}
if (przyciskOK == 0 && stanOK == 1)
{
stanOK = 0;
ekran = 0;
lcd.setCursor(0, 0);
lcd.print("Gracz: ");
lcd.backlight(); // zalaczenie podswietlenia
lcd.setCursor(9, 0);
lcd.print("1-2-3-4-5.");
lcd.setCursor(0, 2);
lcd.print("Wynik Gracza:");
lcd.setCursor(0, 0);
lcd.print("Gracz: ");
lcd.setCursor(6, 0);
lcd.print(gracz);
lcd.setCursor(0, 3);
lcd.print("Suma Punkt");//Suma punktów
lcd.print((char)4);
lcd.print("w:");
lcd.setCursor(0, 1);
lcd.print("Rzut:");
lcd.setCursor(5, 1);
lcd.print(rzut);
rzut = 0;
rzut = rzut + 1;
gracz = 0;
gracz = gracz + wynik;
tura = 0;
if (digitalRead(przyciskOK) == LOW)
{
delay(20);
{
for (int i = 0; i < 5; i++)
{
losowaLiczba[i] = random(1, 7);
lcd.setCursor(i + i + 9, 1);
lcd.print(losowaLiczba[i]);
}
for (int i = 0; i < 5; i++)
wynik += losowaLiczba[i]; //suma tablicy losowaLiczba
lcd.setCursor(15, 2);
lcd.print(wynik);
wynik = 0;
lcd.setCursor(15, 3);
lcd.print(suma + wynik);
suma = wynik + suma;
suma = 0;
}
}
}
}