Untitled
unknown
plain_text
a year ago
3.1 kB
5
Indexable
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Minecraft Jump</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<canvas id="gameCanvas"></canvas>
<script src="script.js"></script>
</body>
</html>
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #87ceeb; /* Небо */
}
canvas {
border: 2px solid #000;
background-color: #a9d0f5; /* Цвет фона для земли */
}
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
canvas.width = 400;
canvas.height = 600;
let player = {
x: canvas.width / 2 - 15,
y: canvas.height - 60,
width: 30,
height: 30,
speed: 3,
dy: 0,
gravity: 0.5,
jumpPower: -10,
jumping: false
};
let platforms = [];
let score = 0;
let isGameOver = false;
// Создание платформ
function createPlatforms() {
for (let i = 0; i < 5; i++) {
platforms.push({
x: Math.random() * (canvas.width - 50),
y: canvas.height - (i * 100 + 100),
width: 50,
height: 10
});
}
}
// Обновление игры
function update() {
if (isGameOver) return;
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Гравитация player.dy += player.gravity;
player.y += player.dy;
// Проверка на платформы if (player.y + player.height >= canvas.height) {
isGameOver = true;
}
platforms.forEach(platform => {
ctx.fillStyle = '#8B4513'; // Цвет платформы
ctx.fillRect(platform.x, platform.y, platform.width, platform.height);
// Проверка на столкновение с платформами
if (player.x < platform.x + platform.width &&
player.x + player.width > platform.x &&
player.y + player.height < platform.y + platform.height &&
player.y + player.height + player.dy >= platform.y) {
player.dy = player.jumpPower;
player.jumping = true;
score++;
}
});
// Отрисовка игрока ctx.fillStyle = '#00FF00'; // Цвет игрока
ctx.fillRect(player.x, player.y, player.width, player.height);
// Отображение счета ctx.fillStyle = '#000';
ctx.font = '20px Arial';
ctx.fillText('Счет: ' + score, 10, 20);
// Проверка на границы
if (player.y > canvas.height) {
isGameOver = true;
}
requestAnimationFrame(update);
}
// Управление игроком
window.addEventListener('keydown', (e) => {
if (e.code === 'ArrowLeft') {
player.x -= player.speed;
}
if (e.code === 'ArrowRight') {
player.x += player.speed;
}
if (e.code === 'Space' && !player.jumping) {
player.dy = player.jumpPower;
player.jumping = true;
}
});
// Начало игры
createPlatforms();
update();
Editor is loading...
Leave a Comment