https://github.com/artysta/mastermindgame
Prosty projekt programistyczny związany z grą Mastermind wykonany na potrzeby przedmiotu Matematyka dyskretna na WSEI Kraków.
https://github.com/artysta/mastermindgame
Last synced: 6 months ago
JSON representation
Prosty projekt programistyczny związany z grą Mastermind wykonany na potrzeby przedmiotu Matematyka dyskretna na WSEI Kraków.
- Host: GitHub
- URL: https://github.com/artysta/mastermindgame
- Owner: artysta
- Created: 2020-01-07T17:46:19.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-01-31T13:35:11.000Z (over 6 years ago)
- Last Synced: 2024-12-29T10:42:59.986Z (over 1 year ago)
- Language: C#
- Size: 293 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MasterMindGame
Prosty projekt programistyczny związany z grą Mastermind wykonany na potrzeby przedmiotu Matematyka dyskretna na WSEI Kraków.
- Więcej informacji na temat gry Mastermind: https://pl.wikipedia.org/wiki/Mastermind_(gra_planszowa)
- Dokumentacja wygenerowana za pomocą narzędzia `Doxygen`: https://artysta.github.io/mastermind/
## PL
### Klasa Game - model gry dostarczający API
`char[] POSSIBLY_LETTERS` - tablica literek (kolorów), z któych składać się może kod:
- r - red,
- y - yellow,
- g - green,
- b - blue
- c - cyan,
- m - magenta,
- p - purple (dodatkowy),
- o - orange (dodatkowy).
`int MIN_COLORS` - minimalna liczba kolorów, z których może składać się kod.
`int MAX_COLORS` - maksymalna liczba kolorów równa liczbie literek, z których składać się może kod.
`MIN_CODE_LENGTH` - minimalna długość kodu do odgadnięcia.
`MAX_CODE_LENGTH` - maksymalna długość kodu do odgadnięcia.
`int MAX_MOVES` - maksymalna liczba ruchów.
`string Code` - zwraca / ustawia kod do odgadnięcia.
`int CodeLength` - zwraca / ustawia długość kodu.
`string Letters` - zwraca / ustawia literki brane pod uwagę przy losowaniu kodu.
`int TotalMoves` - zwraca / ustawia liczbę ruchów.
`State GameState` - zwraca / ustawia stan gry.
`void Start()` - rozpoczyna grę - metoda powinna zostać użyta, gdy użytkownik wyrazi chęć rozpoczęcia gry.
`void Stop()` - kończy grę z niepowodzeniem - gracz poddał się lub nie udało mu się odgadnąć kodu w wyznaczonej liczbie ruchów.
`void SetLetters(int length)` - ustawia literki (na podstawie podanej długości), które będą brane pod uwagę podczas losowania kodu.
`bool CheckCodeLength(string code)` - sprawdza, czy długość podanego przez gracza kodu jest prawidłowa.
`int[] CheckCode(string code)` - sprawdza kod i zwraca tablicę zawierającą ilość liczb równą ustalonej długości kodu.
- Dla każdej literki (każdego indeksu) kodu zwraca:
- -1 - jeżeli literka na danej pozycji (danym indeksie) w ogóle nie znajduje się w podanym przez użytkownika kodzie,
- 0 - jeżeli literka znajduje się w podanym przez użytkownika kodzie, ale na innym miejscu,
- 1 - jeżeli literka znajduje się w podanym przez użytkownika kodzie na dokładnie tym samym miejscu.
`void SetRandomCode()` - ustawia losowy kod do odgadnięcia.
`bool SetUserCode(string code)` - ustawia kod podany przez gracza, który będzie mógł zostać odgadnięty przez innego gracza / komputer.
Zwraca:
- false, gdy długość kodu podanego przez gracza jest inna od tego, który obsługuje w konkretnej sytuacji gra.
- false również w sytuacji, gdy w podanym przez użytkownia kodzie znajdują się literki nieobsługiwane przez grę.
- zwraca true, gdy kod spełnia wszystkie wymagania.
Taka weryfikacja kodu pozwala uniknąć m.in. zapętlenia się gry.
### Enum State - pozwala określić stan gry
- `InProgres` - gra aktualnie trwa,
- `Over` - gra została zakończona i nie udało się odgadnąć kodu,
- `Finished` - gra została zakończona, ale gracz odgadł kod.
### Computer - klasa używana, gdy odgadywać kod ma "komputer".
`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`.
---
## ENG - a little simplified description
### Game class - model of game that provides API
`POSSIBLY_LETTERS` - letters from which the code may consist.
`MIN_COLORS` - minimum number of colors.
`MAX_COLORS` - maximum number of colors.
`MIN_CODE_LENGTH` - minimum code length.
`MAX_CODE_LENGTH` - maximum code length.
`MAX_MOVES` - maximum number of possibly moves.
`Code` - code to guess.
`CodeLength` - length of the code.
`Letters` - letters form which the code will consist off - default rygbcm.
`TotalMoves` - total moves made by player.
`GameState` - state of the game.
`void Start()` - starts the game, should be used at the beginning, as the first method.
`void Stop()` - stops the game, should be used, when the player wants to give up.
`void Finish()` - runs when the player guesses the code.
`void SetLetters(int length)` - set the letters from which the code will consist of (it takes `length` letters from `POSSIBLY_LETTERS`).
`bool CheckCodeLength(string code)` - checks if the lenght of code is equal to CodeLenth.
`int[] CheckCode(string code)` - checks code and return table of numbers (-1, 0 or 1):
- -1 - if the letter at specific index is not contained in the Code,
- 0 - if the letters at specific index is contained in the code, but on another position,
- 1 - if the letter is exactly on the same index.
`void SetRandomCode()` - sets random code.
`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.
### State enum - helps to control the game
- `InProgress` - game is in profress.
- `Over` - game is over.
- `Finished` - game is finished - the code has been guessed.
### Computer - class that can be used, when the code has to be guessed by "computer"
`string GetRandomCode(string letters, int length)` - returns random code (`letters` - from which `letters` code must consist of, length - lenght of that code).
---
### Screenshots
1) GameCLI
2) GameWPF
2) GameXamarinAndroid