maro512 / Loop2

Apache License 2.0
0 stars 0 forks source link

Interface #13

Open maro512 opened 7 years ago

maro512 commented 7 years ago
maro512 commented 7 years ago
pzjp commented 7 years ago

Na wstępną wersję gry online potrzeba przede wszystkim przycisku do logowania (plus ekran do podania nazwy użytkownika). Przy kliknięciu "graj online" będzie się odpalało połączenie z losowym graczem (chyba, że od razu dodamy ekran z podaniem nazwy przeciwnika).

Poszukajcie czcionki z polskimi znakami, chyba taka istnieje :D

PS. Wstawiłem do "new-ui" aktualny model gry. Zmieniłem Game tak, że nie powinno być remisów.

maro512 commented 7 years ago

tak na szybko, żeby nie zapomnieć

maro512 commented 7 years ago
pzjp commented 7 years ago

Chyba jest drobny błąd, bo mogę kliknąć płytkę niepodświetloną (niepasującą) i wstawić (oczywiście wywala wyjątek). Można dodać takie coś do ClickListener i działa: if (((Button) e.getTarget()).isDisabled()) return;

pzjp commented 7 years ago

new-ui można chyba scalić z masterem. Jak ktoś chce, to stary interfejs można zachować w osobnym branchu. Do jutra.

cieplinski-tobiasz commented 7 years ago

zbieram sobie wszystko w jedno miejsce

pzjp commented 7 years ago

W niedzielę zdołałem stworzyć kod, który pilnuje, aby użytkownik nie przesunął za bardzo planszy (jak ktoś przesunie planszę bardzo daleko, to potem jest mała szansa, że zdoła przyciągnąć płytki z powrotem). Dalej można wyrzucić płytki poza ekran, ale nie za daleko. Jest to wykorzystanie tych metod getMaxX()... Boarda. Wstawia się cztery warunki ograniczające do metody touchDragged...

cieplinski-tobiasz commented 7 years ago

Jutro chyba pushnę całość, także możesz dorzucić poprawkę. Potem możemy zrobić merge

cieplinski-tobiasz commented 7 years ago

co do ekranu logowania i rejestracji - jakie metody powinny być zapewnione? czy uzupełnicie to przy połączeniu gry z trybem online?

pzjp commented 7 years ago

W zasadzie potrzebne jest tylko wprowadzanie koniecznych danych (pewnie przy rejestracji hasło dwa razy) i przycisk. Powinno się dać wyświetlić informację o niepowodzeniu (i to najlepiej różnego typu: "problem z połączeniem", "nazwa użytkownika zajęta", ...). Wg. mojej wizji ekrany powinny implementować ConnectionListener, ale to chyba my będziemy zapewniać.

pzjp commented 7 years ago

Interfejs powinien w jakiś sposób powiązać graczy z kolorem linii. Może nazwy niech wyświetlają/podświetlają się w dobrym kolorze (o ile wiem, to po lewej jest biały, a po prawej czarny, zgodnie z numeracją w Game). Można też ustalić domyślne nazwy graczy na "Biały" i "Czarny" chyba, że przypisanie do kolorów (w przypadku offline) będzie losowe (Ale może lepiej, żeby losowe było kto zaczyna, a nie jaki ma kolor).

cieplinski-tobiasz commented 7 years ago

poszedł push, zostawiłem ekrany logowania i rejestracji z todo, żebyście spokojnie mogli podpiąć. gdyby ktoś sprawdził czy działa przycisk cofania dobrze na androidzie - byłoby miło

PS. wiem, że wywala exception przy zakończeniu gry, poprawię to jeszcze dziś

pzjp commented 7 years ago

Jak odpalam w emulatorze to cofanie prawie działa - aplikacja się chowa, ale jak ją wyciągnę z powrotem to widzę poprzedni ekran. No i dalej wszystko jest mikroskopijne... Ważna sprawa - udostępnij gdzieś reakcję na faktyczne zamknięcie aplikacji - trzeba wtedy wysłać do serwera komunikat wylogowania (i ewentualne przerwanie gry online).

pzjp commented 7 years ago

Wiem jak schować klawiaturę. To dość oczywiste, jak się rzuci okiem na API pól tekstowych: textField.getOnscreenKeyboard().show(false); Nie wiem, czy wystarczy dla jednego pola to wywołać, czy lepiej dla wszystkich. Oczywiście trzeba to dodać w wielu miejscach. A żeby przycisk cofania nie zamykał okna trzeba ustawić Gdx.input.setCatchBackKey(true);.

maro512 commented 7 years ago

cofanie działa dziwnie, tzn cofa do poprzedniego ekranu ale zaraz po tym się wyłącza

textField.getOnscreenKeyboard().show(false); to prawdopodobnie nie pozwala w ogóle wysunąć się klawiaturze

pzjp commented 7 years ago

Na wirtualnym androidzie oba mechanizmy (tj. poprawione cofanie i chowanie klawiatury) działają mi zgodnie z oczekiwaniami, ale nie będę się upierał, że to doskonałe rozwiązania.

cieplinski-tobiasz commented 7 years ago

ramki wokół planszy i graczy nie są tak łatwe do zrobienia, nie ma metody ustawienia tła dla pojedynczego cella z table'a. chwilowo to zostawiam. dziś dorzucę deadTile, ścieżkę wygrywającą i polskie litery. Za chwilę zrobię pusha, który powinien naprawić chowanie klawiatury, proszę o test, Piotr - dodaj potem poprawki do cofania jakbyś mógł.

cieplinski-tobiasz commented 7 years ago

ok, pushnięte, sprawdźcie prosze cofanie w Register i ukrywanie klawiatury wszędzie gdzie są pola tekstowe

pzjp commented 7 years ago

Zauważyłem, że jak pola tekstowe wsadzi się do Table zamiast do VerticalGroup to można im zmienić szerokość (dotąd były chyba zbyt krótkie) - wywołjąc np. table.add(---).padBottom(---).width(stage.getWidth()*.7f); I warto by wydzielić jakoś ten kod tworzący stage, bo te wszystkie klasy screenów mają niemal identyczny kod i nie wiem, czy to nie będzie jakiś minus...

maro512 commented 7 years ago

cofanie działa (chociaż nie zawsze, trzeba zobaczyć na innych urządzeniach. U mnie jest tak, że register chyba zawsze działa, ale po cofnięciu nie da się już wyjść z gry poprzez naciśnięcie back, a np. wyjście z opcji poprzez back wychodzi z aplikacji) chowanie klawiatury też działa jeśli chodzi o ścieżkę wygrywającą to nie potrzebnie wyświetlasz puste komórki przy zmianie języka na polski wywala się na końcu gry logo wrzuć na górę menu a nie na środek

pzjp commented 7 years ago

Przy kończeniu gry (na emulatorze) czasem się wywala ale zupełnie nie rozumiem od czego to zależy.

maro512 commented 7 years ago

udało mi się zrobić ramki dodając table.add(bv).pad(10).colspan(BUTTONS_AMOUNT).fill(); tylko że tło nie jest wyświetlane tak jakbym chciał ramki do graczy mozna dodać jako buttony

pzjp commented 7 years ago

Chyba dobrą rozdzielczość można uzyskać używając innego obiektu Viewport (np. StretchViewport albo FitViewport). Pojawiają się problemy z widgetem (aktualizacją jego wielkości), ale pewnie jakoś można sobie z nimi poradzić. Na razie mam jakiś problem z testowaniem na androidzie, więc nie widziałem jak to tam zadziała. (W weekend mogę mieć problemy z internetem, ale będę dopracowywał bazę.)

pzjp commented 7 years ago

Mam już wstępny mechanizm zapytań do bazy i typ osłonowy na pozycję w rankingu. Warto przygotować prezentację takiej tabeli w aplikacji.

maro512 commented 7 years ago

trzeba ustawić płytki w menu na dole ekranu wg z góry określonej kolejności, bo teraz są losowo i to może być frustrujące przy wielokrotnym graniu

maro512 commented 7 years ago

deadTile to jest EmptyCell i przy wyswietlaniu petli wygrywajacej po prostu znika, trzeba by ifa dodać zeby to pole tez się wyświetlało

maro512 commented 7 years ago

to już było gdzieś robione, ale trzeba zmienić metodę która określa kto wygrywa, bo w obecnej sytuacji jak jest remis to wygrywa biały, a powinien wygrać gracz, którego był ruch

public List getWinLine(){ if (board.isWhiteWin() && currentPlayer==0) return board.getWinningLine(false); else return board.getWinningLine(true); }

pzjp commented 7 years ago

U mnie jest tak, czyli chyba dobrze:

public List<Tile> getWinningLine()
    {
        if( board.isBlackWin() )
        {
            if (!board.isWhiteWin() || currentPlayer==1)
                return board.getWinningLine(Board.BLACK);
            else
                return board.getWinningLine(Board.WHITE);
        }
        else return board.getWinningLine(Board.WHITE);
    }
cieplinski-tobiasz commented 7 years ago

dodałem commita, w którym usunąłem opcje. język dobiera się automatycznie, gdy nie ma tłumaczenia - jest angielski. dodałem też polskie litery. skalowanie nie działa tylko na planszy - zostawmy to na razie tak jak jest. przycisk cofania też zachowuje się dziwnie. reszta działa, możecie mergować i podpinać grę online.

pzjp commented 7 years ago

Niechcący zmergowałem w drugą stronę (tj. nadpisałem new-ui). Jak to problem, to jutro to cofnę i zrobię w "dobrą stronę".

pzjp commented 7 years ago

Domergowałem zmiany w UI do online-play (musiałem to zrobić dzisiaj, bo nie miałbym kodu w domu na weekend) i chyba udało mi się poprawić skalowanie planszy.

sieka44 commented 7 years ago

nie da się naszego projektu odpalić bez SQL servera na kompie nie ? :/

pzjp commented 7 years ago

Można obejść/wyłączyć bazę ustawiając jedno true w konstruktorze LoopServera. Dla pewności można poprawić konstruktor DataBase, gdyby rzucał wyjątkiem przy ładowaniu sterownika (nie powinien).

sieka44 commented 7 years ago

Właśnie próbowałem ale mi się nie udawało :(