From 414f9ed8780bc4447c3aa782fdeb378a59b88fd1 Mon Sep 17 00:00:00 2001 From: RS Date: Thu, 14 Nov 2024 12:05:15 +0530 Subject: [PATCH] last few tweaks --- index.html | 13 +++-- scripts/board.js | 43 ++++++++++++++-- scripts/evaluation.js | 45 +++++++++++++++-- sounds/capture.mp3 | Bin 0 -> 6889 bytes sounds/castle.mp3 | Bin 0 -> 5353 bytes sounds/check.mp3 | Bin 0 -> 6121 bytes sounds/move.mp3 | Bin 0 -> 3433 bytes sounds/notify.mp3 | Bin 0 -> 3817 bytes sounds/promote.mp3 | Bin 0 -> 4969 bytes styles.css | 112 +++++++++++++++++++++++++++++------------- 10 files changed, 166 insertions(+), 47 deletions(-) create mode 100644 sounds/capture.mp3 create mode 100644 sounds/castle.mp3 create mode 100644 sounds/check.mp3 create mode 100644 sounds/move.mp3 create mode 100644 sounds/notify.mp3 create mode 100644 sounds/promote.mp3 diff --git a/index.html b/index.html index dfcb2f2..97ba27f 100644 --- a/index.html +++ b/index.html @@ -9,15 +9,14 @@

♔ Chessical ♔

-
- -
+ +
White Captured Pieces
+
Black Captured Pieces
-
- -
-
+
+
+
diff --git a/scripts/board.js b/scripts/board.js index 5e38ee5..fa87339 100644 --- a/scripts/board.js +++ b/scripts/board.js @@ -16,6 +16,23 @@ let blackQueensideRookMoved = false; let selectedPiece = null; let selectedSquare = null; +// Sound effects +const sounds = { + move: new Audio('sounds/move.mp3'), + capture: new Audio('sounds/capture.mp3'), + castle: new Audio('sounds/castle.mp3'), + check: new Audio('sounds/check.mp3'), + promote: new Audio('sounds/promote.mp3'), + notify: new Audio('sounds/notify.mp3') +}; + +// Preload sounds +function preloadSounds() { + for (const sound in sounds) { + sounds[sound].load(); // Preload each sound + } +} + function initBoard() { const initialBoard = [ ['black_rook', 'black_knight', 'black_bishop', 'black_queen', 'black_king', 'black_bishop', 'black_knight', 'black_rook'], @@ -26,7 +43,6 @@ function initBoard() { ]; let isWhiteSquare = true; - const fileLabels = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; for (let i = 0; i < 64; i++) { @@ -233,7 +249,12 @@ function isValidMove(draggedPiece, sourceIndex, targetIndex) { if (targetPiece) { const sourceColor = draggedPiece.getAttribute('data-piece').split('_')[0]; const targetColor = targetPiece.getAttribute('data-piece').split('_')[0]; - if (sourceColor === targetColor) return false; + if (sourceColor === targetColor) return false; // Cannot capture own piece + } + + // Check if the target piece is a king + if (targetPiece && targetPiece.getAttribute('data-piece').includes('king')) { + return false; // Cannot capture the king } // Check for check resolution @@ -470,6 +491,17 @@ function validateKingMove(sourceRow, sourceCol, targetRow, targetCol) { // Check if the target square is under attack const isWhiteKing = document.querySelector(`[data-index="${sourceRow * 8 + sourceCol}"]`) .querySelector('.piece').getAttribute('data-piece').startsWith('white'); + + // Check if the target square is adjacent to the opposing king + const opponentKingPos = findKingPosition(!isWhiteKing); + if (opponentKingPos) { + const opponentKingRow = opponentKingPos.row; + const opponentKingCol = opponentKingPos.col; + if (Math.abs(opponentKingRow - targetRow) <= 1 && Math.abs(opponentKingCol - targetCol) <= 1) { + return false; // Cannot move into a square adjacent to the opposing king + } + } + return !isKingInCheck(targetRow, targetCol, isWhiteKing); } @@ -574,6 +606,7 @@ function doesMoveResolveCheck(piece, sourceIndex, targetIndex) { } // Initialize the board with pieces and listeners +preloadSounds(); // Preload sounds initBoard(); // Add this function after handleDrop @@ -599,6 +632,7 @@ function handlePawnPromotion(square, piece) { // Update the piece piece.src = option.src; piece.setAttribute('data-piece', `${pieceColor}_${pieceType}`); + sounds.promote.play(); // Play promote sound modal.remove(); updateBoardState(); updateEvaluationBar(); @@ -721,7 +755,8 @@ function handleSquareClick(event) { return; } targetPiece.remove(); - + sounds.capture.play(); // Play capture sound + if (capturedPieceColor === 'white') { capturedWhitePieces.push(targetPiece); } else { @@ -733,6 +768,7 @@ function handleSquareClick(event) { // Move the piece square.appendChild(selectedPiece); + sounds.move.play(); // Play move sound handlePawnPromotion(square, selectedPiece); const currentPosition = getCurrentPosition(); @@ -747,6 +783,7 @@ function handleSquareClick(event) { if (isCheckmate(opponentIsWhite)) { setTimeout(() => { + sounds.notify.play(); // Play checkmate sound showGameEndModal(`${pieceColor.charAt(0).toUpperCase() + pieceColor.slice(1)} wins by checkmate!`); }, 100); } diff --git a/scripts/evaluation.js b/scripts/evaluation.js index e78aeb3..5a8fc1a 100644 --- a/scripts/evaluation.js +++ b/scripts/evaluation.js @@ -79,15 +79,54 @@ function getPieceValue(piece) { [-30, 5, 10, 15, 15, 10, 5,-30], [-40,-20, 0, 5, 5, 0,-20,-40], [-50,-40,-30,-30,-30,-30,-40,-50] + ], + 'bishop': [ + [-20,-10,-10,-10,-10,-10,-10,-20], + [-10, 0, 0, 0, 0, 0, 0,-10], + [-10, 5, 10, 10, 10, 10, 5,-10], + [-10, 10, 10, 10, 10, 10, 10,-10], + [-10, 0, 10, 10, 10, 10, 0,-10], + [-10, 0, 0, 0, 0, 0, 0,-10], + [-20,-10,-10,-10,-10,-10,-10,-20], + [-30,-30,-30,-30,-30,-30,-30,-30] + ], + 'rook': [ + [0, 0, 0, 0, 0, 0, 0, 0], + [5, 10, 10, 10, 10, 10, 10, 5], + [0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0], + [5, 10, 10, 10, 10, 10, 10, 5], + [10, 10, 10, 10, 10, 10, 10, 10], + [0, 0, 0, 0, 0, 0, 0, 0] + ], + 'queen': [ + [-20,-10,-10,-5,-5,-10,-10,-20], + [-10, 0, 0, 0, 0, 0, 0,-10], + [-10, 5, 10, 10, 10, 10, 5,-10], + [-5, 0, 10, 10, 10, 10, 0,-5], + [0, 0, 10, 10, 10, 10, 0, 0], + [-10, 0, 10, 10, 10, 10, 5,-10], + [-10, 0, 0, 0, 0, 0, 0,-10], + [-20,-10,-10,-5,-5,-10,-10,-20] + ], + 'king': [ + [20, 30, 10, 0, 0, 10, 30, 20], + [20, 30, 10, 0, 0, 10, 30, 20], + [0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0], + [-20,-30,-30,-30,-30,-30,-30,-20], + [-30,-40,-40,-50,-50,-40,-40,-30], + [-30,-40,-40,-50,-50,-40,-40,-30], + [-40,-50,-50,-60,-60,-50,-50,-40] ] - // Add similar position tables for other pieces }; let value = values[piece.type] || 0; // Add position-based bonus if available if (positionBonus[piece.type]) { - const row = piece.color === 'white' ? 7 - piece.row : piece.row; + const row = piece.color === 'white' ? 7 - piece.row : piece.row; // Adjust row for white's perspective value += positionBonus[piece.type][row][piece.col]; } @@ -120,4 +159,4 @@ function updateEvaluationBar() { const maxScore = 4000; const evalPercent = 50 + (score / maxScore) * 50; evaluationDiv.style.height = evalPercent + '%'; -} +} \ No newline at end of file diff --git a/sounds/capture.mp3 b/sounds/capture.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c71b93fa57db7f501dfb97edf069b23ec056228a GIT binary patch literal 6889 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

6xw5_*x|QA(%=1f@$+ zL7EgBMZp4spnp)XgNVRBaP`c&FZc00-QRxL>uYP){N|gzXBNpojTzVjB0(lv=xXAR5vvt84}Og z`T=AEoBa&%z0Imv6)h#Kx{|8Ozf*|p&4&8=Q~%dtm7}Vf*nI%9tu1lyLgHwUkx%7XAbHoBW@_{}GV_yaM-@_R;`c0D!;&Vt>H=h42@q zaDcBt|NO5`K&XlB-C1Ty;BM;(pa}qcnnR18I97GS$IjkQ!FsPjFnouf5#QZO7ixLh z1I~iqe(KIXM)K1D{?6T`l5lksm+78Z6Q z(f>|9Zsv@J5G0a}n%BoRfvmd(IOB(tfG#!+spEB|+{nRR38Dczj zKg9$E{+dXR2{nV?*y@?2RQD+doF6AC_kiyMPDk!Ar#=*F*a83!96);^x##rK#lpzc z+Tp}C>nFD1#RaZLfsDtB1Cc5jFmDjQCDZexu9^qJ2MFRIC-Z5?IHMacOpWvH`)8*y zr5M_T>jF>|zLT_&3LKC+LWIi%_Z9$N>Od0Uen^iZN0zr^nV?O?*Zb0!)lrsdivACz zkD{nn@6dUk2|a~d4HsyumD#Ho*A))vWNz#bbEl7N*X#9&I-5-2e!~f31TZ%5#Y?=6 zt*~>f;I=}u+?P`ddE2GlyAJ_C0Klx8@BlU^T3+RhHl`iAd*=59NL`IuBiW|zWX$=< z_3ZX+K8L6a!QU7#%}`TkZv*F`kV~Rcv?}^t8N~?A_cmlPh&2MoxiSr@?jg zg5A$A$`a&pgdp5?aeQ3`6EhM(4V7;zGEq$nYE)6$n9RKB)=6j?*m6=y*;0DDIJ+%#LYYVkE$Bez6FQZ&znjBA|kDX!NprMR|f z+*zn$Jk6D};7;YMy8irLrFww{E7cGRN4FPe*cFkh;OFb9J9hC$H@<(X>$)7(zvM+dafFXH8i_znT?yER zJ~NKV7Wh(qW^*@=nak3@ zR9856PK=cfB9JIrmUW6kd-+xdA8_i^$Vg$KrM0<1Z>Wnz#grN@&k$}Q z%27O|PQd5;u0B3N{h^qWFi6PL)BlvD-KHJx8ESfJ2_#R1MK(#j4|~;qOWyu-jHzRl z8(KKyWXp@w?XL`Is&NawsXWoV*osQ_btmT_l@|F^kojqJq&R-XO`6SaJj-QU&y5*y z_aoBqy! zL~Ht;ww@^lypJH?+WI~Ftn2dUV_@mAp)$RH{^viWmH0gh+z><@19z1ey+V)y1Qd|s zZ*yuUiQqUJOIkJA=N})u+5|88KI#2rzHr{pWj$Y?_}hD?Pf#1|Dg1P^V{x<0n{3?b zQX?*`q-8oiH1u}0lcy^1F(@nQRI{xEJ?qpvtS>6m>Lq+W{m@x)(fp(;PeL9}fUzdWv4;Mh3e_4)?~pqq0*?qT1lDpSYj$Zg+RV z`G?)5>YaA8#pg<$8|FTOVrRQACLh9E%n!4%XY119>5Mja&cJq!t*gOEpL~l|4|q<- z4fbe&?YP_5_-Z*=QpI4_LAUAcf(hh0cl&d&1zcTQc^rGcLW##J8Wx<_CMxuz;%d=D z>y1!v_2Upio=gm{0F&R%}H6tbTTCyz!h0be&+NH=1ubb z7#KkpFx3OWv2}E68~7CuC)iGc;0~ToE7H0AsU)>0?nfdFRsL3}FGtig+LCh_2fL7v z&5Er=01^-aB$W`IBw{H973H{V<=CVZpjh1&HUH9dB-)z9tNG7Z^1}*puVL|!S1|tS z7(DmN9kv}FW_K%T$C<1YPTes>I}f?@U(EZKmaoH&5AVQ!Bz5zX((fe*F3yidG+5;& zUAU3XuXslBu*NIRd`jK%jJ4%aXTob8tBylYJycmMtrNKIJAYCiJikJW$H7<6+D_%`m1nt0N)GYQrqIKn1O#8Xxr=t{d zW)a5cJRll=wdac1cx*lmui%j?W*bqeSwg7MK?9|G23^NEvj!*HC**+SJB-@uP$(e|dBnHh6}lzM+*J64&-rA(Jf5`XsW<@;}qAmT9}`HIp#RJgN375DG|0p`9g zv|$drSmsGaQj<5-oZQ>QL)Kg%6;CEBq{;Swy>Na0@(UMW0 z*V%iQ<3r-YzcsmT5z=bY(Hdrk4$_kZM={C6U+vUy{XTW&Q*wZ*q$40BEfo(}#dFXp zF7ffEw`sNYBj}C~+|?=00%^TRk=ZlFuF-vLU9k|u*&9lt&9c^`KV{yKjTE&=qN|fi z=G2h#qFd|V>6}p}_v1^ziC%8|Oo(0MlxQW^dwiN|OmejvQPWO)=asvnre$O(B9fHV zwo;F4*fhMDot@2yr8XWJ39?8CJ8yYXPq2JgIKir!izlZ2(#p;grej7wL8sif3fzzm znIpeB_B|;zKnlqNvquGyb$u)p!|piCeXY_?9fG7hl0ysdwSVQabYE?J^ot^L@(Rq* zsX$28Av>x}^{|c5V1)!&t;fdpI>VG}gFSX43f#@30xYwY#N%^^h9$ESvMwQ-{L!J3 zgl-nc1@sh*8Kt)Gp9kpkL6XMbi*{HK3iZ2r6mq<-<}+(-jJ6g)l4$8Oi7WYa--ty2 z4o(RWy&x;2B`o>g7Hb&LxS2VlNZq*h`a26=T!R>Odq)IZu^}WgnXV;svD8B&QiyAK z`aosx>D(aJ0*8>-b^=##U2D~7ye$uj364jNF5jPcV*K0;Mp`KG8B7<;>lw3kM`)3? zY(F2Qbj`#fC~0jCU`;trS>^+ZpLxs@W=6xMh~BIttnd_%0!)NBkAgUMKi#VE( zl``J158yhzj>Ym@MVReEX~8CGaVekRHn|s^K5zG*O8By5n5_^P9QpmzkQC9RIL2(u z2hpVeV>B*qhewx2|0;QdK#Vbt!k-OX=S~G*DzdZrpSfbpS@bZR=bVF#_5ofmekh}q z4u_=_PTLzJ<~onGZbsg_7~4NI7oDWt2Vvd!FAPlR@eM!4V1q2Pfb$MJ;MB%7S^kW7s+ zV&mz~F4s5J?s$pl&f#i1Zx$x;dGYnfac7EJfX%SMEly5skW#?0Z%GtootX}i$hnpJzt0Y(c8kz&!u%sLrBTY&PqaTZ=KCBH3(d?T(vRPT|IQ2-$Xo%EGZ>=y?$-Q72oXhA>*_>oo?JF zZ$E@!G;8HMb4K&vtj`NM8r5VbE8C-OyY5H$C3uW}{J`?Sxd za3_o%BlucoGBvqQ#zR9@n&*p!ys>sB+g+@6i4}&V8XS5VCjyM+@B3GQe>=>t&jc6a zF^XPxqhK^(WOJS~GFEu8qVi~Z3PXf>GqpJ+>!`s80X9#TQ;2igWx+>cTih@@ydj+B zwJ&x0U#wuxmSy|gA4CG&Yl|Gw{sn+Rbpv4f%xttdPJvHLt~n8_k)5REzpG&YiE`)o zj_0|MFrs01NEfqP`q}y<2wuF@MYatW%@eF&zQNQbB}RS432>+9z_z^Ni)qAB7;81` z!qj~OGK&`C^v9}?j-xI+uZAbIjKC*98JxVB)JI5RUi7&)b6S@3ZEvoC>vlL`eW4H8 zMx7T6^GSIZebZ>kkztGpLi^^o>Q}w#&4jrff45}Poaax|*FS#C!RNuVg>cNWjqcps zjbxu6t>ZO2za(J*iyY$IsA-~kL>l7S{P$QUK@?>Q-g=`b`JU&nOU|z;d7G7Qix0QG zlgmN%47HQC3rA;2E@BrXzDyh^{f@eqfBAh}3UgJl8T&z5ySX+IVn=RVsJ?}Onig8{ z=~P@1*Z%k4z&5o{j7Oih&^U8ySa%-KW}I)ITl*n`-eG*9K+lv7Vqo0((<98jlW zHp3Ba()s7bj!kXKcg1$jn=D{Y_rBcM`*OdTGqd*Ed#|(Rn|=1fL8?d)1LuI)3{`cN&jShoAVOh0 z;f9``?mmE_iHXU1lJh+2iE(jq@v!yv#8_j{j%W1#R#`5U+ahAR3O z6)4Xai;IfM2#ZPzi;MlI1oL^;*X17ie{2@JDK0H~0bpogpnATO=6sE|t-qs`w1~Kj zh}ikWe?vGn{O`g45+OYtJoi{?Mf{^9nQ2meU;N8Vpv{-f<5 zLx1`4kF9?Y{&LaEdC&IeJxfVm4E_Tbc<*0$1)<2c9z{6LZ~y@CFNwa_RB®G3NK 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 Cseq^e literal 0 HcmV?d00001 diff --git a/sounds/move.mp3 b/sounds/move.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e678ff7658d22cfc57c9276a914d52f2b1617b5e GIT binary patch literal 3433 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 literal 0 HcmV?d00001 diff --git a/sounds/promote.mp3 b/sounds/promote.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..25242a5b2967ca02e347518458c0d2a1eac7449f GIT binary patch literal 4969 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 CKtRR- literal 0 HcmV?d00001 diff --git a/styles.css b/styles.css index aecde44..ccb7e1a 100644 --- a/styles.css +++ b/styles.css @@ -3,17 +3,41 @@ margin: 0; } +body { + background-color: #2c3e50; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + overflow-x: hidden; + padding: 2em; + text-align: center; +} + h1{ text-align: center; margin: 1.2em; - color:#b58863 + color:#b58863; + font-size: 2.3em; + +} + + +.game-container { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5em; + margin:0 2em ; + } #board { display: grid; - grid-template-columns: repeat(8, 1fr); + grid-template-columns: repeat(8, 80px); width: 640px; height: 640px; - border: 2px solid; + border: 2px solid #333; } .square { @@ -55,12 +79,14 @@ h1{ } .captured-pieces { + width: 640px; display: flex; flex-wrap: wrap; min-height: 40px; padding: 5px; border: 1px solid #ccc; - margin: 10px 0; + margin: 5px 0; + background-color: rgba(255, 255, 255, 0.8); } .captured-pieces .piece { @@ -73,6 +99,8 @@ h1{ padding: 0.9em; border-radius: 25px; font-size: 0.8em; + margin-top: 0.5em; + cursor: pointer; } #evaluation-bar { @@ -80,10 +108,12 @@ h1{ height: 400px; border: 1px solid #ccc; position: fixed; - right: 50px; - top: 50%; - transform: translateY(-50%); - overflow: hidden; + right: 10px; + top: 20%; + + + background-color: white; + z-index: 100; } #evaluation-score { @@ -96,7 +126,7 @@ h1{ } .highlighted-square { - background-color: rgba(255, 255, 0, 0.5) !important; + background-color: rgba(147, 245, 82, 0.944) !important; animation: highlightPulse 4s ease-in-out; } @@ -145,38 +175,52 @@ h1{ /* Add responsive design */ @media (max-width: 768px) { - #board { - width: 100vw; - height: 100vw; - max-width: 640px; - max-height: 640px; - } + - .square { - width: 12.5vw; - height: 12.5vw; - max-width: 80px; - max-height: 80px; + .game-container{ + position: relative; + transform: scale(0.9); + transform-origin:center; + margin: 0 2em; + padding: 4em; } - - .piece { - width: 100%; - height: 100%; + + #board, .captured-pieces { + max-width: 640px; + } - + #evaluation-bar { - right: 10px; + position: fixed; + width: 15px; height: 300px; + right: -2em; + } - - .captured-pieces { - padding: 2px; +} + +@media (max-width: 500px) { + .game-container { + transform: scale(0.9); + transform-origin:top; + margin: 0 6em; + } - - .captured-pieces .piece { - width: 30px; - height: 30px; + #board,.captured-pieces{ + + margin-left: 12em; } + + + + + + + #evaluation-bar { + width: 10px; + height: 300px; + position: fixed; + } } /* Add touch support */ @@ -193,4 +237,4 @@ h1{ .selected-square { background-color: rgba(255, 255, 0, 0.4) !important; } -} \ No newline at end of file +}