Untitled

 avatar
unknown
plain_text
5 months ago
3.1 kB
1
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