W przerwie od poważniejszych działań wystrugałem sobie prostą gierkę logiczną. Prostą w sensie prostoty zasad, ale bynajmniej nie poziomu trudności, wręcz przeciwnie [demoniczny śmiech]. Mamy planszę złożoną z różnokolorowych trójkątnych pól; klikając w pole zmieniamy jego kolor w cyklu czerwony-zielony-niebieski (stąd nazwa gry), ale to samo dzieje się z polami sąsiednimi. Cel – doprowadzić do tego, żeby wszystkie pola miały ten sam kolor, obojętnie który.
W gierkę można zagrać tutaj, a po zagraniu proszę o komentarz – wszelkie uwagi, nawet niekonstruktywne, będą dla mnie bardzo cenne.
Komentarze
Zniszczyłeś mi sobotę!
[demoniczny śmiech]
Fajne, póki co zostały mi 4 pola ;) Przydałaby się jakaś punktacja – progress bar mówiący, ile % już udało nam się przejść (licząc dominujący kolor) oraz oddzielny licznik ilości kroków. Poziom trudności możnaby skalować zmieniając ilość kolorów i kształt figury.
Gra mogłaby też save’ować stan tak, żeby otwarcie strony od nowa przywracało ten save.
Proszę o wsparcie dla click event. Chrome na ekranie dotykowym w laptopo-tablecie rejestruje stuknięcie w cały element (canvas?)
@mt3o
Dzięki za zwrócenie uwagi, wrzuciłem poprawkę.
@d33tah
Orientacyjny procent wypełnienia jednym kolorem widać na samej planszy, ale rozważę dodanie licznika.
Co do poziomu trudności – przy dwóch kolorach gra jest banalnie prosta, a przy czterech nie sprawdzałem, ale raczej byłby to absolutny hardcore, a już teraz lekko nie jest, delikatnie mówiąc. Kombinowanie z kształtem planszy to niezły pomysł, dzięki za jego podsunięcie:-).
Nad zapisywaniem stanu gry myślałem, ale uznałem, że rozgrywka raczej nie trwa aż tak długo, żeby było to potrzebne.
Trwa w nieskończoność, do jednego pola doszedłem już z tuzin razy ale nie miałem sił i weny by dokończyć…
Ciągle coś nie gra z touchscreenem ;)
Na kompie – gdy stukam jak kretyn w ekran – gdzieś pojawiają się pacnięcia (sugeruję: visual feedback dodać)
Gdy robię pojedyncze kliknięcia – brak efektu…
Na androidzie nie sprawdzałem, w wolnej chwili to zrobię.
Dziwna sprawa, u mnie działa poprawnie. Pomyślę i poguglam, co to może być.
mozesz zapuścić jakiś handler dla logów, czy coś takiego? Coś, co by zapisało, co się dzieje w przeglądarce, co bym mógł Ci wysłać.
Trochę poklikałem metodą „na idiotę” i zauważyłem, że teraz canvas reaguje na kliknięcia, ale jestnaprzesunięcie – gdy klikam w najwyższy trójkąt, system reaguje tak, jakbym kliknął w eee 2x niższy, tzn niższy o tym samym ułożeniu (nie: lustrzane odbicie)
Zacznijmy od tego, co to za urządzenie masz? Może mógłbym je zaemulować i w ten sposób coś stwierdzić? Tak na odległość to możemy kombinować tygodniami przecież – pomyślę nad logami, ale wiele bym sobie po nich nie obiecywał. Skoro klika się niższy trójkąt, to pewnie coś jest nie tak z wyliczaniem pozycji canvasa, ale czemu, nie mam pojęcia – skoro wspomniałeś o Chrome, to zakładam, że masz w miarę aktualną wersję, która powinna interpretować JS i CSS tak samo jak na desktopie…
asus t100 transformer, win 8.1
chrome, tryb kafelkowy
to jest normalny windows :D
Mam sugestię, podepnij tam jakiś handler/logger do clicków i touch eventów, a ja zrzucę ten log i nagram ekran w tym czasie, co Ty na to?
https://cichyfragles.pl/rgbt/#debug – pod tym adresem klikanie będzie generować tablicę z losowymi liczbami, które może mi coś powiedzą w połączeniu z informacją, gdzie klikałeś/dotykałeś. Możesz nagrać ekran (byle z podświetlaniem kliknięć) albo napisać, które pola kolejno atakowałeś, jak wolisz. Miejmy nadzieję, że coś z tego wyniknie.
https://dl.dropboxusercontent.com/u/3597752/blog/cf.avi
Klikałem w serii od góry, od lewej do prawej, a na końcu ostatni rząd od lewej.
Ostatnia seria na końcu – klik w refresh.
Niestety, mimo najszczerszych chęci, mój ekranonagrywacz nie rejestrował smyrnięć w ekran…
Wrzuciłem poprawkę, ale nie ręczę za prawidłowe działanie, bo emulacja touch eventów w Chrome działa mi jakoś losowo – raz event idzie, raz nie, raz prawidłowa pozycja, raz totalnie od czapy – diabli wiedzą, co jest grane.
Teraz działa jeszcze śmieszniej niż wcześniej :D
Jakie urządzenie emulowałeś na potrzeby testów?
Możesz to wrzucić na jakiś github? Spróbuję potestować w wolnej chwili.
Próbowałem z różnymi, ale efekt był ten sam. Kod możesz wyciągnąć z pliku JS, nie jest zminifikowany ani nic z tych rzeczy: https://cichyfragles.pl/files/rgbt.js – metoda tapOrClick zawiera obsługę eventu, poprawności reszty kodu jestem pewien, więc albo w tym miejscu coś zrąbałem, albo Chrome uprawia jakiś sabotaż.
Czy mi się tylko wydaje, czy tego nie da się wygrać?
Da się, parę razy mi się jakoś udało – ale z naciskiem na „jakoś”, bo faktycznie łatwo nie jest i jak dotąd nie znalazłem na to algorytmu. Po cichu więc liczyłem, że komuś innemu się uda;-).