You are on page 1of 16

Բովանդակություն

Խնդրի նկարագրություն........................................................................................................4
Գրականություն....................................................................................................................18

3
Խնդրի նկարագրություն
Ֆիգուրների դասավորում Random և ձեռքով: Չթույլատրել անօրինական մուտք:
Ներառել ծրագրի բացատրությունը:

Տրված է հետևյալ շախմատային ֆիգուրաները.


սպիտակներ - Արքա, Փիղ, Նավ, 4 զինվորներ;
սևեր - Արքա, Փիղ, Նավ, 2 զինվորներ;
Գտնել սպիտակ փղի բոլոր թույլատրելի քայլերը և քանակը, որոնք չեն
ընկնում սևերի ֆիգուրաների հարվածի տակ:

Օգտագործվող գործիքներ: JavaScript, React.js

Ծրագրի սկզբում օգտատիրոջը առաջարկվում է ընտրել դասավորության 2


տարբերակ` random կամ մուտք ձեռքով: Ծրագրի այդ հատվածը նկարագրված է
SelectPositioning կոմպոնենտում (բաղադրիչ):

Նկ․ 1

4
Նկ․ 2

Առաջին կոճակին սեղմելուց հետո օգտատերը տեղափոխվում է random


դասավորությամբ տախտակի էջ, իսկ երկրորդ կոճակին սեղմելու դեպքում՝ էջ,
որտեղ կարող է ներմուծել կոորդինատները յուրաքանչյուր ֆիգուրի համար։
Երթուղիները (routes) կազմակերպված է react-router-dom գրադարանի միջոցով և
նկարագրված է AppRoutes.js ֆայլում՝

Նկ․ 3

/ երթուղին նախատեսված է Նկ․ 1-ում պատկերված բաղադրիչը ցույց տալու


համար։

5
/random-positions երթուղին նախատեսված է random դասավորված ֆիգուրներով
շախմատի տախտակի ցուցադրման համար։ constants թղթապանակի index.js
ֆայլում նկարագրվում է BOARD_SIZE հաստատունը, որը ցույց է տալիս
շախմատային տախտակի չափերը։

Նկ․ 4

constants թղթապանակի correspondingCoords.js ֆայլում նկարագրվում են


օբյեկտներ՝ համապատասխան կոորդինատները ցույց տալու համար՝

Նկ,5

6
helpers թղթապանակի figures.js ֆայլում նկարագրված է FIGURES հաստատունը,
որտեղ ներկայացվում են շախմատային ֆիգուրաները՝ համապատասխան
անուններով և սիմվոլներով։

Նկ. 6

7
Նկ. 7

helpers թղթապանակի randomCoordinates.js ֆայլում նկարագրված են երկու


ֆունկցիաներ՝ առաջինը նախատեսված է 1-7 միջակայքում random թիվ
գեներացնելու համար, իսկ երկրորդը շախմատային ֆիգուրի համար random
կոորդինատներ գեներացնելու համար՝

Նկ.8
8
helpers թղթապանակի randomPositions.js ֆայլում նկարագրվում է նախնական
մատրիցան, որը համապատասխանում է շախմատային տախտակին ։ Այնուհետև
generateRandomPositions ֆունկցիայում դասավորվում են ֆիգուրները random
դասավորությամբ։ Կատարվում է ստուգում, որպեսզի տվյալ դաշտը լինի ազատ,
իսկ սև և սպիտակ զիվորերը չհայտնվեն տախտակի եզրերում։

Նկ.9

helpers թղթապանակի isFigureBlack.js ֆայլում նկարագրված ֆունկցիան ստուգում


է արդյո՞ք տվյալ շախմատային ֆիգուրը սև է թե ոչ։ Եթե այն սև է, ֆունկցիան
վերադարձնում է true, հակառակ դեպքում՝ false:

Նկ.10

9
helpers թղթապանակի figuresSteps.js ֆայլում նկարագրված են ֆիգուրների
հնարավոր քայլերը ստուգող ֆունկցիաները։

Առաջին ֆունկցիան նկարագրում է արդյո՞ք թագավորը կարող է (x1, y1)


կոորդինատներով կետից տեղափոխվել (x2, y2) կոորդինատներով կետ։

Նկ.11- Թագավորի թույլատրելի քայեր

Նույն աշխատանքը կատարված է նաև մյուս ֆիգուրների համար։

Նկ.12- Սպիտակ և սև զինվորների թույլատրելի քայլեր

10
Նկ.13- Փղի թույլատրելի քայելր

Նկ.14- Նավի թույլատրելի քայեր

RandomPositioning բաղադրիչում ներկայացվում է ֆիգուրների random


դասավորման, սպիտակ փղի թույլատրելի քայելերի հաշվման և ցուցադրման
պրոցեսը։ Նախ նկարվում է շախմատի տախտակը՝ ChessBoard բաղադրիչի
օգնությամբ։

Նկ.15

11
Գեներացվում են random դիրքեր յուրաքանչյուր ֆիգուրի համար, այնպես որ սև և
սպիտակ արքաները չլինեն վտանգավոր դիրքերում։ Այդ ամենը ստուգվում է
checkForBlackKing և checkForWhiteKing ֆունկցիաների միջոցով։ Սպիտակ արքայի
համար հայտնաբերվում է նրա դիրքը, այնուհետև այդ դիրքի նկատմամբ
դիտարկվում են սև ֆիգուրների հնարավոր դիրքերը։ Եթե թագավորը գտնվում է
հարվածի տակ, ապա նրա համար գեներացվում է մեկ այլ դիրք, հակառակ
դեպքում կարող ենք շարունակել քայլերը։ Նույն գործողությունները կատարվում
են նաև սև արքայի համար։ Ճիշտ random դասավորություն կատարելուց հետո
առանձնացնում ենք սպիտակ փղի և սև ֆիգուրների կոորդինատները։ Վերև նշված
ֆունկցիաների օգնությամբ հայտնաբերում ենք սպիտակ փղի հնարավոր քայլերը
և արտապատկերում ենք էկրանին՝ whiteBishop փոփոխականի միջոցով։

Նկ.16

12
Նկ.17

Նկ.18

13
Նկ.19

Նկ.20

14
Նկ.21

15
Ծրագիրն աշխատեցնելու արդյունքում կունենանք հետևյալ պատկերը՝

Նկ.22

Սպիտակ փիղը գտնվում է (G,5) կոորդինատ ունեցող դաշտում։ Այն կարող է քայլ
կատարել (H,4),(E,7),(E,3),(D,2),(C,1) դաշտեր։ Սպիտակ փիղը կարող է նաև քայլեր
կատարել (F, 6), (H,6) դաշտեր, բայց այդ դաշտերում այն կգտնվի սևերի
ֆիգուրների հարվածի տակ։

Նույն աշխատանքը կազմակերպված է նաև ձեռքով մուտք անելու համար։

Նկ.23
16
Նկ.24

Նկ.25

Նկ.26

17
Գրականություն
 Javascript: The Good Parts - Douglas Crockford
 https://chessboardjs.com/examples#1004
 https://chessboardjs.com/docs#methods
 https://dev.to/zeyu2001/build-a-simple-chess-ai-in-javascript-18eg

18

You might also like