Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback branch #46

Open
wants to merge 100 commits into
base: feedback
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
04ce016
Add basic files, including confituration files and package.json (#1)
AleksandraCyp Jan 25, 2021
42b9376
MNG-73 Add workflow for gh-pages (#2)
daria305 Jan 25, 2021
e18cd6e
MNG-77_SetupSASSforProject (#3)
mariusz-sm Jan 26, 2021
6521410
MNG-87-add images and fonts to project (#4)
memeraki Jan 26, 2021
1bbc28d
MNG-76 Create Loading Page
memeraki Jan 28, 2021
36d9be3
MNG-83 Add the Pokemon class (#5)
AleksandraCyp Jan 28, 2021
b8b10df
MNG-76 loading page
memeraki Jan 29, 2021
69ae587
Merge pull request #6 from lukaszdutka/MNG-76-loading-page
AleksandraCyp Jan 29, 2021
1c62f91
MNG-78-starting-page (#7)
mariusz-sm Feb 1, 2021
f3e3433
MNG-82 create player class (#8)
AgataLudwiczynska Feb 3, 2021
54b5fb1
Mng 81 add pokemon choosing screen (#9)
AleksandraCyp Feb 3, 2021
ec4e716
Mng 85 fight logic (#10)
daria305 Feb 4, 2021
a3d60cb
MNG-79 fight view template (#13)
memeraki Feb 5, 2021
4bd134c
Function RenderChoosePokemonScreen
AgataLudwiczynska Feb 7, 2021
50d9ff8
MNG-84 pokemon factory (#15)
daria305 Feb 7, 2021
2d25dbd
MNG-92 MNG-93 Set timeOut for showing the starting page, add event li…
AleksandraCyp Feb 7, 2021
5a2b7b3
Merge branch 'master' into MNG-89---Clicking-Start-should-render-Choo…
AgataLudwiczynska Feb 7, 2021
cda6db2
Appendig function to the whole index.ts
AgataLudwiczynska Feb 7, 2021
b8f5490
MNG-88_StartButtonActivation (#12)
mariusz-sm Feb 7, 2021
d0489f4
Merge branch 'master' into MNG-89---Clicking-Start-should-render-Choo…
AgataLudwiczynska Feb 7, 2021
e43e43d
Corrections
AgataLudwiczynska Feb 7, 2021
b0b3a0f
MNG-89 clicking start should render choose pokemon screen (#17)
AgataLudwiczynska Feb 7, 2021
3a67f72
MNG-95 Add GameHandler class (#14)
AleksandraCyp Feb 8, 2021
fd852ef
MNG-107 Add geodude instead of tentacruel
daria305 Feb 8, 2021
6ab1f86
Merge pull request #18 from lukaszdutka/MNG-107-Poke-data-corrections
AleksandraCyp Feb 8, 2021
b3ee751
MNG-103 choose pokemon system (#19)
AleksandraCyp Feb 8, 2021
1a80fae
MNG-94 MNG-108 Start a new game, add functions that will render the c…
AleksandraCyp Feb 10, 2021
a866dd0
MNG-99 & MNG-100
memeraki Feb 10, 2021
7de69d4
MNG-109 added
memeraki Feb 10, 2021
5410f15
Add game result template
mariusz-sm Feb 10, 2021
9c2d5b0
Add styling for mobile devices
mariusz-sm Feb 10, 2021
5e6471d
Blocking the start with unwritten name
AgataLudwiczynska Feb 10, 2021
5d1336c
added magicFunction
memeraki Feb 11, 2021
80e3d48
added animations for buttons
memeraki Feb 11, 2021
05ecc60
Merge pull request #21 from lukaszdutka/MNG-99&MNG-100-modals-for-act…
AleksandraCyp Feb 11, 2021
c52b5c9
Style button
AgataLudwiczynska Feb 11, 2021
c69aec4
Merge branch 'master' into MNG-89---Clicking-Start-should-render-Choo…
AgataLudwiczynska Feb 11, 2021
b3e7d74
Blocking button when the name is too long
AgataLudwiczynska Feb 11, 2021
53dbfb9
Merge pull request #23 from lukaszdutka/MNG-89---Clicking-Start-shoul…
AleksandraCyp Feb 11, 2021
15911f8
MNG-98 Add useMango to gameHandler class (#22)
AgataLudwiczynska Feb 11, 2021
3a9d23b
MNG-97 MNG-101 change player&change pokemon (#24)
AleksandraCyp Feb 11, 2021
353dae6
Add styling for desktop devices
mariusz-sm Feb 11, 2021
a80716b
Uncomment
mariusz-sm Feb 11, 2021
c21a1da
Merge master to branch
mariusz-sm Feb 11, 2021
7d47b29
Add result modal functions
mariusz-sm Feb 11, 2021
e01d490
delete unnecessary code
memeraki Feb 11, 2021
87dc9de
Update showResultModal and playAgainModal functions
mariusz-sm Feb 11, 2021
b33fa6a
animations for choosePokemonsPage
memeraki Feb 11, 2021
6bb6cf1
added some animations to FightPage
memeraki Feb 11, 2021
1ef7da3
MNG-116 Change webpack to parcel (#28)
daria305 Feb 12, 2021
243c24b
MNG-113 Add game logs (#26)
AleksandraCyp Feb 12, 2021
0542a4b
MNG-102 finish fight implementation (#16)
daria305 Feb 12, 2021
2277b9b
fixed underline animation for active player
memeraki Feb 12, 2021
692ba1e
Merge branch 'master' into MNG-112-Animations
memeraki Feb 12, 2021
159c9d7
autoprefixer errors
memeraki Feb 12, 2021
68c8e5d
fixed ts compiling issue
memeraki Feb 12, 2021
26f3295
Merge branch 'ts-issue' into MNG-112-Animations
memeraki Feb 12, 2021
3c32a22
Merge pull request #29 from lukaszdutka/ts-issue
AleksandraCyp Feb 12, 2021
d4d8aad
Fix img issue (#30)
AleksandraCyp Feb 12, 2021
82b1013
Merge branch 'master' into MNG-111_Create_game_result_modal
mariusz-sm Feb 12, 2021
50aab7b
Render starting page after click on play again button
mariusz-sm Feb 12, 2021
5800f40
Add listener for play again button inside showResultModal
mariusz-sm Feb 12, 2021
7d7e612
Refresh page
mariusz-sm Feb 12, 2021
5a56e70
Merge pull request #25 from lukaszdutka/MNG-111_Create_game_result_modal
AleksandraCyp Feb 12, 2021
8003266
Merge branch 'master' into MNG-112-Animations
memeraki Feb 12, 2021
df3c084
animations update
memeraki Feb 12, 2021
f2eb780
MNG-96 Implement an attack function
daria305 Feb 12, 2021
4e81ae5
MNG-96 Switch pokemon after it looses
daria305 Feb 13, 2021
5f162e5
Merge pull request #27 from lukaszdutka/MNG-112-Animations
AleksandraCyp Feb 13, 2021
1237f13
MNG-96 Add check for the finish game
daria305 Feb 13, 2021
31692fa
MNG-96 Corrections
daria305 Feb 13, 2021
f614f83
Fix resultsModalPopUpFunction.ts, implement it, delete some unneccess…
AleksandraCyp Feb 13, 2021
6a13a2a
Mng 114 check if game is finished (#33)
AleksandraCyp Feb 13, 2021
e1b50f0
Merge branch 'master' into MNG-96-Poke-attack
daria305 Feb 13, 2021
9c76b97
Fix lost animation
daria305 Feb 13, 2021
471ef34
Merge pull request #32 from lukaszdutka/MNG-96-Poke-attack
AleksandraCyp Feb 13, 2021
b14bb21
MNG-126 Balance fight (#34)
daria305 Feb 13, 2021
0b132c5
hide the pokemon and HPbar when pokemon dies
AgataLudwiczynska Feb 13, 2021
fdb38a2
MNG-127 Improve game logs + change font of active player (#36)
AleksandraCyp Feb 13, 2021
0bc56b7
Merge pull request #37 from lukaszdutka/MNG-125---hide-the-pokemon-an…
AleksandraCyp Feb 13, 2021
874d8c1
authors and about modal
AgataLudwiczynska Feb 13, 2021
e6b2b0a
Merge branch 'master' into MNG-105-add-modals-for-Authors-and-About-
AgataLudwiczynska Feb 13, 2021
dbc52e9
MNG-122 - Animations
memeraki Feb 13, 2021
5dac8fa
Merge branch 'master' into MNG-122
memeraki Feb 13, 2021
743cb34
Add HP bar transition + some cursor plus underline names (#35)
AleksandraCyp Feb 13, 2021
210f9d4
Merge branch 'master' into MNG-122
memeraki Feb 13, 2021
0364bec
merge
memeraki Feb 13, 2021
4a68aaa
Merge pull request #38 from lukaszdutka/MNG-105-add-modals-for-Author…
AleksandraCyp Feb 14, 2021
dcf0ffa
animation fixes
memeraki Feb 14, 2021
19a8103
small responsive attack animation fix
memeraki Feb 14, 2021
847c9e6
result modal font changes
memeraki Feb 14, 2021
15e7538
MNG-106 instructions in how to play modal (#42)
AgataLudwiczynska Feb 15, 2021
7231ec5
Merge branch 'master' into MNG-122
memeraki Feb 15, 2021
0a73e73
Merge branch 'master' into MNG-118-readme-file
memeraki Feb 15, 2021
46bc0cd
Merge pull request #39 from lukaszdutka/MNG-122
AleksandraCyp Feb 15, 2021
701e4d8
MNG-115 add interface to gameHandler and Player class (#40)
AgataLudwiczynska Feb 15, 2021
a054490
MNG-119 Add_player_class_tests (#41)
mariusz-sm Feb 15, 2021
ecd73ff
MNG-128 MNG-129 Change some English text, delete console.logs (#44)
AleksandraCyp Feb 15, 2021
08d76cf
MNG-130 update (#45)
memeraki Feb 15, 2021
0538de5
MNG-118 readme file (#43)
memeraki Feb 15, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/images/2.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/images/3.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/images/4.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/images/5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed .github/images/SzachyEkrany.png
Binary file not shown.
Binary file added .github/images/pikachuwithmango.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
49 changes: 49 additions & 0 deletions .github/workflows/node.js.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Node.js CI

on:
push:
paths-ignore:
- '**/*.md'

jobs:
build:
name: "Build Pokemon Fight application"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: 14.x
- run: npm ci
- run: npm run build --if-present
- run: npm test
- uses: actions/upload-artifact@v1
name: Upload build as artifact
if: always()
with:
name: pokefight-dist
path: ./dist
deploy-on-github-pages:
name: "Deploy app to GitHub Pages from master branch source code"
if: github.ref == 'refs/heads/master'
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v2
with:
name: pokefight-dist
path: ./dist
- name: Deploy app as GitHub Pages
uses: peaceiris/actions-gh-pages@v3.7.0-6
if: ${{ github.event_name != 'pull_request' && always() }}
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: "./dist"
user_name: 'github-actions[bot]'
user_email: 'github-actions[bot]@users.noreply.github.com'
force_orphan: true
keep_files: false
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
dist/
.cache/
217 changes: 82 additions & 135 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,136 +1,83 @@
**UWAGA! Zaczynając pracę nad projektem — nie róbcie forka.
Jedna osoba z zespołu (np. Mentor) powinna użyć przycisku `Use this template` i dodać innych członków zespołu jako Collaborators do tego repozytorium.
Mentorzy mogą dowolnie zmieniać zakres projektu lub zdecydować się na zupełnie inny temat.**

# CodersCamp 2020 - Projekt TypeScript
**CodersCamp (coderscamp.edu.pl) - Największy otwarty kurs programowania webowego**

![Szachy - Ekrany](./.github/images/SzachyEkrany.png)
Proponowany projekt — Szachy (opis poniżej).

### Zasady wykonywania projektu (wspólne dla wszystkich grup i mentorów):

##### W projekcie każdy z uczestników powinien zaprezentować praktyczną znajomość poniższych zagadnień związanych z TypeScript:
- typy podstawowe
- definiowanie własnych typów
- składanie typów
- typy / klasy / interfejsy
- implementacja / dziedziczenie / kompozycja / implementacja interfejsu
- modyfikatory dostępu
- typy generyczne
- testy jednostkowe i TDD

Do realizacji założeń projektowych nie używajcie żadnej biblioteki, która np. implementuje silnik szachów. Ten projekt ma za zadanie właśnie nauczyć jak planować takie systemy :) Wraz z mentorem spróbujcie się skupić na właściwej architekturze aplikacji i podziale odpowiedzialności.
Co więcej, coraz częściej w czasie rekrutacji programistów pojawia się etap "System Design" poleagający na dyskusji i projektowaniu rozwiązania jakiegoś prostego systemu. Częstym przykładem jest właśnie gra w szachy.
W zadaniach dodatkowych jest gra przeciwko komputerowi - oczywiście AI nie jest zakresem kursu, więc tutaj możecie użyć jakiegoś gotowca lub zaimplementować własny prosty algorytm - proponujemy np. MINIMAX :)
Powodzenia!

##### W trakcie trwania projektu należy wyznaczyć w zespole następujące role
tak jak opisano w przypadku poprzedniego projektu.

Product Owner & Dev Manager odpowiada za ustalenie zadań dla zespołu, które umożliwią wykonanie aplikacji zgodnie z wymaganiami.
Oczywiście nie musi, a nawet nie powinien tego robić sam (nieoceniona będzie pomoc Tech Leadera i oczywiście opinia Klienta - pamiętajcie o jego cennym czasie i nie angażujcie w każdą dyskusję).
Można zorganizować spotkanie osób pełniących role w zespole, albo nawet całego zespołu.
W tym projekcie dobrze też zacząć estymować zadania wspólnie z zespołem. Jednakże mentor może zaproponować swój tryb pracy.
Skupcie się na jakości wykonania i pracy zespołowej. Niektóre wymagania mogą przypominać Wam poprzedni projekt, więc czasem może być warto wykorzystać już posiadaną wiedzę.

##### Sposób oceny projektu (i wszystkich kolejnych projektów na CodersCamp)
tak jak opisano w przypadku poprzedniego projektu.

## Gra w Szachy
Teraz przechodzimy do przykładowego projektu, który został przygotowany przez organizatorów kursu.
Proponowany projekt pozwala na zastosowania większości umiejętności, jakie powinniście posiąść w trakcie przerabiania działu.
Jednakże jeśli macie pomysł na projekt podobnej skali, który spełni opisane na górze wymagania i czujecie się na siłach
w zdefiniowaniu funkcjonalności, przygotowaniu ekranów i podzieleniu go na zadania — to nic nie stoi na przeszkodzie,
aby wykonać np. coś związanego z zainteresowaniami Waszej grupy :)
Przykładem może być też jakaś inna gra — np. Chińczyk. Niech nic nie stoi na przeszkodzie waszej kreatywności.
Pamiętajcie tylko, że czas jest ograniczony i musicie zdążyć z aplikacją do prezentacji. Powodzenia!

Czas porzucić narrację CodersCamp i wcielić się w członka zespołu projektowego...

### Założenia projektowe
W trakcie projektu stajecie przed większym (lub mniejszym — jak kto woli) wyzwaniem.
Teraz nie macie niestety ani linijki już gotowego kodu. Brak też podzielonych zadań. Swoją pracę zaczynacie w tzw. projekcie greenfield, czyli totalnie od zera.
Pozwala to na większą dowolność, ale też wymaga na początku większego nakładu pracy i jest wąskim gardłem.
Jako zespół musicie podjąć odpowiednie decyzje na samym początku i postarać się jak najszybciej umożliwić pracę wielu osobom naraz.

Szachy są coraz bardziej popularne wśród przedsiębiorców. Odbywają się nawet Mistrzostwa Polski dla osób prowadzące własne działalności.
Niestety, obecna sytuacja z pandemią pokrzyżowała trochę plany zorganizowania kolejnych mistrzostw.
Po sukcesie waszego ostatniego projektu wiele osób z tego środowiska usłyszało o waszych usługach.
Dlatego wasz zespół został poproszony o przygotowanie mechanizmu szachów, który pomógłby w organizacji tych mistrzostw online.
Oczywiście jest to o wiele większy projekt, dlatego Wy odpowiadacie tylko za sam mechanizm szachów w przeglądarce.
Nie skupiacie się na kwestiach gry wielu graczy przez internet. Zostanie to na bazie waszego prototypu zrealizowanie później.

Ponieważ aplikacja ma być sygnowana przez CodersCrew, spróbujcie przygotować ją zgodnie z identyfikacją wizualną stowarzyszenia - Brand Book znajdziecie [TUTAJ](https://www.behance.net/gallery/94155751/Brand-Book-Project).
Nie jest to konieczność, ale fajna możliwość wypróbowania swojej skuteczności z takim wymaganiem (które jest częste w praktyce).


Lista funkcjonalności, jakie należy zaimplementować w silniku gry:
1. Ruchy wszystkich bierek (wykonanie ruchu, jak i pokazywanie możliwych):
- Pionek
- Hetman
- Wieża
- Goniec
- Król.
1. Promowanie pionka na dowolną inną figurę (oprócz króla) na końcu planszy.
1. Roszada: https://pl.wikipedia.org/wiki/Roszada
1. Szachowanie króla: https://pl.wikipedia.org/wiki/Szach_(szachy)
1. Szach mat: https://pl.wikipedia.org/wiki/Mat_(szachy)
1. Kończenie gry przez Pat: https://www.chess.com/pl/article/view/czym-jest-pat-szachowe-terminy
1. Bicie w przelocie: https://www.chess.com/pl/article/view/bicie-w-przelocie-specjalne-ruchy-w-szachach
1. Możliwość cofania ruchów (aż do początkowego układu).

Uwaga: Pamiętajcie, że na ruchy bierek, promocję pionka i możliwość roszady wpływa na szachowanie króla. Najlepiej zagrajcie kilka partii w zespole, żeby zapoznać się z tą domeną. No chyba, że macie w swoim zespole eksperta?
Dokładnie poznajcie domenę, w jakiej działa wasze oprogramowanie, czyli grę w szachy, aby nie wprowadzić jakiegoś zachowania niezgodnego z zasadami i żeby nic nie przeoczyć.
Starajcie się przewidzieć przypadki brzegowe i zaimplementujcie do nich odpowiednie testy.

**Jeśli macie w swoim zespole osobę chętną na przygotowanie designów, to także możecie UI zrobić kompletnie inaczej.**
A jeśli nie, to możecie się wzorować na przedstawionych [TUTAJ - Link do Figma](https://www.figma.com/file/ZllWbpJCCCCKVl7QEfNWbl/CodersCamp2020.Project.TypeScript.Chess?node-id=4461%3A3896).
Jednakże brakuje takich rzeczy jak np. wczytywanie / zapisywanie partii, wyświetlanie możliwych ruchów, podświetlanie wybranego pionka, zaznaczenie szachowanego króla czy wybór podczas promowania pionka. Co powinniście zaprojektować w ramach wykonywania aplikacji. Na projekcie z Figmy znalazło się też kilka rzeczy związanych z dodatkowymi funkcjonalnościami. Szczegóły co będziecie realizować - ustalcie z klientem.

Waszym zadaniem będzie zaimplementować aplikację, aby działała wg wymagań klienta, a także przygotować i wykonać
wersję responsywną aplikacji (dostosowaną do wyświetlania na Tabletach i Telefonach — możecie przygotować najpierw projekt interfejsu, lub od razu przejść do implementacji).
W celu zaprezentowania działania aplikacja musi być możliwa do odwiedzenia w internecie.
Klient nie chce ponosić za to żadnych dodatkowych kosztów, dlatego należy wykorzystać jedną z usług oferujących darmowe
uruchomienie takiej aplikacji (np. GitHub Pages lub Netlify).
Klient wymaga także, aby aplikacja nie tylko działała, ale była odpowiednio pokryta testami.
Naprawdę macie szczęście co do klienta! Wielu uważa testy za niepotrzebne i jedynie stratę pieniędzy.
A co znaczy „odpowiednio pokryta”, to już należy właśnie ustalić z samym Klientem :)

## Możliwe usprawnienia i dodatkowe funkcjonalności:
Jeśli starczy czasu, dla własnego rozwoju warto rozważyć wykonanie poniższych funkcjonalności.

1. Wczytywanie i zapisywanie stanu partii (szachownica, czas graczy itp.) - po wczytaniu musi być możliwe cofanie ruchów. Stan partii powinien zapisywać się automatycznie co wykonany ruch.
1. Tworzenie nowej partii z aktualnego stanu partii. Gra nie może być zakończona.
1. Tekstowe komentarze do gry (przykładowo):
- `Gracz Biały wykonał ruch "Koń z C1 na D3"`
- `Gracz Czarny dokonał promocji Pionka na Hetmana na polu A1. Szach białego Króla!`
- `Gracz Biały wykonał roszadę po stronie królowej.`
1. Możliwość wyboru nieskończonego czasu gry lub szachów błyskawicznych (czas ograniczony dla każdego z graczy).
1. Odliczanie czasu dla każdej ze stron (cofanie ruchu musi cofać czas do stanu sprzed ruchu) w przypadku szachów błyskawicznych.
1. Dodatkowy czas doliczany do limitu czasowego gracza za każdy ruch (propocjonalny do długości całej patrii).
1. Kończenie gry przez limit czasowy - gracz, któremu skończył się czas przegrywa. Nie rozpatrujemy przypadku remisu.
1. Dwie wersje językowe gry — Polska i Angielska.
1. Ładowanie stanu początkowego z np. notacji FEN (https://pl.wikipedia.org/wiki/Notacja_Forsytha-Edwardsa) i/lub tablicy emojis.
1. Zaimplementuj różne strategie Pat opisane na Wikipedii: https://pl.wikipedia.org/wiki/Pat Np. stare zasady mówiły, że pat powodował wygraną strony, która zapatowała przeciwnika.
1. Głosowe wykonywanie ruchów. Np. gracz mówi: "Pion na A3".

## Dodatkowe zadania (wykraczające poza zakres kursu):
1. Rozgrywka z komputerem - sztuczna inteligencja. Można wykorzystać np. algorytm minimax. Skorzystajcie z źródeł:
- https://alialaa.com/blog/tic-tac-toe-js-minimax
- https://www.youtube.com/watch?v=l-hh51ncgDI
- https://www.freecodecamp.org/news/simple-chess-ai-step-by-step-1d55a9266977/
- https://towardsdatascience.com/create-ai-for-your-own-board-game-from-scratch-minimax-part-2-517e1c1e3362
- https://dev.to/zeyu2001/build-a-simple-chess-ai-in-javascript-18eg
1. Wykonanie testów E2E, przy użyciu odpowiedniego narzędzia. Proponujemy np. Cypress.

Wszelkie inne dodane przez Was funkcjonalności czy usprawnienia infrastrukturalne należy przedstawić w README.md projektu :)
Template znajdziecie w poprzednim projekcie.

## Porady odnośnie do projektu
- Warto zapozań się z możliwościami kończenia partii szachowych (nie wszystko jest wymagane).
- [How Chess Games Can End: 8 Ways Explained](https://www.chess.com/article/view/how-chess-games-can-end-8-ways-explained)
- Jako inspirację można wykorzystać też działanie szachów zaimplementowanych przez zespół mentora Marcina Wosia na poprzednim CodersCamp (UWAGA: Wymagania mogły ulec zmianie)
- https://captainobjective.github.io/chessGame/
- Dla testów może warto wykorzystać trochę reprezentacji wizualnej. Co powiecie na emoji :) ? Post mentora Mateusza Nowaka.
- [Emoji-Driven Development | ZycieNaKodach.pl](https://zycienakodach.pl/tdd-dsl-szachy-emojis)
## Pokemon Fight
Aplikacja pozwala na walkę pokemon dwóch osób. Każdy z graczy może wybrać 3 stworki, które pomogą mu osiągnąć sukces w walce z przeciwnikiem. Ten, który przeprowadzi grę lepiej wygra - o ile drugi gracz mu na to pozwoli!

Aplikacja została stworzona w oparciu o TypeScript w ramach kursu CodersCamp2020.

# [DEMO - kliknij by zagrać.](https://lukaszdutka.github.io/CodersCamp2020.Project.TypeScript.pokemonfight/)

**Pokemon Figth** wzorowany był na popularnej grze Pokemon.<br>
Design projektu: [Figma](https://www.figma.com/file/q0IcE7FOL1GEi7sXvhE5WE/Pokemon-Fight?node-id=0%3A1)<br>

Pokemon Fight - start screen|Pokemon Fight - choose screen
:-------------------------:|:-------------------------:
![Pokemon Fight - start screen](./.github/images/2.gif) | ![Pokemon Fight - choose screen](./.github/images/3.gif)

Pokemon Fight - fight screen|Pokemon Fight - end screen
:-------------------------:|:-------------------------:
![Pokemon Fight - fight screen](./.github/images/4.gif) | ![Pokemon Fight - end screen](./.github/images/5.png)

### Zespół projektowy
Mentor:
[Łukasz Dutka](https://github.com/lukaszdutka)

Uczestnicy:
* [Aleksandra Cypko](https://github.com/AleksandraCyp) (Product Owner)
* [Małgorzata Dziewit](https://github.com/memeraki) (UX Designer)
* [Daria Dziubałtowska](https://github.com/daria305)
* [Agata Ludwiczyńska](https://github.com/AgataLudwiczynska) (Develepment Manager)
* [Mariusz Smarż](https://github.com/mariusz-sm) (Tech Lead)

### Wykorzystane technologie:
- TypeScript
- HTML
- CSS - SASS

### Narzędzia z jakimi pracowaliśmy:
- Visual Studio Code
- Git
- GitHub Desktop
- Figma
- Trello

#### Wymagania funkcjonalne
1. Ekran ładowania - śpiący Snorlax
2. Ekran startowy - pola do wpisania imion graczy, którzy będą grają obok siebie na komputerze
3. Ekran wyboru pokemonów - gracze wybierają naprzemiennie po 3 pokemony z puli 12 pokemonów.
4. Ekran walki - jedno menu dla obu graczy, zmieniają się imiona. Gracz pierwszy zaczyna.
- w jednym czasie walczą tylko dwa pokemony (domyślnym, pierwszym pokemonem jest ten wybrany przez gracza jako pierwszy)
- menu wyboru akcji: 3 buttony
- atak (wyświetla dwie opcje wyboru ataku oraz jedną powrotu do menu wyboru akcji)
- switch (wyświetla dostępne opcje zmiany pokemona na inny oraz jedną powtoru do menu wyboru akcji)
- heal - "eat mango" (bezpośrednia akcja odnawiająca życie aktywnego pokemona do maximum HP - gracz może skorzystać z tej opcji tylko jeden raz w ciągu gry)
5. UI - czytelny, interaktywny i responsywny
6. Pokemon posiada:
- Punkty Życia/HP
- Atak i Obronę
- Typy (np. Bulbasaur: grass, poison)
- Moves / Ruchy (ataki mają swoje typy np. tackle: normal, fire blast: fire)
7. Algorytm obliczania obrażeń uwzględniający typ pokemona przeciwnika oraz typ ataku aktywnego pokemona
- obrażenia są normalne, mało skuteczne lub bardzo skuteczne - w zależności od typu pokemona i typu ataku
8. Okno z informacjami o przebiegu gry
9. Gra kończy się, kiedy wszystkie pokemony jednego z graczy będą niezdolne do walki (0 hp)
10. Komunikat końcowy - kto wygrał, powrót do ekranu startowego
11. Animacje:
- ataki - domyślna animacja wspólna dla wszystkich
- zmiana pokemona
- zaznaczanie aktywnego gracza
12. Spójne kolory i czcionki oraz style dla przycisków i interfejsu.
13. Wybrane pokemony do implementacji (id, nazwa, typy):
- 1 Bulbasaur - Grass/Poison
- 4 Charmander - Fire
- 7 Squirtle - Water
- 13 Weedle - Bug
- 16 Pidgey - Normal/Flying
- 19 Rattata - Normal
- 25 Pikachu - Electric
- 27 Sandshrew - Ground
- 35 Clefairy - Fairy
- 63 Abra - Psychic
- 66 Machop - Fighting
- 73 Geodude - Rock/Ground

![Pikachu](./.github/images/pikachuwithmango.png)
Binary file added assets/PokemonSolid.ttf
Binary file not shown.
Binary file added assets/abra.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/bulbasaur.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/charmander.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/clefairy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/geodude.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/machop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/mango.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/pidgey.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/pikachu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/pikachuwithmango.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading