Skip to content

Commit

Permalink
end project
Browse files Browse the repository at this point in the history
  • Loading branch information
eripe14 committed Oct 27, 2024
1 parent e2c8941 commit 0db4a16
Show file tree
Hide file tree
Showing 209 changed files with 54,904 additions and 1,560 deletions.
8 changes: 4 additions & 4 deletions .idea/editor.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/statistic.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

103 changes: 59 additions & 44 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,44 +1,59 @@
cmake_minimum_required(VERSION 3.29)
project(MemoryGame)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -finput-charset=UTF-8 -fexec-charset=UTF-8 --static")

# Pobranie nlohmann/json
include(FetchContent)

FetchContent_Declare(
json
URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz
)
FetchContent_MakeAvailable(json)

# Dodanie wszystkich plików Ÿród³owych do projektu
add_executable(MemoryGame
main.cpp
game/user/User.cpp
game/user/UserManager.cpp
game/user/User.h
game/user/UserManager.h
game/board/BoardManager.h
game/board/BoardManager.cpp
game/board/card/Card.cpp
game/board/card/Card.h
game/board/Board.cpp
game/board/Board.h
game/board/difficulty/Difficulty.h
game/board/card/CardTypeService.h
game/board/difficulty/DifficultyProvider.h
game/user/UserProvider.cpp
game/user/UserProvider.h
game/board/queue/TurnQueue.cpp
game/board/queue/TurnQueue.h
game/Game.cpp
game/Game.h
game/board/SizeProvider.h
game/backup/BackupService.cpp
game/backup/BackupService.h
)

# Linkowanie biblioteki nlohmann_json do projektu
target_link_libraries(MemoryGame PRIVATE nlohmann_json::nlohmann_json)
cmake_minimum_required(VERSION 3.29)
project(MemoryGame)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -finput-charset=UTF-8 -fexec-charset=UTF-8 --static")

include(FetchContent)

FetchContent_Declare(
json
URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz
)
FetchContent_MakeAvailable(json)

add_executable(MemoryGame
src/main.cpp
src/game/user/User.cpp
src/game/user/UserManager.cpp
src/game/user/User.h
src/game/user/UserManager.h
src/game/board/BoardManager.h
src/game/board/BoardManager.cpp
src/game/board/card/Card.cpp
src/game/board/card/Card.h
src/game/board/Board.cpp
src/game/board/Board.h
src/game/board/difficulty/Difficulty.h
src/game/board/card/CardTypeService.h
src/game/board/difficulty/DifficultyProvider.h
src/game/user/UserProvider.cpp
src/game/user/UserProvider.h
src/game/board/queue/TurnQueue.cpp
src/game/board/queue/TurnQueue.h
src/game/Game.cpp
src/game/Game.h
src/game/board/SizeProvider.h
src/game/backup/BackupService.cpp
src/game/backup/BackupService.h
src/game/backup/LoadHandler.h
src/game/backup/LoadHandler.cpp
src/game/user/UserRepository.cpp
src/game/user/UserRepository.h
src/game/user/UserStatistics.h
src/game/user/UserStatistics.cpp
src/game/GameState.h
src/game/CardSelector.h
src/game/score/ScoreManager.h
src/game/CardSelector.cpp
src/game/GameState.cpp
src/game/score/ScoreManager.cpp
src/game/achievement/Achievement.h
src/game/achievement/AchievementManager.h
src/game/user/UserGameStats.cpp
src/game/user/UserGameStats.h
src/game/Menu.cpp
src/game/Menu.h
)

target_link_libraries(MemoryGame PRIVATE nlohmann_json::nlohmann_json)
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Jak zaimplementować projekt?
Aplikacja została napisana w środowisku **CLion** i zaleca się jej uruchamianie bezpośrednio w tym środowisku. Aplikacja implementuje jedną bibliotekę: [nlohmann/json](https://github.com/nlohmann/json), która jest dodana w pliku ```CMakeLists.txt```.

## Jak uruchomić projekt?
Należy utworzyć pusty folder, w którym będzie znajdować się plik wykonywalny. Następnie wystarczy uruchomić plik wykonywalny ```.exe``` (zaleca się korzystanie z aplikacji w trybie pełnoekranowym).

## Opis aplikacji
Po uruchomieniu gry użytkownikowi wyświetla się menu główne, w którym może wybrać jedną z pięciu opcji:
1. Nowa gra - rozpoczęcie nowej gry.
2. Wczytaj grę - wczytanie zapisanej gry.
3. Statystyki graczy - wyświetlenie statystyk graczy oraz odblokowanych przez nich osiągnięć. **Pojawią się tam tylko użytkownicy zapisani - tacy, którzy zagrali już w grę.**
4. Osiągnięcia - wyświetlenie wszystkich osiągnięć wraz z ich opisem.
5. Wyjście - wyjście z gry.

## Funkcjonalność
Do gry dodano kilka dodatkowych funkcji, które urozmaicają rozgrywkę:
1. Odblokowywanie osiągnięć.
2. Gra z komputerem - włącza się automatycznie, gdy wprowadzony zostanie tylko jeden gracz.
3. Zapisywanie użytkowników wraz z ich osiągnięciami i statystykami.
4. Poziomy trudności - gracz może wybrać poziom trudności, na którym chce grać.
5. Wyświetlanie statystyk graczy.
6. Wyświetlanie osiągnięć.
7. Możliwość wyboru rozmiaru planszy.
8. Możliwość grania w trybie hot-seat, aż do 10 graczy.
9. Zapisywanie gry w dowolnym momencie poprzez wpisanie ```!zapisz```. Grę można wczytać w menu głównym. Gra obsługuję wiele zapisów, które są zapisywane w folderze ```resources```.

## Dodatkowe informacje
- Aplikacja sama generuje folder ```resources``` w katalogu, w którym została uruchomiona gra.
- Cała gra jest napisana w języku C++ z wykorzystaniem biblioteki ```JSON``` do zapisu danych.
- Aplikacja zawiera 3200 linii kodu, a jej napisanie zajęło prawie 27 godzin.

## Autor
- **Autorem aplikacji jest Karol Dronia.**
Loading

0 comments on commit 0db4a16

Please sign in to comment.