Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
e5f0867
Update README.md
MateuszNaKodach Jan 19, 2021
9ae96cd
initial commit
Jan 19, 2021
949b9c0
more project settings
Jan 20, 2021
8c38735
Add project settings (ESLint, tsconfig, ts-jest, prettier)
PawelSzambelan Jan 20, 2021
df33b5d
Init Model-View-Presenter structure
Jan 20, 2021
b12f4d9
Init Model-View-Presenter structure
Jan 20, 2021
8b5da92
Create node.js.yml
tomaszdworniczak Jan 21, 2021
98ec2e4
Merge pull request #16 from nowakprojects/github-workflow-setup
tomaszdworniczak Jan 22, 2021
e031aca
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PawelSzambelan Jan 22, 2021
aacc1bb
Additional checks settings (#15)
Jan 22, 2021
1986243
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PawelSzambelan Jan 22, 2021
2943c04
Revert "Additional checks settings (#15)" (#19)
PawelSzambelan Jan 22, 2021
e58d121
#5 Stworzenie obrazków figur (#18)
annalamperska Jan 22, 2021
1983190
Fix | Add missing export / imports in view and tests
MateuszNaKodach Jan 24, 2021
d31d992
Feature/#17 possible moves for rock (#20)
PawelSzambelan Jan 26, 2021
e6b9950
Add first test
PiotrRynio Jan 27, 2021
ca0b003
Add more tests and added BoardFixture.ts
PiotrRynio Jan 27, 2021
f552a09
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PawelSzambelan Jan 28, 2021
18654d8
Add chess Board fixtures and improve tests readability
MateuszNaKodach Jan 28, 2021
a228e4d
Add non-finished Pawn.ts
PiotrRynio Jan 29, 2021
5f60ff3
Add all tests
PiotrRynio Jan 29, 2021
11dcdd8
Add "possibleMoves" functions
PiotrRynio Jan 29, 2021
a9bb410
ESLint configuration fix and add lint & prettier to GitHub Actions wo…
MateuszNaKodach Jan 29, 2021
96ee0da
Fix movesToGo
PiotrRynio Jan 29, 2021
77cf28a
Fix first test "Check possible squares to go, when White Pawn is on D…
PiotrRynio Jan 29, 2021
a9cbe9c
Add "goAhead" function for WHITE side
PiotrRynio Jan 29, 2021
a455441
Add "goDoubleAhead" function for WHITE side
PiotrRynio Jan 29, 2021
2e2b0e2
Add moving Pawn in diagonal ahead line for WHITE Pawns
PiotrRynio Jan 29, 2021
7e7709b
CodeCov | Add test coverage reports and badge in README.md
MateuszNaKodach Jan 29, 2021
30d9a33
Fix tests for BLACK side
PiotrRynio Jan 29, 2021
e53c1b6
Add BLACK Pawns movement
PiotrRynio Jan 29, 2021
7728961
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PiotrRynio Jan 29, 2021
7ec2aee
GitHub Actions | Upload dist only on success
Jan 29, 2021
bff7851
Update after Code Review
PiotrRynio Jan 29, 2021
2224d79
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PiotrRynio Jan 29, 2021
1a375a3
Add tests of non-limited Knight's movements by other pieces
PiotrRynio Jan 30, 2021
937e67d
Fix mistake in square name and sort squares by names
PiotrRynio Jan 30, 2021
4bf4e08
Finish tests
PiotrRynio Jan 30, 2021
af9128d
Add Knight's moves on empty Board
PiotrRynio Jan 30, 2021
50a5120
Fix test - wrong expected position
PiotrRynio Jan 30, 2021
fab4394
Add new necessary chessboard border test
PiotrRynio Jan 30, 2021
23fdd01
Fix test with BLACK Knight position
PiotrRynio Jan 30, 2021
56be86b
Fix possible moves on empty chessboard. Add check function of chessbo…
PiotrRynio Jan 30, 2021
0158fe7
Fix tests (color and position mistakes)
PiotrRynio Jan 30, 2021
2f021ee
Add removing Impossible squares from empty board movesToGo array
PiotrRynio Jan 30, 2021
60faded
Update after DeepScan feedback
PiotrRynio Jan 30, 2021
1c65b04
GitHub Actions | Remove flags from code coverage
Jan 30, 2021
fcab320
Update tests with "GIVEN WHEN THEN method
PiotrRynio Jan 30, 2021
3febb74
GitHub Actions | Flag typescript-project-chess
Jan 30, 2021
61cffaf
Pawn | Refactor possible moves
Jan 30, 2021
f4b20ad
Pawn | Refactor
Jan 30, 2021
4a87ca9
Pawn | Refactor
Jan 30, 2021
9caba88
Pawn | Refactor
Jan 30, 2021
27b7ed3
Pawn | Refactor
Jan 30, 2021
72f928b
Pawn | Refactor
Jan 30, 2021
08deb89
Merge branch 'develop' into pawn
MateuszNaKodach Jan 30, 2021
f755a95
Delete useless file
PiotrRynio Jan 30, 2021
aff8103
#22 Knight possible movements | Update tests names after Code Review
PiotrRynio Jan 30, 2021
cdb5908
#22 Knight possible movements | Update after Code Review automatic "C…
PiotrRynio Jan 30, 2021
1834704
#22 Knight possible movements | Update after Code Review
PiotrRynio Jan 30, 2021
1201396
Merge pull request #36 from nowakprojects/pawn
PiotrRynio Jan 30, 2021
1d6c75b
Merge branch 'develop' into knight
PiotrRynio Jan 30, 2021
ababaa7
#22 Knight possible movements | Update after Code Review
PiotrRynio Jan 30, 2021
bd7b7f1
Merge remote-tracking branch 'origin/knight' into knight
PiotrRynio Jan 30, 2021
8e7076b
Model/#31 piece movement (#34)
PawelSzambelan Jan 31, 2021
7dda757
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PiotrRynio Jan 31, 2021
86ed18d
#22 Knight possible movements | Update to changed develop
PiotrRynio Jan 31, 2021
330bdf4
Merge pull request #38 from nowakprojects/knight
PiotrRynio Jan 31, 2021
11195ef
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PawelSzambelan Feb 1, 2021
01bcc99
#25 queen moves (#45)
tomaszdworniczak Feb 1, 2021
db13b53
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PawelSzambelan Feb 2, 2021
f8d572f
#23 bishop movement
PawelSzambelan Feb 2, 2021
c47a9c2
Feature/#23 bishop (#48)
PawelSzambelan Feb 2, 2021
2492d06
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PawelSzambelan Feb 2, 2021
e04afbe
#8 UI | Szachownica (#41)
annalamperska Feb 2, 2021
6698c0b
Extract universal methods (#49)
tomaszdworniczak Feb 3, 2021
c6ac639
Merge remote-tracking branch 'origin/develop' into develop
PawelSzambelan Feb 4, 2021
4647eda
#27 MVP Architecture Component and add listening for clicks on Square…
DomiZet Feb 4, 2021
7be04bd
UI button (#39)
tomaszdworniczak Feb 5, 2021
7be9dbd
Fix showing CSS by parcel public url configuration (#56)
MateuszNaKodach Feb 6, 2021
168e981
#57 View | MVP Architecture - ViewEventBus
MateuszNaKodach Feb 6, 2021
7d4c05b
Chess engine piece was moved piece was captured (#61)
tomaszdworniczak Feb 8, 2021
41ad8f6
#40 MODEL | Ruch dla KRÓLA (#66)
annalamperska Feb 11, 2021
7205c84
View/#26 pieces displaying (#54)
PawelSzambelan Feb 11, 2021
88c101d
Initial Commit
PiotrRynio Feb 11, 2021
c2a194d
#43 MODEL - ChessEngine - Checking the king's check | Add first test
PiotrRynio Feb 11, 2021
b82d493
#43 MODEL - ChessEngine - Checking the king's check | Fix description…
PiotrRynio Feb 11, 2021
90cdd01
#43 MODEL - ChessEngine - Checking the king's check | Extract common …
PiotrRynio Feb 11, 2021
fb7ea30
#43 MODEL - ChessEngine - Checking the king's check | Add test that p…
PiotrRynio Feb 11, 2021
16c86a1
#43 MODEL - ChessEngine - Checking the king's check | Fix test's desc…
PiotrRynio Feb 11, 2021
adf0cdf
#43 MODEL - ChessEngine - Checking the king's check | Add test: white…
PiotrRynio Feb 11, 2021
20debbb
#43 MODEL - ChessEngine - Checking the king's check | Add more tests
PiotrRynio Feb 11, 2021
04acc38
#43 MODEL - ChessEngine - Checking the king's check | Update descript…
PiotrRynio Feb 11, 2021
1df0b9c
#43 MODEL - ChessEngine - Checking the king's check | Update after ES…
PiotrRynio Feb 11, 2021
32c4733
#43 MODEL - ChessEngine - Checking the king's check | Update test des…
PiotrRynio Feb 11, 2021
8636006
#43 MODEL - ChessEngine - Checking the king's check | Add "if" condit…
PiotrRynio Feb 11, 2021
68be782
#43 MODEL - ChessEngine - Checking the king's check | Next step in bu…
PiotrRynio Feb 11, 2021
4b000d3
#72 Add method changeTurn, change currentSide default value to Side.W…
tomaszdworniczak Feb 11, 2021
3eb860b
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PiotrRynio Feb 11, 2021
08e85ae
#43 MODEL - ChessEngine - Checking the king's check | Add finding kin…
PiotrRynio Feb 11, 2021
380acf2
#43 MODEL - ChessEngine - Checking the king's check | Fix test descri…
PiotrRynio Feb 11, 2021
a4e123d
#43 MODEL - ChessEngine - Checking the king's check | Avoid problem w…
PiotrRynio Feb 11, 2021
3ce356e
#43 MODEL - ChessEngine - Checking the king's check | Fix calling err…
PiotrRynio Feb 12, 2021
a5fe021
#43 MODEL - ChessEngine - Checking the king's check | Fix error in on…
PiotrRynio Feb 12, 2021
dd3b199
#43 MODEL - ChessEngine - Checking the king's check | Only working task
PiotrRynio Feb 12, 2021
b0d3e0a
#43 MODEL - ChessEngine - Checking the king's check | Finish checking…
PiotrRynio Feb 12, 2021
0e501fb
#43 MODEL - ChessEngine - Checking the king's check | Update after au…
PiotrRynio Feb 12, 2021
a743cdd
Merge remote-tracking branch 'origin/develop' into develop
PawelSzambelan Feb 12, 2021
afe28ee
add build on windows option in package.json
PawelSzambelan Feb 12, 2021
3740459
View/#28 highlighting possible moves (#65)
tomaszdworniczak Feb 12, 2021
7fe8379
Merge branch 'develop' of https://github.com/nowakprojects/CodersCamp…
PiotrRynio Feb 12, 2021
e50ce43
Update package-lock.json
PiotrRynio Feb 12, 2021
4d41beb
Changing after CodeReview - Delete tests
PiotrRynio Feb 12, 2021
7be5b7a
Changing after CodeReview | Add first test
PiotrRynio Feb 12, 2021
f8613af
Changing after CodeReview | Finish adding tests
PiotrRynio Feb 12, 2021
4c107d5
Changing after CodeReview | Add empty removePlayerMovesThatCauseHisKi…
PiotrRynio Feb 12, 2021
fd4709a
Changing after CodeReview | Change function name. Add returnPlayerMov…
PiotrRynio Feb 12, 2021
0f40407
Changing after CodeReview | All tests passed
PiotrRynio Feb 12, 2021
538214c
Changing after CodeReview | Delete commented tests
PiotrRynio Feb 12, 2021
dfa3438
Changing after CodeReview | Update after automatic DeepScan Review
PiotrRynio Feb 12, 2021
e4401fa
Changing after CodeReview | Update possibleMoves method
PiotrRynio Feb 12, 2021
ded3170
Changing after CodeReview | Extract a few methods from one bigger
PiotrRynio Feb 12, 2021
eac5116
Changing after CodeReview | Extract isSquareChecked method
PiotrRynio Feb 12, 2021
1a695c8
Changing after CodeReview | Make prettier code
PiotrRynio Feb 13, 2021
01ecab1
Update after CodeReview | Fix name of function. Make better chessboar…
PiotrRynio Feb 13, 2021
a13863a
Update after CodeReview | Update simulatedChessboardAfterMove method
PiotrRynio Feb 13, 2021
ec00beb
Update after CodeReview | Update
PiotrRynio Feb 13, 2021
9e317b6
Update after CodeReview | Update after CR
PiotrRynio Feb 13, 2021
f0499c1
Update package.json
PawelSzambelan Feb 13, 2021
97eafb7
Update after CodeReview | Delete comments
PiotrRynio Feb 13, 2021
ea04cf0
Update after CodeReview | Update function name for pieceMovesNotCausi…
PiotrRynio Feb 13, 2021
90293fc
Merge branch 'develop' into build_on_windows
MateuszNaKodach Feb 13, 2021
11ef17e
Update after CodeReview | Fix last commit - Update function name for …
PiotrRynio Feb 13, 2021
6576b19
Update after CodeReview | Add access modifiers
PiotrRynio Feb 13, 2021
b594f4e
Update after automatic Code Analysis suggestion
PiotrRynio Feb 13, 2021
c81c382
Fix | Add access modifiers
PiotrRynio Feb 13, 2021
785a17c
Merge pull request #68 from nowakprojects/#43_Moves_a_piece_taking_in…
PiotrRynio Feb 13, 2021
e9e9f50
Merge branch 'develop' into build_on_windows
PiotrRynio Feb 13, 2021
b49b5b6
Merge pull request #75 from nowakprojects/build_on_windows
PiotrRynio Feb 13, 2021
965bb07
Model/remove player (#78)
PawelSzambelan Feb 13, 2021
7eede96
Imports fix (#74) (#81)
PiotrRynio Feb 13, 2021
66ba8c1
#52 Model | ChessEngine (metoda movePiece) - Event PawnPromotionWasEn…
annalamperska Feb 14, 2021
4f5cf93
Chess engine king was checked king was unchecked (#82)
tomaszdworniczak Feb 14, 2021
61056c1
Fix describes in branch nr 42 (#86)
PiotrRynio Feb 15, 2021
4360d89
View/#62 piece movement (#77)
PawelSzambelan Feb 15, 2021
5a9257b
#64 & #88 - Event Checkmate Has Occurred & Stalemate Has Occurred (#87)
PiotrRynio Feb 16, 2021
b579a7f
#69 Model | ChessEngine - Roszada (#83)
annalamperska Feb 16, 2021
bb39f76
Update | Change Stalemate and fix a small bug in test (#91)
PiotrRynio Feb 16, 2021
3578093
Create modal window for pawn promotion (#76)
DomiZet Feb 16, 2021
8b01cd3
Update css | quick fix before deadline (#92)
PiotrRynio Feb 16, 2021
728dbcd
Model | pawn_en_passant (#89)
tomaszdworniczak Feb 16, 2021
da8ae01
Fix imgs
PiotrRynio Feb 16, 2021
ccad37d
Add same row checking (#97)
annalamperska Feb 16, 2021
e002ab6
Fix img problems after promotion (#96)
PiotrRynio Feb 16, 2021
1d981c3
Disable castling when a pawn attacks square crossed by the king (#100)
annalamperska Feb 18, 2021
0d6ee0e
Update README.md (#99)
DomiZet Feb 21, 2021
a6451c6
Add codecov bagde to README
MateuszNaKodach Feb 21, 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
3 changes: 3 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"presets": ["@babel/preset-env"]
}
24 changes: 24 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module.exports = {
parser: '@typescript-eslint/parser',
parserOptions: {
project: 'tsconfig.json',
sourceType: 'module',
},
plugins: ['@typescript-eslint/eslint-plugin'],
extends: [
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
'prettier/@typescript-eslint',
],
root: true,
env: {
node: false,
jest: true,
},
ignorePatterns: ['.eslintrc.js'],
rules: {
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-empty-interface': 'off',
},
};
55 changes: 55 additions & 0 deletions .github/workflows/node.js.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# 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: CodersCamp2020 | ♟️ Chess Game - TypeScript CI

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

jobs:
build:
name: 'Build Ancient Egypt Chess 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 lint:ci
- run: npm run format:ci
- run: npm run build --if-present
- run: npm run test:ci
- uses: actions/upload-artifact@v1
name: Upload build as artifact
with:
name: chess-dist
path: ./dist
- name: Upload test coverage report to Codecov
uses: codecov/codecov-action@v1
with:
flags: typescript-project-chess

deploy-on-github-pages:
name: 'Deploy app to GitHub Pages from develop branch source code'
if: github.ref == 'refs/heads/develop'
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v2
with:
name: chess-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
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
node_modules
.idea
dist
.cache
coverage
css
.history
7 changes: 7 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"singleQuote": true,
"trailingComma": "all",
"tabWidth": 2,
"semi": true,
"printWidth": 140
}
195 changes: 59 additions & 136 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,136 +1,59 @@
**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)
# ACIENT CHESS

![acient chess](https://user-images.githubusercontent.com/57037612/108262231-f110a400-7164-11eb-9c6a-776a54950eb1.jpg)

## Overview

**ACIENT CHESS is another project carried out by our team as part of the CodersCamp.**

## Our Crew

Mentor **[Mateusz Nowak](https://github.com/nowakprojects)**

- [Piotr Rynio](https://github.com/PiotrWR)
- [Anna Lamperska](https://github.com/lamparina)
- [Tomasz Dworniczak](https://github.com/tomdworniczak)
- [Paweł Szambelan](https://github.com/Szambelan)
- [Dominika Zwolenik](https://github.com/DomiZet)

## Functionalities

1. Moving all pieces (making a move, as well as showing possible ones):
2. Promoting a pawn to another figure (except the king) at the end of the board
3. Castling
4. Checking king
5. Checkmate
6. Beating en passant
7. Performing the whole chess game
8. Ending the game by Pat

**Our game is fully covered by Unit Tests!**
[![codecov](https://codecov.io/gh/nowakprojects/CodersCamp2020.Project.TypeScript.Chess/branch/develop/graph/badge.svg?token=N3DLMXP3WM)](https://codecov.io/gh/nowakprojects/CodersCamp2020.Project.TypeScript.Chess)


## Running the project

Running this project locally

###### Live version:

[live version](https://nowakprojects.github.io/CodersCamp2020.Project.TypeScript.Chess/)

###### From the repo:

1. Clone this project locally
2. Run `npm install` in your bash/command line
3. Run `npm run start:dev` in your bash/command line
4. Host a game and invite some friends!

## Dependencies

The following technologies were used :

- HTML
- CSS
- TypeScript
- [Jest](https://jestjs.io/) and [Testing Library](https://testing-library.com/docs/)

![ancientchessshot](https://user-images.githubusercontent.com/57037612/108393044-8e2a1600-7213-11eb-90f9-7ecc55a0516a.png)
![ancientchessshot2](https://user-images.githubusercontent.com/57037612/108393054-91250680-7213-11eb-8e89-67fd56f8aab7.png)
12 changes: 12 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>....Our title</title>
<link rel="stylesheet" href="sass/style.scss" />
</head>
<body>
<script src="src/index.ts"></script>
</body>
</html>
Loading