Skocz do zawartości

Zagnieżdżanie warunków if w ifie


Superuser1234

Pomocna odpowiedź

1 minutę temu, Superuser1234 napisał:

przyciski mają się naciskać po kolei

Czyli gdzieś w programie masz linijkę w stylu:

keyCode = cośtam();

Jako że kod jest tajny i nie możesz go umieścić (pewnie się boisz że ktos podpatrzy) będziemy teoretyzować.

Nie wiem czy to "cośtam" zwraca np. zero jeśli żaden klawisz nie jest wciśnięty, czy zwraca wartość klawisza który jest aktualnie naciśnięty, czy zwraca tę wartość tylko raz w momencie naciśnięcia. Ale w każdym przypadku musisz zapamiętać gdzieś poprzednią wartość keyCode, czyli coś w stylu:
 

oldKeyCode = keyCode;
keyCode = cośtam();

I teraz po prostu robisz coś w stylu:

if (oldKeyCode == 0x21 && keyCode == 0x1b) {...

(albo odwrotnie)

Ważne, aby w oldKeyCode była wartość poprzednio naciśniętego klawisza. Oczywiście w zależności od tego jak zwracany jest keyCode kod będzie różny, ale ogólna zasada pozostaje taka sama.

 

  • Lubię! 1
Link do komentarza
Share on other sites

@Superuser1234 jeśli warunek ma się spełnić po wpisaniu np "21" czyli najpierw naciskas "2"  a potem "1", to takie zapisanie tego warunku jak to było wcześniej nie zadziała. Musiasz zapamiętać jaki był wciśnięty pierwszy klawisz, potem zapamiętć jaki był wciśnięty drugi klawisz, potem sprawdzić czy to właściwe klawisze i czy we właściwej kolejności, oraz czy nie wciśnięto więcej lub mniej klawiszy, bo to może oznaczać zupełnie coś innego.

  • Lubię! 1
Link do komentarza
Share on other sites

A może byście człowiekowi wytłumaczyli rozumiejąc o co pyta?

Z pierwszego pytania wnioskuję, że @Superuser1234 przypuszcza, że instrukcja if działa tak, że jak warunek nie nie jest spełniony, to program czeka, aż się spełni

To tak nie działa. Jak warunek nie jest spełniony, to program po prostu nie wchodzi do tej klamerki po if.

Oczywiście nic straconego, to co masz wewnątrz dużej metody loop() jest powtarzane wielokrotnie - dojdzie do końca, procesor na chwilę zajmie się swoimi sprawami i tego loop() uruchomi ponownie, i do tego if kiedyś, szybko, ponownie dojdzie

I druga sprawa: && oznacza "and", po naszemu "i". Warunek, że ( coś == 7 && coś == 11 ) oznacza, że oczekujemy jedna zmienna będzie mieć jednocześnie wartość 7 i 11

 

Link do komentarza
Share on other sites

@jbanaszczyk a może byś przeczytał cały wątek od początku i wtedy nie pisałbyś

39 minut temu, jbanaszczyk napisał:

I druga sprawa: && oznacza "and", po naszemu "i". Warunek, że ( coś == 7 && coś == 11 ) oznacza, że oczekujemy jedna zmienna będzie mieć jednocześnie wartość 7 i 11

bo były o tym dwie strony tego wątku.

Edytowano przez SOYER
  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.