• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gra Memory - kaszani się, poszukiwane rozwiązanie

Object Storage Arubacloud
+1 głos
205 wizyt
pytanie zadane 18 maja 2021 w JavaScript przez manwe11 Nowicjusz (130 p.)

Hej,

pracuję nad rozwiązaniem bugu gry typu memory:

http://memory.naukowy.webd.pl

mianowicie jak się klika kafelki szybko, nie czekając aż wywoła się funkcja odpowiedzialna za logikę gry, to kafelki pozostają i ogólnie wychodzi chaos. Proszę o zasugerowanie rozwiązania problemu, podanie hasła jak można sprawić, aby gra działała prawidłowo.

Dzięki.

1 odpowiedź

0 głosów
odpowiedź 18 maja 2021 przez edutomek Dyskutant (8,380 p.)
Każda gra/aplikacja ma coś, co można nazwać jej stanem.

Reakcja na zdarzenia powinna być uzależniona nie tylko od samego zdarzenia (np. naciśnięty lewy przycisk myszy), ale również od aktualnego stanu aplikacji.

W tym konkretnym przypadku widać, że po kliknięciu od razu jest pokazywany obraz - a tak nie powinno być. Jeśli bowiem są już pokazane dwa obrazy (różne), to należy dać chwilę graczowi, aby się im przyjrzał, zapamiętał, po czym je zakryć. Dopiero wówczas znowu można pokazywać kolejne obrazy.

Innymi słowy - w stanie "prezentacji" niezgodnych obrazów użytkownikowi, reakcja na kliknięcie powinna być zupełnie inna, niż w innych stanach.

Oczywiście to tylko sugestia, naprowadzenie na pewne rozwiązanie.
komentarz 18 maja 2021 przez manwe11 Nowicjusz (130 p.)
można prosić o jakiegoś linka czy przykład jak zaimplementować takie rozwiązanie związane ze stanami gry? bo koncepcję rozumiem, ale nie wiem jak to zrobić w js.
komentarz 18 maja 2021 przez krissto7 Gaduła (3,100 p.)
Najprościej będzie dać flagę , na funkcji odsłaniającej obrazek , flagę usuwasz kiedy tak jak wcześniej kolega napisał kończy się stan poprzedniego sprawdzania. Ja generalnie robiłem kiedyś memory obiektowo to mam takie rozwiązanie , że stworzyłem klasę dla każdego obrazka , potem stworzyłem tablicę w której każdy obrazek jest klasą i posiada parametry. Jeden z parametrów to czy jest już odsłonięty obrazek , jeśli tak to nic z nim nie robię i jest nieklikalny, drugi parametr to czy jest aktywny obrazek, w sensie , że po każdym kliknięciu w obrazek to nadaje parametr dla tej klasy , że jest aktywny i potem w tej jednej funkcji sprawdzam , czy w tablicy już istnieje jakiś obrazek z aktywnym parametrem , jeśli tak to porównuje go czy maja taki sam url , jeśli nie to obu obrazkom usuwam ten atrybut aktywny , dzięki temu wszystko ładnie śmiga , ale myślę , że jeśli dodasz flagę , która będzie odpowiedzialna za nieklikalność kiedy następuje sprawdzenie to wtedy żadnych bugów nie będzie.

Z tym że właśnie w moim rozwiązaniu mogę klikać w obrazki i je spamować to ich nie zbuguje , a to też kwestia jaki masz pomysł bo jeśli chcesz zostawić możliwość spamowania w przycisku to flaga odpada , a jeśli Ci to nie przeszkadza to wtedy flaga spowolni cały proces , w moim rozwiązaniu generalnie mogę zrobić to z flagą i bez flagi , jak mi odpowiada...
komentarz 18 maja 2021 przez edutomek Dyskutant (8,380 p.)

@manwe11,

Tu teoria (zapewne bardzo rozbudowana w stosunku do Twoich potrzeb):
https://en.wikipedia.org/wiki/Finite-state_machine

Do implementacji można wykorzystać choćby Reduksa/MobX, albo poszukać nt. "Finite state machine javascript".

A rozwiązanie z flagą też powinno zadziałać.

Podobne pytania

0 głosów
0 odpowiedzi 218 wizyt
pytanie zadane 28 października 2019 w JavaScript przez stoklosa Nowicjusz (120 p.)
0 głosów
1 odpowiedź 891 wizyt
pytanie zadane 13 lutego 2019 w JavaScript przez Szymson Nowicjusz (120 p.)
+8 głosów
2 odpowiedzi 345 wizyt
pytanie zadane 27 maja 2016 w Nasze projekty przez Adam Jakś Dyskutant (8,940 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...