너 웹으로 플레이 가능한 fps 게임을 만들어줄 수 있어? 맵을 표현하는 흰색줄 격자가 있어야 하고 목표물이 있어야 하고 에임 포인트가 있어야 하고 마우스로 시점 이동, wasd로 위치 이동, 스페이스바로 점프가 가능해야 해.
웹 기반 FPS 게임을 만드는 것은 흥미로운 프로젝트입니다! 아래는 HTML, CSS, JavaScript를 사용하여 간단한 FPS 게임의 기본 구조를 만드는 방법에 대한 예시입니다. 이 예시는 기본적인 맵, 목표물, 에임 포인트, 이동 및 점프 기능을 포함합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simple FPS Game</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<canvas id="gameCanvas"></canvas>
<script src="script.js"></script>
</body>
</html>
/* styles.css */
body {
margin: 0;
overflow: hidden;
}
canvas {
display: block;
background-color: #f0f0f0;
}
// script.js
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
let player = {
x: canvas.width / 2,
y: canvas.height / 2,
width: 20,
height: 20,
speed: 5,
jumpHeight: 100,
isJumping: false,
jumpStart: 0
};
let target = {
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
size: 30
};
function drawGrid() {
ctx.strokeStyle = '#ccc';
for (let i = 0; i < canvas.width; i += 50) {
ctx.beginPath();
ctx.moveTo(i, 0);
ctx.lineTo(i, canvas.height);
ctx.stroke();
}
for (let j = 0; j < canvas.height; j += 50) {
ctx.beginPath();
ctx.moveTo(0, j);
ctx.lineTo(canvas.width, j);
ctx.stroke();
}
}
function drawPlayer() {
ctx.fillStyle = 'blue';
ctx.fillRect(player.x, player.y, player.width, player.height);
}
function drawTarget() {
ctx.fillStyle = 'red';
ctx.beginPath();
ctx.arc(target.x, target.y, target.size, 0, Math.PI * 2);
ctx.fill();
}
function update() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawGrid();
drawPlayer();
drawTarget();
}
function movePlayer() {
document.addEventListener('keydown', (event) => {
switch (event.key) {
case 'w':
player.y -= player.speed;
break;
case 's':
player.y += player.speed;
break;
case 'a':
player.x -= player.speed;
break;
case 'd':
player.x += player.speed;
break;
case ' ':
if (!player.isJumping) {
player.isJumping = true;
player.jumpStart = player.y;
}
break;
}
});
}
function jump() {
if (player.isJumping) {
if (player.y > player.jumpStart - player.jumpHeight) {
player.y -= 10; // Jump up
} else {
player.isJumping = false; // Start falling
}
} else {
if (player.y < canvas.height - player.height) {
player.y += 10; // Fall down
}
}
}
function gameLoop() {
update();
jump();
requestAnimationFrame(gameLoop);
}
movePlayer();
gameLoop();
<canvas>
요소를 사용하여 게임을 그립니다.drawGrid()
: 격자 맵을 그립니다.drawPlayer()
: 플레이어를 그립니다.drawTarget()
: 목표물을 그립니다.movePlayer()
: WASD 키와 스페이스바를 사용하여 플레이어를 이동시키고 점프합니다.jump()
: 점프 로직을 처리합니다.gameLoop()
: 게임 루프를 실행하여 화면을 업데이트합니다.이 코드는 기본적인 구조만 제공하며, 추가적인 기능(예: 충돌 감지, 점수 시스템 등)을 구현하여 게임을 확장할 수 있습니다. 이 코드를 실행하려면 HTML 파일을 웹 브라우저에서 열면 됩니다.