Skocz do zawartości

Funkcja do obsługi klawiszy


Krawi92

Pomocna odpowiedź

Lub...

#define TAB 5
  
struct tab[TAB];


key_press ();

void key_press ()
  for (int i =0; i<TAB; i++;) {
  stru[i].cos = jakis_stan;
  }

Jezeli sprawdzasz cyklicznie iles tam guzikow (identyczny kod) to najlepiej petla for...no chyba ze trzeba bedzie wywolywac funkcje indywidualnie z konkretnym argumentem, to wtedy tak jak wyzej

Link do komentarza
Share on other sites

(edytowany)

Zmienia się. Ilość pkt aby przejść dalej zmniejszyłem na potrzeby filmu. Wraz z wyższym level predkosc jest - 2. Timer programowy domyślnie startuje z wartością 70, co daje 700ms, taka prędkość rysowania węża. 

Aktualnie mam w planie rozbudować to o jeszcze jedna grę jakąś zręcznościowa, może uda się upchnac jeszcze. Wtedy w menu będzie wybór albo jednej albo drugiej gry 

Edytowano przez Krawi92
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

Dnia 10.04.2022 o 19:00, Krawi92 napisał:

Jeżeli odwołujemy się przez wskaźnik uzywamy ->.

Jeżeli chcemy użyć wartości pod adresem zapisanym we wskaźniku, wykorzystujemy operator wyłuskania, którym jest *. To jest bazowa zasada, np.:

void f1(struct point *point)
{
	printf("%d,%d\n", (*point).x, (*point).y);
}

Dla ułatwienia, dla przypadku jak powyżej, czyli uzyskiwaniem dostępu do elementu wskaźnika do struktury, jest też dostępny operator ->, dzięki któremu można napisać point->x, a będzie to oznaczać dokładnie to samo, tj. a->b jest tym samym co (*a).b.

Gdy chce się operować na tablicy, argument w deklaracji funkcji wygląda identycznie jak powyżej, bo przekazywany wskaźnik jest adresem pierwszego elementu tablicy. Np.:

void f2(struct point *points, size_t length)
{
    for (size_t i = 0; i < length; ++i)
		printf("%d,%d\n", (*(points + i)).x, (*(points + i)).y);
}

I dla tablic znowu mamy dostępną uproszczoną składnię - []. c[d] znaczy dokładnie to samo co *(c + d). A jeśli ktoś pamięta, że dodawanie jest przemienne, to nie złapie go nikt w pułapkę w postaci 25[tablica]. To też jest poprawna składnia i znaczy tyle samo co tablica[25].

Także skoro już miałeś wyłuskanie składnika dokonane za pomocą [], to na -> nie ma już tam miejsca. Chyba że byłaby to funkcja przyjmująca wskaźnik do tablicy wskaźników do struktury, przykładowo, pozwalając sobie już na użycie obu upiększeń składniowych:

void f3(struct point **point_ptrs, size_t length)
{
    for (size_t i = 0; i < length; ++i)
		printf("%d,%d\n", point_ptrs[i]->x, point_ptrs[i]->y);
}

I jeszcze:

Dnia 10.04.2022 o 20:22, Krawi92 napisał:

No tak, mogę zrobić tak



void key_press ( TBUTTON  btn[], uint8_t nr)

 

W deklaracjach funkcji, składnie:

void f(struct point *points, size_t length);
void f(struct point points[], size_t length);

są tożsame - w obu wypadkach points jest wskaźnikiem, ideowo do pierwszego elementu tablicy. I jak było widać wyżej na przykładzie f1 i f2, nie wiadomo, czy chodzi o wskaźnik do pojedynczej zmiennej danego typu czy do tablicy, więc używanie [] w deklaracji może ułatwić czytelnikowi kodu zrozumienie, że intencją było właśnie przekazywanie tablicy.

W przerwach od fazy ogromnej niecierpliwości do uruchomienia czegoś i zobaczenia w działaniu, którą całkowicie rozumiem, polecam też znaleźć chwilę na spotkanie z jakąś książką do C.

No, to byłem miły w te święta!

Edytowano przez trainee
  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

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.