GithubHelp home page GithubHelp logo

multiplayer-game-tanks's Introduction

TANKS - MULTIPLAYER

Autor: Grzegorz Klimek Gr. Lab. 4 rok II IS WIMIiP

Opis projektu:

Projekt ten przewiduje stworzenie gry, w której użytkownicy będą się rejestrować w bazie danych, podając tzw. nick gracza. Później muszą się zalogować - bez tego niemożliwe jest dołączenie do gry. Statystyki wszystkich zarejestrowanych użytkowników będą dostępne w menu. Następnie taki użytkownik może wejść do gry dostając do dyspozycji czołg wygenerowany na mapie. Gracz porusza się czołgiem a jego zadanie polega na zniszczeniu wrogich czołgów (innych graczy, którzy połączą sie z serwerem i wejdą do gry).


Harmonogram:

[1] Okienka tworzone przy pomocy biblioteki graficznej Swing

[1.1] Stworzenie klasy obsługującej główne okno programu (klasa MainFrame) [ 08.03.16 ]

-> stworzenie okna, odpowiednie ustawienie go na ekranie, nazwanie itp.
-> stworzenie panelu odpowiedzialnego za ustawienie tła aplikacji (klasa MenuPanel)
-> ustawienie icona okna aplikacji

[1.2] Tworzenie GUI + oprogramowanie przycisków [ 08.03.16 ]

-> utworzenie menu głównego aplikacji wraz z menu pobocznymi
-> stworzenie buttonów, napisów, buttonów wyboru, textfieldów
-> działanie bez konieczności otwierania nowych okien - wszystko w jednym oknie
-> dodanie akcji do przycisków + obsłużenie ich

[1.3] Wygenerowanie mapy oraz stworzenie modelu czołgu + oprogramowanie go [ 15.03.16 ]

-> stworzenie mapy (tylko tło) przy pomocy odpowiedniej klasy (klasa GamePanel)
-> dodanie belki na górze mapy z informacją o aktualnym życiu, ilości zniszczonych czołgów i bycia zniszczonym
-> stworzenie czołgu przy pomocy odpowiedniej klasy (klasa Player)
-> sterowanie czołgiem - reakcja na klawisze
-> strzelanie czołgiem - w jednym kierunku

[1.4] Animacje czołgów [ 22.03.16 ]

-> prawidłowe zachowanie się czołgu czyli obracanie się (animacja), kierunek strzału
-> losowe generowanie czołgu na mapie

[1.5] Rozgrywka ( otrzymywanie obrażeń, strata zdrowia, usuwanie z mapy ) [ 05.04.16 ]

-> poprawna fizyka gry
-> mechanika związana z otrzymywanymi obrażeniami
-> zachowanie czołgów - utrata zdrowia, sprawdzanie czy został zniszczony, jeśli tak to usuwanie go z mapy

[2] Zapis i odczyt plików

[2.1] Zapisywanie i odpisywanie konfiguracji [ 31.05.16 ]

-> na jakim porcie jest rozgrywka, ile czołgów, użytkownik który łączy się na serwerze
-> konfiguracja serwera i klienta

[2.2] Wczytywanie mapy z pliku [ 22.03.16 ]

[2.3] Plik z logami klienta i serwera [ 31.05.16 ]

[2.4] Zapis stanu gry na żądanie użytkownika (czołgi które zniszczyłem, ile respawnów itp.) + dżwięk strzałów [ 31.05.16 ]


[3] Współbieżność: wątki, operacje atomowe, itp.

[3.1] Mechanizm bezpiecznego rozgłaszania komunikatów między użytkownikami [ 10.05.16 ]

[3.2] Ruch gracza + kolizje (wątek animacji) [ 05.04.16 ]

[3.3] Utworzenie wątku serwera (akceptujący) + wątki dla każdego klienta + mechanizm bezpiecznego zatrzymywania wątku (join, flagi podtrzymujące) [ 26.04.16 ]

[3.4] Wątek do każdego klienta (synchronizowanie obiektów i bezpieczne przerwania) [ 10.05.16 ]


[4] Bazy danych: JDBC dla: MySQL

[4.1] Zaprojektowanie bazy danych użytkowników, połączenie z bazą za pomocą JDBC [ 17.05.16 ]

-> łączenie z bazą danych
-> wstawianie danych do bazy
-> wczytywanie danych z bazy do listy
-> zamykanie połączenia

[4.2] Mechanizm walidacji (regexy - java regexy + siła hasła) [ 24.05.16 ]

[4.3] Logika autoryzacji [ 24.05.16 ]

-> logowanie
-> rejestracja

[4.4] Mechanizm obsługi statystyk (raport - w ciągu ostatniego miesiąca jakiś tam użytkownik miał jakieś tam statystyki) [ 31.05.16 ]


[5] Komunikacja sieciowa poprzez sockety

[5.1] Aplikacja server [ 26.04.16 ]

-> oczekiwanie na połączenie
-> odbieranie informacji od klienta
-> wykonanie operacji w zależności od flagi przekazanej przez główną aplikację.

[5.2] Aplikacja client [ 26.04.16 ]

-> łączenie się z serwerem
-> wysyłanie komunikatów do serwera i oczekiwanie na odpowiednią odpowiedź w zależności od wysłanej flagi.
-> wykonanie odpowiedniej operacji w zależności od wysłanej informacji zwrotnej od serwera.

[5.3] Ustawienie połączenia wielu klientów poprzez serwer, logika server-klient w grze [ 17.05.16 ]

[5.4] Protokół komunikacji DataInputStream, DataOutputStream [ 26.04.16 ]


[6] Zaproponowane przez studenta

[6.1] Logika rozgrywki, kolizje, wątek główny gry (aktualizujący obiekty na mapie) [ 19.04.16 ]

[6.2] Obsługa pocisków [ 19.04.16 ]

[6.3] Grafika [ 15.03.16 ]

-> dodanie odpowiednich grafik związanych z tematyką gry
-> utworzenie przejrzystego menu głównego aplikacji
-> zmiana stylu buttonów na przyjemny dla wzroku

[6.4] Stworzenie tabeli ze statystykami użytkowników w menu (sortowanie wyników itp.) [ 17.05.16 ]


[Legenda]

[1] - poruszane tematy [1.1] - zadania [->] - podzadania


multiplayer-game-tanks's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.