네, 자바스크립트로 뱀 게임 소스 코드를 작성해드리겠습니다. 먼저, HTML에서 게임을 보여줄 수 있도록 다음과 같이 코드를 작성해줄 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<title>뱀 게임</title>
<style>
#game-board {
width: 400px;
height: 400px;
border: 1px solid black;
}
</style>
</head>
<body>
<h1>뱀 게임</h1>
<div id="game-board"></div>
<script src="snake.js"></script>
</body>
</html>
게임 보드는 game-board
라는 ID를 가진 <div>
요소입니다. 이제 자바스크립트 파일인 snake.js
를 생성하고 다음과 같이 소스 코드를 작성해보겠습니다.
const boardSize = 20; // 게임 보드의 크기
const tileSize = 20; // 타일의 크기
// 게임 보드의 크기에 맞춰서 보드 요소를 생성합니다.
const gameBoard = document.getElementById('game-board');
gameBoard.style.width = `${boardSize * tileSize}px`;
gameBoard.style.height = `${boardSize * tileSize}px`;
// 뱀을 나타내는 객체
const snake = {
head: { x: 10, y: 10 }, // 뱀의 머리 위치
tail: [], // 뱀의 꼬리 위치
// 뱀을 그리는 함수
draw() {
// 먼저 게임 보드를 비웁니다.
gameBoard.innerHTML = '';
// 뱀의 머리를 그립니다.
const snakeHead = document.createElement('div');
snakeHead.style.width = `${tileSize}px`;
snakeHead.style.height = `${tileSize}px`;
snakeHead.style.backgroundColor = 'green';
snakeHead.style.position = 'absolute';
snakeHead.style.left = `${this.head.x * tileSize}px`;
snakeHead.style.top = `${this.head.y * tileSize}px`;
gameBoard.appendChild(snakeHead);
// 뱀의 꼬리를 그립니다.
this.tail.forEach((segment) => {
const snakeSegment = document.createElement('div');
snakeSegment.style.width = `${tileSize}px`;
snakeSegment.style.height = `${tileSize}px`;
snakeSegment.style.backgroundColor = 'green';
snakeSegment.style.position = 'absolute';
snakeSegment.style.left = `${segment.x * tileSize}px`;
snakeSegment.style.top = `${segment.y * tileSize}px`;
gameBoard.appendChild(snakeSegment);
});
},
// 뱀을 이동시키는 함수
move(x, y) {
// 뱀의 꼬리를 자르고 새로운 머리를 추가합니다.
this.tail.unshift({ x: this.head.x, y: this.head.y });
this.tail.pop();
this.head.x += x;
this.head.y += y;
// 게임 보드 크기를 벗어나면 게임을 종료합니다.
if (
this.head.x < 0 ||
this.head.x >= boardSize ||
this.head.y < 0 ||
this.head.y >= boardSize
) {
alert('게임 오버!');
location.reload();
}
// 뱀이 자기 자신과 충돌하면 게임을 종료합니다.
this.tail.forEach((segment) => {
if (segment.x === this.head.x && segment.y === this.head.y) {
alert('게임 오버!');
location.reload();
}
});
// 뱀을 다시 그립니다.
this.draw();
},
};
// 뱀이 움직이는 방향을 표시하는 변수
let direction = '';
// 키보드 이벤트 리스너
document.addEventListener('keydown', (event) => {
switch (event.key) {
case 'ArrowUp':
direction = 'up';
break;
case 'ArrowDown':
direction = 'down';
break;
case 'ArrowLeft':
direction = 'left';
break;
case 'ArrowRight':
direction = 'right';
break;
}
});
// 게임 루프
function gameLoop() {
switch (direction) {
case 'up':
snake.move(0, -1);
break;
case 'down':
snake.move(0, 1);
break;
case 'left':
snake.move(-1, 0);
break;
case 'right':
snake.move(1, 0);
break;
}
setTimeout(gameLoop, 200); // 게임 속도를 조절할 수 있습니다.
}
gameLoop();
이 소스 코드는 간단한 뱀 게임을 만드는 예시입니다. 사용자의 입력에 따라 뱀이 움직이고, 벽이나 자기 자신과 충돌 시 게임이 종료됩니다. 또한, HTML 파일에서 자바스크립트 파일을 불러와 실행하는 부분도 포함되어 있습니다.
소스 코드를 실행하면 뱀 게임이 화면에 나타날 것입니다. 웹 브라우저에서 소스 코드를 실행해보시고 즐거운 게임을 즐겨보시기 바랍니다. 자세한 내용이나 추가 기능을 원하신다면 언제든지 말씀해주세요!