From 2bbf2b4e9cc3284abbd043158cdc901599cb95d6 Mon Sep 17 00:00:00 2001 From: Ben Kyd Date: Thu, 1 Apr 2021 23:27:29 +0100 Subject: [PATCH] board whaaaat --- client/public/place1.mp3 | Bin 10608 -> 4512 bytes client/public/place2.mp3 | Bin 3792 -> 2400 bytes client/public/place3.mp3 | Bin 6840 -> 2880 bytes client/public/rack1.mp3 | Bin 9624 -> 5664 bytes client/public/rack2.mp3 | Bin 7608 -> 5280 bytes client/public/rack3.mp3 | Bin 6216 -> 3360 bytes client/public/scrabble/dragable.js | 34 ++++++++----- client/public/scrabble/game.css | 7 ++- client/public/scrabble/index.html | 15 +++--- client/public/scrabble/index.js | 28 +++++++++++ client/public/scrabble/pieces.js | 75 ++++++++++++++++++++++++----- 11 files changed, 127 insertions(+), 32 deletions(-) create mode 100644 client/public/scrabble/index.js diff --git a/client/public/place1.mp3 b/client/public/place1.mp3 index 3e5686ac43083231e8dd1b1a3c866d028d54122a..d799f04a108c2be818c63f1821b836eeaff8b0a9 100644 GIT binary patch literal 4512 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 literal 10608 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 literal 3792 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 I|Ks}q17nkLDgXcg diff --git a/client/public/rack1.mp3 b/client/public/rack1.mp3 index e0191c47e2d9ed7b2530b7bb7044f977c132047b..5c95b553f43668d84aae9bc17e0dce353fe8a37e 100644 GIT binary patch literal 5664 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 RE+v}c diff --git a/client/public/rack2.mp3 b/client/public/rack2.mp3 index 3e60e446bdbfcdc7104472684c8d4261df774d89..74da72b2fd77a38c2a6efe8bf6372d11c0f2c238 100644 GIT binary patch literal 5280 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 CFh^kk literal 7608 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 diff --git a/client/public/scrabble/dragable.js b/client/public/scrabble/dragable.js index 90e0680..d179845 100644 --- a/client/public/scrabble/dragable.js +++ b/client/public/scrabble/dragable.js @@ -4,10 +4,10 @@ // i also assume there's no way a user's viewport isn't at least 700px tall // bad assumption to make, but scroll pixels wouldn't scale -document.querySelector('#game-container').addEventListener('mousemove', mouseMove); -document.querySelector('#game-container').addEventListener('touchmove', mouseMove); -document.querySelector('#game-container').addEventListener('mouseup', mouseUp); -document.querySelector('#game-container').addEventListener('touchend', mouseUp); +document.addEventListener('mousemove', mouseMove); +document.addEventListener('touchmove', mouseMove); +document.addEventListener('mouseup', mouseUp); +document.addEventListener('touchend', mouseUp); document.querySelectorAll('piece').forEach(element => { element.addEventListener('mousedown', e => mouseDown(e, element)); @@ -21,20 +21,23 @@ function mouseDown(event, element) { event.preventDefault(); - // move to the centre of the mouse to simulat pickup - // can also play a sound - - element.style.top = event.clientY; - element.style.left = event.clientX; + // disalow picking up of played pieces + if (element.classList.contains('played-piece')) return; + piecePickedUp(element); + if (event.type === 'touchstart') event = event.changedTouches[0]; - + state.dx = Math.abs(element.offsetLeft - event.clientX); state.dy = Math.abs(element.offsetTop - event.clientY); - + element.pointerEvents = 'none'; selectedElement = element; + + // move to the centre of the mouse to simulat pickup + selectedElement.style.top = event.clientY; + selectedElement.style.left = event.clientX; } function mouseMove(event) @@ -55,5 +58,12 @@ function mouseMove(event) function mouseUp(event) { event.preventDefault(); - selectedElement.pointerEvents = 'initial'; + + if (selectedElement.pointerEvents != 'initial') + { + piecePlaced(selectedElement); + + selectedElement.pointerEvents = 'initial'; + } + } diff --git a/client/public/scrabble/game.css b/client/public/scrabble/game.css index d363fbc..4f903ec 100644 --- a/client/public/scrabble/game.css +++ b/client/public/scrabble/game.css @@ -39,16 +39,19 @@ score { text-align: right; right: 5px; - font-size: 20px; + font-size: 50%; width: 100%; height: 100%; } .dragging-piece { - + width: 40px; + height: 40px; + font-size: 25px } + #game-container { border: 1px dotted black; diff --git a/client/public/scrabble/index.html b/client/public/scrabble/index.html index 482c9fe..e98577b 100644 --- a/client/public/scrabble/index.html +++ b/client/public/scrabble/index.html @@ -377,16 +377,17 @@

- A4 - A4 - A4 - A4 - A4 - A4 - A4 + A1 + B4 + C3 + D2 + E1 + F4 + G2 + diff --git a/client/public/scrabble/index.js b/client/public/scrabble/index.js new file mode 100644 index 0000000..0cd08b3 --- /dev/null +++ b/client/public/scrabble/index.js @@ -0,0 +1,28 @@ +// preload sounds + +// i don't care if the browser doesnt support +// mp3, i'm not making this for compatability + +const BoardSounds = [ + new Audio('../place1.mp3'), // pickup + new Audio('../place2.mp3'), // unused + new Audio('../place3.mp3') // place +]; + +const RackSounds = [ + new Audio('../rack1.mp3'), + new Audio('../rack2.mp3'), + new Audio('../rack3.mp3') +]; + +// BoardSounds.forEach(sound => { +// sound.addEventListener('loadeddata', () => { +// sound.volume = 1; +// }); +// }); + +// RackSounds.forEach(sound => { +// sound.addEventListener('loadeddata', () => { +// sound.volume = 1; +// }); +// }); diff --git a/client/public/scrabble/pieces.js b/client/public/scrabble/pieces.js index f1db467..02009a3 100644 --- a/client/public/scrabble/pieces.js +++ b/client/public/scrabble/pieces.js @@ -9,19 +9,70 @@ let BOARD_TL_Y = document.querySelector('#game-container').getBoundingClientRect const PIECE_WIDTH = 80; const PIECE_HEIGHT = 80; -function piecePickedUp() +function updateBoardCoord() { - + BOARD_TL_X = document.querySelector('#game-container').getBoundingClientRect().left + window.scrollX; + BOARD_TL_Y = document.querySelector('#game-container').getBoundingClientRect().top + window.scrollY; } -function piecePlaced() +//https://stackoverflow.com/questions/11409895/whats-the-most-elegant-way-to-cap-a-number-to-a-segment +Number.prototype.clamp = function(min, max) { + return Math.min(Math.max(this, min), max); +}; + +function isCoordInBoard(px, py, pw, ph) { + updateBoardCoord(); + + // to make it more readable + let x = BOARD_TL_X; + let y = BOARD_TL_Y; + let w = BOARD_WIDTH; + let h = BOARD_HEIGHT; + + console.log(x,y,w,h); + + // cheeky bit of AABB + if (x < px + pw && + x + w > px && + y < py + ph && + y + h > py) return true; + return false; +} + + +function piecePickedUp(piece) +{ + BoardSounds[2].play(); + + + piece.classList.add('dragging-piece'); +} + +function piecePlaced(piece) +{ + // snap to board if in box + if (isCoordInBoard(piece.offsetLeft, piece.offsetTop, 40, 40)) + { + BoardSounds[0].play(); + + // snap to grid + + + piece.classList.remove('unplayed-piece'); + piece.classList.add('played-piece'); + } else + { + piece.classList.remove('dragging-piece'); + + RackSounds[Math.floor(Math.random() * 3)].play(); + setupPieces(); + } } - -function setupPieces() +function setupPieces() // also resets pieces { // if the window has enough vertical height to fit the peices, // have them at the bottom of the board, else, have them to the right @@ -30,12 +81,13 @@ function setupPieces() document.querySelector('#game-container').style.width = '600px'; document.querySelector('#game-container').style.height = '700px'; // needs to happen after resize - BOARD_TL_X = document.querySelector('#game-container').getBoundingClientRect().left + window.scrollX; - BOARD_TL_Y = document.querySelector('#game-container').getBoundingClientRect().top + window.scrollY; + updateBoardCoord(); let index = 0; for (const piece of document.querySelectorAll('piece, nopiece')) - { + { + if (piece.classList.contains('played-piece')) continue; + // i feel dirty hardcoding this much const dx = (BOARD_TL_X) + (index * (PIECE_WIDTH + 5)) + 5; const dy = (BOARD_TL_Y + BOARD_HEIGHT) + 10; @@ -50,12 +102,13 @@ function setupPieces() document.querySelector('#game-container').style.width = '700px'; document.querySelector('#game-container').style.height = '600px'; - BOARD_TL_X = document.querySelector('#game-container').getBoundingClientRect().left + window.scrollX; - BOARD_TL_Y = document.querySelector('#game-container').getBoundingClientRect().top + window.scrollY; + updateBoardCoord(); let index = 0; for (const piece of document.querySelectorAll('piece, nopiece')) - { + { + if (piece.classList.contains('played-piece')) continue; + const dx = (BOARD_TL_X + BOARD_WIDTH) + 10; const dy = (BOARD_TL_Y) + (index * (PIECE_WIDTH + 5)) + 5;