Skocz do zawartości

som90

Użytkownicy
  • Zawartość

    1
  • Rejestracja

  • Ostatnio

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Rewa

Osiągnięcia użytkownika som90

Debiutant

Debiutant (1/19)

  • To już rok!

Odznaki

0

Reputacja

  1. Hej, to mój pierwszy projekt, który wklejam, także chciałem się przywitać 😉 Na początku chciałbym podziękować za kurs, bo jest cholernie wciągający i czas przy nim leci jak szalony. A teraz chciałbym się pochwalić działającym zadaniem 4.5. Dodałem kilka ulepszeń od siebie. Przede wszystkim sygnalizację na 3 dodatkowych diodach gasnących w miarę utraty żyć. Zrobiłem też zabezpieczenie przed resetowaniem gry w jej czasie (co dodawało u mnie extra szanse), no i kilka pierdółek świetlnych dla efekciarstwa 😃 Jak ogarnę obsługę głośniczka, to może jeszcze dorzucę jakieś efekty dźwiękowe 🙂 Mam natomiast problem którego nie mogę rozwiązać: jak program oczekuje jeszcze na wciśnięcie przycisku, to wszystkie znaki jakie wtedy wpiszę, po wciśnięciu przycisku wychodzą na monitor i odbierają jedną szansę :/ Jest na to jakieś rozwiązanie? //4.5 //wskazniki #define red 8 //fail #define orange 9 //utrata życia #define green 10 //wygranko //życia #define life1 2 #define life2 3 #define life3 4 //przycisk #define button 6 int proby = 0; //ilosc żyć int wartosc = 0; //wartosc na dzielniku int konwersja = 0; //konwerter odpowiedzi String do konwersja int String odpowiedz = ""; //odpowiedz //pamięci boolean loose = ""; // pamietaj ze przegrana/wygrana boolean reset = ""; //pamietaj że układ był resetowany void setup() { //sygnalizacja stanu pinMode(red, OUTPUT); pinMode(orange, OUTPUT); pinMode(green, OUTPUT); //przycisk pinMode(button, INPUT_PULLUP); //życia pinMode(life1, OUTPUT); pinMode(life2, OUTPUT); pinMode(life3, OUTPUT); //sterowanie wyświetlaczem i komunikacją Serial.begin(9600); Serial.println("Ustaw pozycję potencjometru i zatwierdź przyciskiem"); proby = 0; //pozostałe proby reset = true; //pozwolenie na użycie przycisku } void loop() { if (digitalRead(button) == LOW && reset == true) { //jeśli przycisk wciśnięty a układ ma pozwolenie na reset digitalWrite(red, HIGH); //zamrugaj na powitanie delay(100); digitalWrite(red, LOW); delay(100); digitalWrite(orange, HIGH); delay(100); digitalWrite(orange, LOW); delay(100); digitalWrite(green, HIGH); delay(100); digitalWrite(green, LOW); delay(100); //załaduj życia digitalWrite(life1, HIGH); delay(300); digitalWrite(life2, HIGH); delay(300); digitalWrite(life3, HIGH); delay(300); //początek gry Serial.println("Podaj liczbę!"); //wyślietl pytanie wartosc = analogRead(A5); //zczytaj wartość //Serial.println(wartosc); //TEST: wyswietl wartosc odczytu żeby sprawdzic poprawnosc działania reset = false; //wyłącz pozwolenie na reset if (loose == true) //dodatkowo jeżeli poniesiono porażkę/wygranko proby = 0; //resetuj proby proby = proby + 3; //dodaj 3 życia } if (Serial.available() > 0 && reset == false) { //sprawdź, czy pozwolenie na reset nie jest aktywowane odpowiedz = Serial.readStringUntil('\n'); //odpowiedz z odczytu konwersja = odpowiedz.toInt(); //konwertuj (odpowiedz)string do (odpowiedz)int if (konwersja <= wartosc - 51 || konwersja >= wartosc + 51) { //jeżeli wpisana liczba pomniejszona o 50 jest mniejsza od potencjometrowej proby = proby - 1; Serial.println ("Błędna odpowiedź!"); Serial.println ("pozostałe proby:"); Serial.println (proby); digitalWrite(orange, HIGH); //mrugnij diodą pomarańczową delay(500); digitalWrite(orange, LOW); delay(50); } else if (konwersja >= wartosc + 50 || konwersja <= wartosc + 50) { //gdy wpisalem wartosc poprawną Serial.println ("Wybrałeś liczbę: " + odpowiedz + ""); //jak jest bez "" to wcina ilosc liter którą wpisuję Serial.println("Gratulacje! Prawidłowa odpowiedź!"); Serial.println ("Wylosowana liczba to:"); Serial.println (wartosc); Serial.println("Ustaw potencjometr i naciśnij przycisk, aby rozpocząć ponownie grę!"); digitalWrite(green, HIGH); loose = true; reset = true; } if (proby == 0) { //błąd był- średnik Serial.println("Przegraleś!"); digitalWrite(red, HIGH); loose = true; //zapamiętaj, że przegrana if (loose == true) //a dodatkowo jeżeli przegrana Serial.println ("Wylosowana liczba to: "); //wyświetl to Serial.println (wartosc); Serial.println("Naciśnij przycisk, aby rozpocząć ponownie grę!"); } if (proby == 2) { //sterowanie LEDami żyć3 digitalWrite(life3, LOW); delay(50); digitalWrite(life3, HIGH); delay(50); digitalWrite(life3, LOW); delay(50); digitalWrite(life3, HIGH); delay(50); digitalWrite(life3, LOW); } if (proby == 1) {//sterowanie LEDami żyć2 digitalWrite(life2, LOW); delay(50); digitalWrite(life2, HIGH); delay(50); digitalWrite(life2, LOW); delay(50); digitalWrite(life2, HIGH); delay(50); digitalWrite(life2, LOW); } if (proby == 0) {//sterowanie LEDami żyć1 digitalWrite(life1, LOW); delay(50); digitalWrite(life1, HIGH); delay(50); digitalWrite(life1, LOW); delay(50); digitalWrite(life1, HIGH); delay(50); digitalWrite(life1, LOW); reset = true; //dopiero teraz możesz zrestetowac gre } } }
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.