{"id":18534969,"url":"https://github.com/jacek13/mahjongsolitaire","last_synced_at":"2025-05-15T00:15:44.786Z","repository":{"id":64929025,"uuid":"480964676","full_name":"jacek13/MahjongSolitaire","owner":"jacek13","description":"Mahjong Solitaire based on the SDL2 library.","archived":false,"fork":false,"pushed_at":"2022-12-18T11:59:44.000Z","size":8103,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-26T03:12:08.029Z","etag":null,"topics":["cpp","cpp14","mahjong-solitaire","sdl2","visual-studio"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jacek13.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-12T20:33:41.000Z","updated_at":"2023-02-13T07:39:37.000Z","dependencies_parsed_at":"2022-12-19T03:31:30.124Z","dependency_job_id":null,"html_url":"https://github.com/jacek13/MahjongSolitaire","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacek13%2FMahjongSolitaire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacek13%2FMahjongSolitaire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacek13%2FMahjongSolitaire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacek13%2FMahjongSolitaire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jacek13","download_url":"https://codeload.github.com/jacek13/MahjongSolitaire/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239248861,"owners_count":19607111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp14","mahjong-solitaire","sdl2","visual-studio"],"created_at":"2024-11-06T19:18:12.650Z","updated_at":"2025-02-17T07:20:16.726Z","avatar_url":"https://github.com/jacek13.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 1. **Mahjong Solitaire**\nTo gra polegająca na znajdowaniu par jednakowych płytek i usuwaniu ich z planszy według ściśle określonych reguł. Płytki można usunać tylko wtedy, gdy nie są one zablokowane, to znaczy, że plytka nie jest przykryta inną lub nie sąsiaduje z lewej i prawej strony z innymi. Rozgrywka kończy się wtedy, gdy usuniemy wszystkie pary z planszy. \n\n![GAME_DEMO](resources/game_demo.gif)\n\n---\n\n ## **Uruchamianie projektu**\nW celu uruchomienia projektu niezbędne będzie skorzystanie z biblioteki SDL2. Pod tym [linkiem](https://drive.google.com/drive/folders/1Sw3VdbnQzKEaawAaY_xsUX6tB6j68zXX?usp=sharing) znajduje się wersja SDL2 wykorzystana w projekcie (Aktualnie dla kompilacji x64 projekt wyszukuje bibliotek w folderze solucji). Po jej pobraniu należy zadbać o wrzucenie całego Folderu 'VisualStudioSDL' do folderu solucji tak jak na poniższym obrazku.\n\n![WHERE_STORE_SDL2](resources/where_store_SDL2.PNG)\n\nDrugą opcją jest ściągnięce folderu i umieszczenie go w miejscu gdzie Visual Studio wyszukuje standardowo biblioteki i pliki nagłówkowe. Wtedy należy zmienić w plikach sposób wskazywania plików nagłówkowych dla preprocesora z `\"nazwa_pliku.h\"` na `\u003cnazwa_pliku.h\u003e`.\n\n# 2. **Ustawienia**\nW celu zmiany ustawień w aktualnej wersji programu, należy odszukać plik 'config.txt'. Za pomocą słów kluczowych i wartości liczbowych zmieniamy wartości ustawień.\n\n### PRZYKŁAD:\n```\nFULLSCREEN 1\t\t \u003c- ustawia pełny ekran\nSCREEN_WIDTH 1600\t \u003c- ustawia szerokość okna na 1600 pikseli\nSCREEN_HEIGHT 900\t \u003c- ustawia wysokość okna na 900 pikseli\n```\n\n# 3. **Modyfikowanie**\nProgram umożliwia modyfikowanie warstwy video poprzez podmiane tekstur i czcionki. Można to zrobić na 2 sposoby. Pierwszy polega na dosłownym podmienieniu poszczególnych plikow. Zachowując te same nazwy plików. Drugim sposobem jest modyfikowanie ścieżek w plikach: **`textures_paths.txt`** oraz **`font_path.txt.`** Za pomoca komend oznaczajacych odpowiednie tekstury mozemy wskazywac cale sciezki do szukanego pliku.\n\n### PRZYKŁAD:\n```\nBAMBOO_THREE Inne_tekstury/bamboo_3.png\t \u003c- ustawienie ścieżki dla tekstury BAMBOO_THREE\nFONT C:/Inne_czcionki/Merienda-Regular.ttf\t \u003c- ustawia ścieżke do alternatywnej czcionki\n```\n\n# 4. **Spis komend**\nW przypadku gdy pliki w folderze **`'data'`** zostaną źle nadpisane możesz skorzystac z poniższej listy komend zawierajacej wszystkie niezbędne słowa kluczowe dla poszczególnych plikow. W razie skasowania zawartosci pliku **`'readme.txt'`** wystarczy usunąć go trwale. Program w takim wypadku wykryje brak pliku i stworzy go na nowo.\n\n### Lista komend:\n1) **dla pliku 'textures_paths.txt'**\n* SIGN_RED_ONE,\n* SIGN_RED_TWO,\n* SIGN_RED_THREE,\n* SIGN_RED_FOUR,\n* SIGN_RED_FIVE,\n* SIGN_GREEN,\n* SIGN_GOLD_ONE,\n* SIGN_GOLD_TWO,\n* SIGN_GOLD_THREE,\n* SIGN_GOLD_FOUR,\n* SIGN_BLACK_ONE,\n* SIGN_BLACK_TWO,\n* SIGN_BLACK_THREE,\n* SIGN_BLACK_FOUR,\n* SIGN_RECTANGLE,\n* SIGNS_ONE,\n* SIGNS_TWO,\n* SIGNS_THREE,\n* SIGNS_FOUR,\n* SIGNS_FIVE,\n* SIGNS_SIX,\n* SIGNS_SEVEN,\n* SIGNS_EIGHT,\n* SIGNS_NINE,\n* DOTS_ONE,\n* DOTS_TWO,\n* DOTS_THREE,\n* DOTS_FOUR,\n* DOTS_FIVE,\n* DOTS_SIX,\n* DOTS_SEVEN,\n* DOTS_EIGHT,\n* DOTS_NINE,\n* BAMBOO_ONE,\n* BAMBOO_TWO,\n* BAMBOO_THREE,\n* BAMBOO_FOUR,\n* BAMBOO_FIVE,\n* BAMBOO_SIX,\n* BAMBOO_SEVEN,\n* BAMBOO_EIGHT,\n* BAMBOO_NINE,\n* DEFAULT,\n* SELECTED,\n* HELP.\n\n2) **dla pliku 'icon_path.txt'**\n* ICON\n\n3) **dla pliku 'font_path.txt'**\n* FONT\n\n4) **dla pliku 'pattern_path.txt'**\n* PATTERN\n\n# 5. Przykładowy wzór dla planszy:\nProgram umożliwia wstawianie dowolnej planszy do gry przez użytkownika. \n\n### PRZYKŁAD:\n```\nW 12\nH 8\nPATTERN\n897650056798\n700000000007\n600110001106\n500101110105\n500100100105\n600100000106\n700000000007\n654321123456\n```\n### REZULTAT:\n\n![](resources/custom_pattern_example.PNG)\n---\n\n# 6. Elementy wykonane/niewykonane:\n* [X] wczytywanie różnych kształtów plansz\n* [X] mechanizm osiągnięć oparty na wzorcu obserwator\n* [X] dokumentowanie statystyk, które generowane są do plików .CSV\n* [X] umożliwienie łatwej podmiany plików graficznych, dzięki czemu szatę wizualną można dostosować samemu\n* [X] odwzorowanie pełnej mechaniki [Mahjong Solitaire](https://www.kurnik.pl/mahjong/) na której się wzorowałem\n* [ ] interaktywne menu graficzne\n* [ ] generowanie różnych serii permutacji danej planszy tak, aby 2 graczy na różnych komputerach mogło zmierzyć się ze sobą w takich samych konfiguracjach\n* [ ] dostosowanie projektu pod inne platformy systemowe (Linux, macOS)\n\n# 7. Źródła wykorzystywane w projekcie:\n* [SDL2](https://www.libsdl.org/download-2.0.php)\n* [Mahjong tileset designed by Code Inferno](www.codeinferno.com)\n\n# 8. Autor projektu\n\n| Imię | Nazwisko|github|\n|------|---------|----|\n|Michał|Jackowski|[jacek13](https://github.com/jacek13)|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacek13%2Fmahjongsolitaire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacek13%2Fmahjongsolitaire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacek13%2Fmahjongsolitaire/lists"}