貪吃蛇游戲🕹四個按鈕控制方向🎮
源代碼在圖片后面? ? ?點贊??關注🙏收藏??
互粉必回🙏🙏😍😍😍
?源代碼📟
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>貪吃蛇游戲</title>
<style>
? ? body {
? ? ? ? display: flex;
? ? ? ? justify-content: center;
? ? ? ? align-items: center;
? ? ? ? height: 100vh;
? ? ? ? background-color: #f5f5f5;
? ? ? ? margin: 0;
? ? ? ? font-family: Arial, sans-serif;
? ? }
? ? .game-container {
? ? ? ? width: 300px;
? ? ? ? text-align: center;
? ? }
? ? table {
? ? ? ? border-collapse: collapse;
? ? ? ? margin-top: 20px;
? ? ? ? border: 1px solid gray;
? ? }
? ? td {
? ? ? ? width: 10px;
? ? ? ? height: 10px;
? ? ? ? border: 1px solid gray;
? ? }
? ? .snake {
? ? ? ? background-color: green;
? ? }
? ? .food {
? ? ? ? background-color: red;
? ? }
? ? .control-buttons {
? ? ? ? display: flex;
? ? ? ? justify-content: space-around;
? ? ? ? margin-bottom: 10px;
? ? }
? ? button {
? ? ? ? width: 50px;
? ? ? ? height: 50px;
? ? ? ? border-radius: 10px;
? ? ? ? border: none;
? ? ? ? box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
? ? ? ? cursor: pointer;
? ? }
? ? #score {
? ? ? ? font-size: 1.5em;
? ? ? ? margin-bottom: 10px;
? ? }
</style>
</head>
<body>
<div class="game-container">
? ? <div id="score">當前分數: 0</div>
? ? <div class="control-buttons">
? ? ? ? <button id="up-btn">▲</button>
? ? ? ? <button id="right-btn">▶</button>
? ? ? ? <button id="down-btn">▼</button>
? ? ? ? <button id="left-btn">◀</button>
? ? </div>
? ? <table id="game-board">
? ? </table>
</div>
?
<script>
? ? const board = document.getElementById('game-board');
? ? const scoreDisplay = document.getElementById('score');
?
? ? let snake = [{x: 10, y: 10}];
? ? let food = {x: 15, y: 15};
? ? let direction = 'right';
? ? let score = 0;
?
? ? function drawBoard() {
? ? ? ? board.innerHTML = '';
? ? ? ? for (let i = 0; i < 20; i++) {
? ? ? ? ? ? let row = '<tr>';
? ? ? ? ? ? for (let j = 0; j < 20; j++) {
? ? ? ? ? ? ? ? if (snake.some(part => part.x === j && part.y === i)) {
? ? ? ? ? ? ? ? ? ? row += '<td class="snake"></td>';
? ? ? ? ? ? ? ? } else if (food.x === j && food.y === i) {
? ? ? ? ? ? ? ? ? ? row += '<td class="food"></td>';
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? row += '<td></td>';
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? row += '</tr>';
? ? ? ? ? ? board.innerHTML += row;
? ? ? ? }
? ? }
?
? ? function updateSnake() {
? ? ? ? const head = {x: snake[0].x + (direction === 'right' ? 1 : direction === 'left' ? -1 : 0),
? ? ? ? ? ? ? ? ? ? ? y: snake[0].y + (direction === 'down' ? 1 : direction === 'up' ? -1 : 0)};
? ? ? ? snake.unshift(head);
? ? ? ? if (head.x === food.x && head.y === food.y) {
? ? ? ? ? ? score++;
? ? ? ? ? ? scoreDisplay.textContent = `當前分數: ${score}`;
? ? ? ? ? ? food = {x: Math.floor(Math.random() * 20), y: Math.floor(Math.random() * 20)};
? ? ? ? } else {
? ? ? ? ? ? snake.pop();
? ? ? ? }
? ? }
?
? ? function checkCollision() {
? ? ? ? const head = snake[0];
? ? ? ? if (head.x < 0 || head.x >= 20 || head.y < 0 || head.y >= 20 || snake.slice(1).some(part => part.x === head.x && part.y === head.y)) {
? ? ? ? ? ? alert('Game Over!');
? ? ? ? ? ? location.reload();
? ? ? ? }
? ? }
?
? ? function gameLoop() {
? ? ? ? updateSnake();
? ? ? ? checkCollision();
? ? ? ? drawBoard();
? ? ? ? setTimeout(gameLoop, 200);
? ? }
?
? ? document.getElementById('up-btn').addEventListener('click', () => direction = 'up');
? ? document.getElementById('right-btn').addEventListener('click', () => direction = 'right');
? ? document.getElementById('down-btn').addEventListener('click', () => direction = 'down');
? ? document.getElementById('left-btn').addEventListener('click', () => direction = 'left');
?
? ? gameLoop();
</script>
</body>
</html>