본문 바로가기

HTML 예제

게임 미로: HTML과 JavaScript로 간단한 미로 게임 만들기

반응형

간단한 미로 게임을 HTML과 JavaScript로 만들어보겠습니다. 이 게임은 기본적인 미로를 탐험하는 예제입니다.

1. HTML 파일 생성하기
HTML 파일을 생성합니다. 파일을 "index.html"로 저장하세요.


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>미로 게임</title>
</head>
<body>
    <div id="maze"></div>
    <script src="script.js"></script>
</body>
</html>

 


2. CSS 스타일 시트 생성하기

다음으로 CSS 스타일 시트를 생성합니다. 이 파일을 "styles.css"로 저장하세요. 스타일 시트에서 미로와 플레이어의 초기 스타일을 정의합니다.


/* styles.css */
body {
    font-family: Arial, sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}

#maze {
    width: 400px;
    height: 400px;
    border: 2px solid #333;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-gap: 4px;
}

.cell {
    width: 100%;
    height: 100%;
    background-color: #fff;
    border: 1px solid #ccc;
}

.player {
    background-color: #ff0000;
    border-radius: 50%;
}

 


3. JavaScript 파일 생성하기
미로 게임의 로직을 처리할 JavaScript 파일을 생성합니다. 이 파일을 "script.js"로 저장하세요. JavaScript 파일에서 미로와 플레이어를 생성하고 플레이어의 움직임을 처리합니다.


// script.js
const maze = document.getElementById("maze");

const mazeSize = 4;
const cellCount = mazeSize * mazeSize;
const player = document.createElement("div");
player.className = "player";

for (let i = 0; i < cellCount; i++) {
    const cell = document.createElement("div");
    cell.className = "cell";
    maze.appendChild(cell);
}

maze.appendChild(player);

let playerPosition = 0;

document.addEventListener("keydown", (event) => {
    switch (event.key) {
        case "ArrowUp":
            if (playerPosition >= mazeSize) {
                playerPosition -= mazeSize;
            }
            break;
        case "ArrowDown":
            if (playerPosition < cellCount - mazeSize) {
                playerPosition += mazeSize;
            }
            break;
        case "ArrowLeft":
            if (playerPosition % mazeSize !== 0) {
                playerPosition--;
            }
            break;
        case "ArrowRight":
            if (playerPosition % mazeSize !== mazeSize - 1) {
                playerPosition++;
            }
            break;
    }

    player.style.gridArea = `${Math.floor(playerPosition / mazeSize) + 1} / ${playerPosition % mazeSize + 1}`;
});

 

 


4. 실행하기
위의 코드를 모두 작성한 후, HTML 파일을 브라우저에서 열어서 테스트하세요. 미로 안에서 화살표 키를 사용하여 플레이어를 움직일 수 있습니다.

 

반응형