π±οΈ λλκ·Έ μμ - FRONTENDBOOTCAMP-13th/JS-07-7zzang-Arcade GitHub Wiki
ꡬλΆ
- λ μ§ : 2025.05.15
- μ’ λ₯ : λ²κ·Έ
- μ°μ μμ : π΄
1. λ¬Έμ μν©
λλκ·Έ λ°μ€λ₯Ό 그리λλ° μμμ μμΉλ₯Ό λ§μ°μ€κ° μΈμμ μνμ§λ§ ν΄λ¦νκ³ κ·Έλ₯ λ§μ°μ€λ₯Ό μμ§μ¬λ λ°μ€κ° μμ±λλ λ¬Έμ κ° λ°μλμλ€.
ν΄λ¦ β¦ νκ³ ν΄λ¦ν΄λ λ°μ€κ° μ겨λ²λ¦¬λ λ¬Έμ λΏλ§ μλλΌ, μ΄μ λ°μ€ μμμ΄ λ¨μμμ΄μ μ΄ λΆλΆμ΄ λ λλ§μ΄ λκ³ νμ¬ λ°μ€ μμμ΄ λ λλ§ λλ λ¬Έμ λ λ°μνλ€.
λ, μΊλ²μ€ μμ μμμ 첫 ν΄λ¦μ ν΄μΌλ§ λ°μ€κ° μμ±λλλ°, κ·Έ μ΄ν λ°κΉ₯ μμμ λμ΄μ λλκ·Έ ν΄λ μμμ΄ μμ±λλ λ¬Έμ κ° λ°μνλ€.
2. μμΈ
canvas.addEventListener
μ κ°κ° mousedown
, mousemove
, mouseup
, mouseleave
λ₯Ό λ±λ‘νλλ°, λλκ·Έ μνμμ ꡬλ³νκΈ° μν λ³μκ° μμλ€.
λ°λΌμ λ΄κ° νμ¬ λλκ·Έ μ€μΈμ§, λλκ·Έκ° κ°λ₯νμ§ νλ¨μ΄ λΆκ°λ₯ν΄μ ν΄λ¦ β ν΄λ¦ νμ λλ, ν΄λ¦ β λ§μ°μ€ μ΄λν΄λ λ°μ€κ° μμ±λλ νμμ΄ λ°μνλ κ²μ΄λ€.
λν λλκ·Έ λ°μ€λ μΊλ²μ€λ₯Ό ν΅ν΄ 그리λλ°, μ΄ λΆλΆμ μ΄κΈ°ν μ νλ μ λλ¬Έμ μ΄μ μμμ΄ λ¨μμλ κ²μ΄λ€.
3. ν΄κ²° κ³Όμ
λ¨Όμ λλκ·Έ μμ μμΉμ μνλ₯Ό λ€μκ³Ό κ°μ΄ μ€μ νλ€.
// λ§μ°μ€ ν΄λ¦ μ μ§ μν λνλ΄κΈ°
canvas.addEventListener('mousedown', e => {
if (isGameOver) return;
startX = e.offsetX;
startY = e.offsetY;
draggable = true; // μΆκ°
isDragging = false; // μΆκ°
});
μΆκ°ν λΆλΆμ λλκ·ΈμΌ λ λ°μνμ¬μ μμ νλ€.
canvas.addEventListener('mousemove', e => {
if (!draggable || isGameOver) return;
endX = e.offsetX;
endY = e.offsetY;
if (!isDragging && (Math.abs(endX - startX) > dragThreshold || Math.abs(endY - startY) > dragThreshold)) {
isDragging = true;
}
if (!isDragging) return;
...
});
쑰건문μ ν΅ν΄ λλκ·Έ μνλ₯Ό 리ν΄νκ³ , λλκ·Έ μ€μ΄λ©°, dragThreshold
λ₯Ό 5λ‘ μ‘°μ ν΄, λ§μ§λ§ λλκ·Έ μμΉμ μμ μμΉκ° 5λ₯Ό λλ κ²½μ°, λλ dragThreshold
μ΄ 5λ₯Ό λλ κ²½μ°λ©΄ λλκ·Έ μ€μ΄λΌκ³ νλ¨νκ² μ€μ νμ¬ μνλ₯Ό λ°κΏμ£Όμλ€.
ν΄λΉ λΆλΆ μ΄ν, mouseup
μμ ν λ§ν μ ν λ° μ κ±° λ‘μ§μ μννκ³ λλ©΄ λλκ·Έ μνλ₯Ό λνλ΄λ λ³μλ€μ κ°μ false
λ‘ μ΄κΈ°ννλλ‘ μ€μ νλ€.
canvas.addEventListener('mouseup', e => {
if (isGameOver) return;
endX = e.offsetX;
endY = e.offsetY;
...μ ν λ‘μ§
draggable = false;
isDragging = false;
clearSelect();
ctx.clearRect(0, 0, canvas.width, canvas.height);
redrawGrid();
});
κ·Έλ° λ€μ, μ νμ μ΄κΈ°ν νλ ν¨μλ₯Ό νΈμΆνκ³ , μΊλ²μ€λ‘ κ·Έλ¦° μμλ μ΄κΈ°νν λ€μ, μ ν λ‘μ§ μ΄ν μνλ₯Ό μ λ°μ΄νΈ νκΈ° μν΄ μΊλ²μ€λ₯Ό λ€μ 그리λ ν¨μλ₯Ό νΈμΆνλ€.
μΊλ²μ€λ₯Ό 그릴 λ, μ΄μ΄μ 그릴 κ²μ΄ μλλΌλ©΄ κΌ μ΄κΈ°νλ₯Ό ν΄μ£ΌκΈ°. νΉν λλκ·ΈμΌ λλ μνλ₯Ό κΌ μ λ¬νμ¬ κ³μ 쑰건μ νμΈνλλ‘ μ€μ ν΄μΌ ν¨μ μμ§ μλλ‘ ν΄μΌνλ€λ κ²μ λ°°μ°κ² λμλ€.