{"id":18780197,"url":"https://github.com/artysta/mastermindgame","last_synced_at":"2025-12-18T18:30:15.453Z","repository":{"id":115415155,"uuid":"232382018","full_name":"artysta/MasterMindGame","owner":"artysta","description":"Prosty projekt programistyczny związany z grą Mastermind wykonany na potrzeby przedmiotu Matematyka dyskretna na WSEI Kraków.","archived":false,"fork":false,"pushed_at":"2020-01-31T13:35:11.000Z","size":300,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-29T10:42:59.986Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/artysta.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-07T17:46:19.000Z","updated_at":"2023-10-25T20:22:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"63f29d95-1d55-4397-aa99-0f08f7aad932","html_url":"https://github.com/artysta/MasterMindGame","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artysta%2FMasterMindGame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artysta%2FMasterMindGame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artysta%2FMasterMindGame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artysta%2FMasterMindGame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artysta","download_url":"https://codeload.github.com/artysta/MasterMindGame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239695408,"owners_count":19682060,"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":[],"created_at":"2024-11-07T20:25:15.722Z","updated_at":"2025-12-18T18:30:15.373Z","avatar_url":"https://github.com/artysta.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# MasterMindGame\nProsty projekt programistyczny związany z grą Mastermind wykonany na potrzeby przedmiotu Matematyka dyskretna na WSEI Kraków.\n\n- Więcej informacji na temat gry Mastermind: https://pl.wikipedia.org/wiki/Mastermind_(gra_planszowa)\n- Dokumentacja wygenerowana za pomocą narzędzia `Doxygen`: https://artysta.github.io/mastermind/\n\n## PL\n\n### Klasa Game - model gry dostarczający API\n\n`char[] POSSIBLY_LETTERS` - tablica literek (kolorów), z któych składać się może kod:\n- r - red,\n- y - yellow,\n- g - green,\n- b - blue\n- c - cyan,\n- m - magenta,\n- p - purple (dodatkowy),\n- o - orange (dodatkowy).\n\n`int MIN_COLORS` - minimalna liczba kolorów, z których może składać się kod.\n\n`int MAX_COLORS` - maksymalna liczba kolorów równa liczbie literek, z których składać się może kod.\n\n`MIN_CODE_LENGTH` - minimalna długość kodu do odgadnięcia.\n    \n`MAX_CODE_LENGTH` - maksymalna długość kodu do odgadnięcia.\n    \n`int MAX_MOVES` - maksymalna liczba ruchów.\n\n`string Code` - zwraca / ustawia kod do odgadnięcia.\n\n`int CodeLength` - zwraca / ustawia długość kodu.\n\n`string Letters` - zwraca / ustawia literki brane pod uwagę przy losowaniu kodu.\n\n`int TotalMoves` - zwraca / ustawia liczbę ruchów.\n\n`State GameState` - zwraca / ustawia stan gry.\n\n`void Start()` - rozpoczyna grę - metoda powinna zostać użyta, gdy użytkownik wyrazi chęć rozpoczęcia gry.\n\n`void Stop()` - kończy grę z niepowodzeniem - gracz poddał się lub nie udało mu się odgadnąć kodu w wyznaczonej liczbie ruchów.\n\n`void SetLetters(int length)` - ustawia literki (na podstawie podanej długości), które będą brane pod uwagę podczas losowania kodu.\n\n`bool CheckCodeLength(string code)` - sprawdza, czy długość podanego przez gracza kodu jest prawidłowa.\n\n`int[] CheckCode(string code)` - sprawdza kod i zwraca tablicę zawierającą ilość liczb równą ustalonej długości kodu.\n\n- Dla każdej literki (każdego indeksu) kodu zwraca:\n- -1 - jeżeli literka na danej pozycji (danym indeksie) w ogóle nie znajduje się w podanym przez użytkownika kodzie,\n-  0 - jeżeli literka znajduje się w podanym przez użytkownika kodzie, ale na innym miejscu,\n-  1 - jeżeli literka znajduje się w podanym przez użytkownika kodzie na dokładnie tym samym miejscu.\n\n`void SetRandomCode()` - ustawia losowy kod do odgadnięcia.\n\n`bool SetUserCode(string code)` - ustawia kod podany przez gracza, który będzie mógł zostać odgadnięty przez innego gracza / komputer.\n\nZwraca:\n- false, gdy długość kodu podanego przez gracza jest inna od tego, który obsługuje w konkretnej sytuacji gra.\n- false również w sytuacji, gdy w podanym przez użytkownia kodzie znajdują się literki nieobsługiwane przez grę.\n- zwraca true, gdy kod spełnia wszystkie wymagania.\nTaka weryfikacja kodu pozwala uniknąć m.in. zapętlenia się gry.\n\n### Enum State - pozwala określić stan gry\n- `InProgres` - gra aktualnie trwa,\n- `Over` - gra została zakończona i nie udało się odgadnąć kodu,\n- `Finished` - gra została zakończona, ale gracz odgadł kod.\n\n### Computer - klasa używana, gdy odgadywać kod ma \"komputer\".\n`string GetRandomCode(string letters, int length)` - zwraca losowy kod o długości `length`, skłądający się z literek zawartych w ciągu znaków `letters`.\n\n---\n\n## ENG - a little simplified description\n\n### Game class - model of game that provides API\n\n`POSSIBLY_LETTERS` - letters from which the code may consist.\n\n`MIN_COLORS` - minimum number of colors.\n\n`MAX_COLORS` - maximum number of colors.\n\n`MIN_CODE_LENGTH` - minimum code length.\n\n`MAX_CODE_LENGTH` - maximum code length.\n\n`MAX_MOVES` - maximum number of possibly moves.\n\n`Code` - code to guess.\n\n`CodeLength` - length of the code.\n\n`Letters` - letters form which the code will consist off - default rygbcm.\n\n`TotalMoves` - total moves made by player.\n\n`GameState` - state of the game.\n\n`void Start()` - starts the game, should be used at the beginning, as the first method.\n\n`void Stop()` - stops the game, should be used, when the player wants to give up.\n\n`void Finish()` - runs when the player guesses the code.\n\n`void SetLetters(int length)` - set the letters from which the code will consist of (it takes `length` letters from `POSSIBLY_LETTERS`).\n\n`bool CheckCodeLength(string code)` - checks if the lenght of code is equal to CodeLenth.\n\n`int[] CheckCode(string code)` - checks code and return table of numbers (-1, 0 or 1):\n- -1 - if the letter at specific index is not contained in the Code,\n-  0 - if the letters at specific index is contained in the code, but on another position,\n-  1 - if the letter is exactly on the same index.\n\n`void SetRandomCode()` - sets random code.\n\n`void SetUserCode(string code)` - sets code that can be guessed by other player or \"computer\" and it checks if the length is right and if the code consists of valid letters.\n\n### State enum - helps to control the game\n- `InProgress` - game is in profress.\n\n- `Over` - game is over.\n\n- `Finished` - game is finished - the code has been guessed.\n\n### Computer - class that can be used, when the code has to be guessed by \"computer\"\n`string GetRandomCode(string letters, int length)` - returns random code (`letters` - from which `letters` code must consist of, length - lenght of that code).\n\n---\n\n### Screenshots\n\n1) GameCLI\n\n\u003ctable\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-1.png\" alt=\"screenshot-1.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-2.png\" alt=\"screenshot-2.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n\u003c/table\u003e\n\n2) GameWPF\n\n\u003ctable\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-3.png\" alt=\"screenshot-3.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-4.png\" alt=\"screenshot-4.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-5.png\" alt=\"screenshot-5.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n\u003c/table\u003e\n\n2) GameXamarinAndroid\n\n\u003ctable\u003e\n   \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-6.png\" alt=\"screenshot-3.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\n         \u003cimg src=\"/screenshots/screenshot-7.png\" alt=\"screenshot-4.png\"/\u003e\n      \u003c/td\u003e\n   \u003c/tr\u003e\n\u003c/table\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartysta%2Fmastermindgame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartysta%2Fmastermindgame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartysta%2Fmastermindgame/lists"}