Skocz do zawartości

Zagnieżdżanie warunków if w ifie


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

@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

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

 

(edytowany)

@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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...