| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Super Mario Bros - HTML5 Clone</title> |
| <style> |
| body { |
| margin: 0; |
| padding: 0; |
| overflow: hidden; |
| background: linear-gradient(to bottom, #1e90ff 0%, #58b7ff 100%); |
| font-family: 'Arial', sans-serif; |
| touch-action: manipulation; |
| } |
| |
| #game-container { |
| position: relative; |
| width: 100vw; |
| height: 100vh; |
| overflow: hidden; |
| } |
| |
| #game-world { |
| position: absolute; |
| width: 3000px; |
| height: 100vh; |
| background-color: #1e90ff; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><circle cx="20" cy="20" r="5" fill="white" opacity="0.4"/><circle cx="60" cy="35" r="7" fill="white" opacity="0.4"/><circle cx="80" cy="10" r="4" fill="white" opacity="0.4"/></svg>'); |
| background-size: 100px 100px; |
| } |
| |
| #ground { |
| position: absolute; |
| bottom: 0; |
| width: 100%; |
| height: 64px; |
| background-color: #5c3927; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><rect width="32" height="32" fill="%2390562a"/><rect x="0" y="0" width="32" height="8" fill="%23a87842"/><rect x="0" y="8" width="32" height="8" fill="%23604228"/><rect x="0" y="16" width="32" height="8" fill="%23a87842"/><rect x="0" y="24" width="32" height="8" fill="%23604228"/></svg>'); |
| } |
| |
| #mario { |
| position: absolute; |
| width: 48px; |
| height: 64px; |
| bottom: 64px; |
| left: 100px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="64" viewBox="0 0 48 64"><path d="M0,48 L16,48 L16,64 L0,64 Z" fill="%23cc0000"/><path d="M32,48 L48,48 L48,64 L32,64 Z" fill="%23cc0000"/><path d="M8,32 L40,32 L40,48 L8,48 Z" fill="%23f8f808"/><path d="M16,24 L32,24 L32,32 L16,32 Z" fill="%23cc0000"/><path d="M16,16 L32,16 L32,24 L16,24 Z" fill="%23f8f808"/><path d="M8,16 L16,16 L16,24 L8,24 Z" fill="%23f8f808"/><path d="M32,16 L40,16 L40,24 L32,24 Z" fill="%23f8f808"/><path d="M16,8 L32,8 L32,16 L16,16 Z" fill="%23806020"/><circle cx="16" cy="12" r="2" fill="%23000000"/><circle cx="32" cy="12" r="2" fill="%23000000"/><path d="M20,16 L28,16 L28,20 L24,24 L20,20 Z" fill="%23000000"/><path d="M8,4 L40,4 L40,8 L32,8 L32,16 L16,16 L16,8 L8,8 Z" fill="%23806020"/></svg>'); |
| background-repeat: no-repeat; |
| z-index: 10; |
| transition: transform 0.05s; |
| transform-origin: center bottom; |
| image-rendering: pixelated; |
| } |
| |
| .mario-walk { |
| animation: marioWalk 0.3s steps(3) infinite; |
| } |
| |
| @keyframes marioWalk { |
| 0% { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="64" viewBox="0 0 48 64"><path d="M0,48 L16,48 L16,64 L0,64 Z" fill="%23cc0000"/><path d="M32,48 L48,48 L48,64 L32,64 Z" fill="%23cc0000"/><path d="M8,32 L40,32 L40,48 L8,48 Z" fill="%23f8f808"/><path d="M16,24 L32,24 L32,32 L16,32 Z" fill="%23cc0000"/><path d="M16,16 L32,16 L32,24 L16,24 Z" fill="%23f8f808"/><path d="M8,16 L16,16 L16,24 L8,24 Z" fill="%23f8f808"/><path d="M32,16 L40,16 L40,24 L32,24 Z" fill="%23f8f808"/><path d="M16,8 L32,8 L32,16 L16,16 Z" fill="%23806020"/><circle cx="16" cy="12" r="2" fill="%23000000"/><circle cx="32" cy="12" r="2" fill="%23000000"/><path d="M20,16 L28,16 L28,20 L24,24 L20,20 Z" fill="%23000000"/><path d="M8,4 L40,4 L40,8 L32,8 L32,16 L16,16 L16,8 L8,8 Z" fill="%23806020"/></svg>'); } |
| 33% { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="64" viewBox="0 0 48 64"><path d="M0,48 L16,48 L16,60 L0,60 Z" fill="%23cc0000"/><path d="M32,48 L48,48 L48,64 L32,64 Z" fill="%23cc0000"/><path d="M8,32 L40,32 L40,48 L8,48 Z" fill="%23f8f808"/><path d="M16,24 L32,24 L32,32 L16,32 Z" fill="%23cc0000"/><path d="M16,16 L32,16 L32,24 L16,24 Z" fill="%23f8f808"/><path d="M8,16 L16,16 L16,24 L8,24 Z" fill="%23f8f808"/><path d="M32,16 L40,16 L40,24 L32,24 Z" fill="%23f8f808"/><path d="M16,8 L32,8 L32,16 L16,16 Z" fill="%23806020"/><circle cx="16" cy="12" r="2" fill="%23000000"/><circle cx="32" cy="12" r="2" fill="%23000000"/><path d="M20,16 L28,16 L28,20 L24,24 L20,20 Z" fill="%23000000"/><path d="M8,4 L40,4 L40,8 L32,8 L32,16 L16,16 L16,8 L8,8 Z" fill="%23806020"/></svg>'); } |
| 66% { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="64" viewBox="0 0 48 64"><path d="M0,48 L16,48 L16,64 L0,64 Z" fill="%23cc0000"/><path d="M32,48 L48,48 L48,60 L32,60 Z" fill="%23cc0000"/><path d="M8,32 L40,32 L40,48 L8,48 Z" fill="%23f8f808"/><path d="M16,24 L32,24 L32,32 L16,32 Z" fill="%23cc0000"/><path d="M16,16 L32,16 L32,24 L16,24 Z" fill="%23f8f808"/><path d="M8,16 L16,16 L16,24 L8,24 Z" fill="%23f8f808"/><path d="M32,16 L40,16 L40,24 L32,24 Z" fill="%23f8f808"/><path d="M16,8 L32,8 L32,16 L16,16 Z" fill="%23806020"/><circle cx="16" cy="12" r="2" fill="%23000000"/><circle cx="32" cy="12" r="2" fill="%23000000"/><path d="M20,16 L28,16 L28,20 L24,24 L20,20 Z" fill="%23000000"/><path d="M8,4 L40,4 L40,8 L32,8 L32,16 L16,16 L16,8 L8,8 Z" fill="%23806020"/></svg>'); } |
| } |
| |
| .mario-jump { |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="64" viewBox="0 0 48 64"><path d="M0,48 L16,48 L16,64 L0,64 Z" fill="%23cc0000"/><path d="M32,48 L48,48 L48,64 L32,64 Z" fill="%23cc0000"/><path d="M8,32 L40,32 L40,48 L8,48 Z" fill="%23f8f808"/><path d="M16,24 L32,24 L32,32 L16,32 Z" fill="%23cc0000"/><path d="M16,16 L32,16 L32,24 L16,24 Z" fill="%23f8f808"/><path d="M8,16 L16,16 L16,24 L8,24 Z" fill="%23f8f808"/><path d="M32,16 L40,16 L40,24 L32,24 Z" fill="%23f8f808"/><path d="M16,8 L32,8 L32,16 L16,16 Z" fill="%23806020"/><circle cx="16" cy="12" r="2" fill="%23000000"/><circle cx="32" cy="12" r="2" fill="%23000000"/><path d="M20,16 L28,16 L28,20 L24,24 L20,20 Z" fill="%23000000"/><path d="M8,4 L40,4 L40,8 L32,8 L32,16 L16,16 L16,8 L8,8 Z" fill="%23806020"/></svg>'); |
| transform: scale(1.2); |
| } |
| |
| .block { |
| position: absolute; |
| width: 48px; |
| height: 48px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><rect width="48" height="48" fill="%23b58c45"/><rect x="4" y="4" width="40" height="40" fill="%23d4a059"/><rect x="8" y="8" width="32" height="32" fill="%23b58c45"/><rect x="12" y="12" width="24" height="24" fill="%23d4a059"/><rect x="16" y="16" width="16" height="16" fill="%23b58c45"/><rect x="20" y="20" width="8" height="8" fill="%23d4a059"/></svg>'); |
| z-index: 5; |
| image-rendering: pixelated; |
| } |
| |
| .brick { |
| position: absolute; |
| width: 48px; |
| height: 48px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><rect width="48" height="48" fill="%23cc0000"/><path d="M0,4 L48,4 L48,8 L0,8 Z M0,12 L48,12 L48,16 L0,16 Z M0,20 L48,20 L48,24 L0,24 Z M0,28 L48,28 L48,32 L0,32 Z M0,36 L48,36 L48,40 L0,40 Z M0,44 L48,44 L48,48 L0,48 Z" fill="%23990000"/></svg>'); |
| z-index: 5; |
| image-rendering: pixelated; |
| } |
| |
| .question-block { |
| position: absolute; |
| width: 48px; |
| height: 48px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48"><rect width="48" height="48" fill="%23f8d808"/><rect x="4" y="4" width="40" height="40" fill="%23f8f808"/><rect x="8" y="8" width="32" height="32" fill="%23f8d808"/><path d="M24,16 L32,24 L24,32 L16,24 Z" fill="%23f8f808"/></svg>'); |
| z-index: 5; |
| animation: blockBounce 0.5s infinite alternate; |
| image-rendering: pixelated; |
| } |
| |
| @keyframes blockBounce { |
| 0% { transform: translateY(0); } |
| 100% { transform: translateY(-3px); } |
| } |
| |
| .pipe { |
| position: absolute; |
| width: 96px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="96" height="100" viewBox="0 0 96 100"><rect width="96" height="24" fill="%23189409"/><rect y="24" width="96" height="76" fill="%2320b010"/><rect x="8" y="8" width="80" height="16" fill="%2330c020"/><rect x="16" y="28" width="64" height="72" fill="%2330c020"/></svg>'); |
| background-repeat: repeat-y; |
| background-size: 96px 96px; |
| z-index: 5; |
| image-rendering: pixelated; |
| } |
| |
| .coin { |
| position: absolute; |
| width: 24px; |
| height: 24px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="%23f8f808" stroke="%23f8d808" stroke-width="2"/><path d="M12,5 C15,5 19,8 19,12 C19,16 15,19 12,19 C9,19 5,16 5,12 C5,8 9,5 12,5 Z" fill="%23e8c810"/><path d="M12,8 C14,8 16,10 16,12 C16,14 14,16 12,16 C10,16 8,14 8,12 C8,10 10,8 12,8 Z" fill="%23f8f808"/></svg>'); |
| z-index: 4; |
| animation: coinSpin 0.5s linear infinite; |
| image-rendering: pixelated; |
| } |
| |
| @keyframes coinSpin { |
| 0% { transform: scale(1) rotateY(0deg); } |
| 50% { transform: scale(1.2) rotateY(180deg); } |
| 100% { transform: scale(1) rotateY(360deg); } |
| } |
| |
| .goomba { |
| position: absolute; |
| width: 48px; |
| height: 45px; |
| bottom: 64px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="45" viewBox="0 0 48 45"><path d="M8,0 C12,0 39,0 40,0 C44,0 48,4 48,8 C48,30 48,30 48,30 C48,38 40,45 40,45 L8,45 C0,45 0,38 0,30 C0,30 0,10 0,8 C0,4 4,0 8,0 Z" fill="%23805c28"/><rect y="15" width="48" height="30" fill="%23684428"/><rect x="6" y="6" width="12" height="9" fill="%23000000"/><rect x="30" y="6" width="12" height="9" fill="%23000000"/><rect x="18" y="24" width="12" height="3" fill="%23000000"/><rect x="12" y="36" width="8" height="9" fill="%23000000"/><rect x="28" y="36" width="8" height="9" fill="%23000000"/></svg>'); |
| z-index: 6; |
| animation: goombaWalk 1s steps(2) infinite; |
| image-rendering: pixelated; |
| } |
| |
| @keyframes goombaWalk { |
| 0% { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="45" viewBox="0 0 48 45"><path d="M8,0 C12,0 39,0 40,0 C44,0 48,4 48,8 C48,30 48,30 48,30 C48,38 40,45 40,45 L8,45 C0,45 0,38 0,30 C0,30 0,10 0,8 C0,4 4,0 8,0 Z" fill="%23805c28"/><rect y="15" width="48" height="30" fill="%23684428"/><rect x="6" y="6" width="12" height="9" fill="%23000000"/><rect x="30" y="6" width="12" height="9" fill="%23000000"/><rect x="18" y="24" width="12" height="3" fill="%23000000"/><rect x="12" y="36" width="8" height="9" fill="%23000000"/><rect x="28" y="36" width="8" height="9" fill="%23000000"/></svg>'); } |
| 50% { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="45" viewBox="0 0 48 45"><path d="M8,0 C12,0 39,0 40,0 C44,0 48,4 48,8 C48,30 48,30 48,30 C48,34 47,38 40,45 L8,45 C5,45 0,40 0,32 C0,32 0,10 0,8 C0,4 4,0 8,0 Z" fill="%23805c28"/><rect y="15" width="48" height="30" fill="%23684428"/><rect x="6" y="6" width="12" height="9" fill="%23000000"/><rect x="30" y="6" width="12" height="9" fill="%23000000"/><rect x="18" y="24" width="12" height="3" fill="%23000000"/><rect x="12" y="36" width="8" height="9" fill="%23000000"/><rect x="28" y="36" width="8" height="9" fill="%23000000"/></svg>'); } |
| } |
| |
| .goomba-squashed { |
| animation: none; |
| height: 20px; |
| background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="48" height="20" viewBox="0 0 48 20"><rect y="0" width="48" height="20" fill="%23805c28"/><rect x="18" y="5" width="12" height="3" fill="%23000000"/></svg>'); |
| } |
| |
| #hud { |
| position: fixed; |
| top: 10px; |
| left: 10px; |
| color: white; |
| font-size: 24px; |
| font-weight: bold; |
| text-shadow: 3px 3px 0 #000; |
| z-index: 100; |
| padding: 10px; |
| background-color: rgba(0,0,0,0.5); |
| border-radius: 10px; |
| display: flex; |
| gap: 20px; |
| } |
| |
| .hud-item { |
| display: flex; |
| align-items: center; |
| } |
| |
| #controls-info { |
| position: fixed; |
| bottom: 10px; |
| left: 10px; |
| color: white; |
| font-size: 16px; |
| text-shadow: 2px 2px 0 #000; |
| background-color: rgba(0,0,0,0.7); |
| padding: 10px 15px; |
| border-radius: 10px; |
| z-index: 100; |
| } |
| |
| #game-over { |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| background-color: rgba(0,0,0,0.8); |
| display: none; |
| flex-direction: column; |
| justify-content: center; |
| align-items: center; |
| color: white; |
| font-size: 48px; |
| font-weight: bold; |
| text-shadow: 4px 4px 0 #000; |
| z-index: 200; |
| } |
| |
| #restart-btn { |
| margin-top: 30px; |
| padding: 15px 30px; |
| background-color: #ff0000; |
| color: white; |
| border: none; |
| border-radius: 10px; |
| font-size: 24px; |
| font-weight: bold; |
| cursor: pointer; |
| box-shadow: 0 5px 0 #990000, 0 5px 10px rgba(0,0,0,0.5); |
| transition: all 0.1s; |
| } |
| |
| #restart-btn:active { |
| transform: translateY(5px); |
| box-shadow: 0 0 0 #990000, 0 5px 10px rgba(0,0,0,0.5); |
| } |
| |
| #title { |
| position: fixed; |
| top: 20px; |
| width: 100%; |
| text-align: center; |
| color: white; |
| font-size: 32px; |
| font-weight: bold; |
| text-shadow: 4px 4px 0 #000; |
| z-index: 100; |
| animation: titleBounce 1s infinite alternate; |
| } |
| |
| @keyframes titleBounce { |
| 0% { transform: translateY(0); } |
| 100% { transform: translateY(-10px); } |
| } |
| </style> |
| </head> |
| <body> |
| <div id="title">SUPER MARIO BROS</div> |
| <div id="game-container"> |
| <div id="game-world"> |
| <div id="ground"></div> |
| <div id="mario"></div> |
| </div> |
| </div> |
| |
| <div id="hud"> |
| <div class="hud-item">Coins: <span id="coins">0</span></div> |
| <div class="hud-item">Score: <span id="score">0</span></div> |
| <div class="hud-item">World: <span>1-1</span></div> |
| </div> |
| |
| <div id="controls-info"> |
| ← → to Move | ↑/SPACE to Jump |
| </div> |
| |
| <div id="game-over"> |
| <h1>GAME OVER!</h1> |
| <button id="restart-btn">PLAY AGAIN</button> |
| </div> |
| |
| <audio id="jump-sound" preload="auto"> |
| <source src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ..."> |
| </audio> |
| <audio id="coin-sound" preload="auto"> |
| <source src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ..."> |
| </audio> |
| <audio id="bump-sound" preload="auto"> |
| <source src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ..."> |
| </audio> |
| <audio id="stomp-sound" preload="auto"> |
| <source src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ..."> |
| </audio> |
| <audio id="die-sound" preload="auto"> |
| <source src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ..."> |
| </audio> |
| <audio id="theme-music" preload="auto" loop> |
| <source src="data:audio/wav;base64,UklGRl9vT19XQVZFZm10IBAAAAABAAEAQB8AAEAfAAABAAgAZGF0YQ..."> |
| </audio> |
| |
| <script> |
| |
| const gameState = { |
| coins: 0, |
| score: 0, |
| lives: 3, |
| world: '1-1', |
| marioX: 100, |
| marioY: 0, |
| velocityX: 0, |
| velocityY: 0, |
| direction: 1, |
| isJumping: false, |
| isWalking: false, |
| isAlive: true, |
| cameraX: 0, |
| gravity: 0.5, |
| jumpForce: -13, |
| speed: 5, |
| moveAcceleration: 0.7, |
| moveDeceleration: 0.7, |
| maxSpeed: 8, |
| groundY: 0, |
| keys: { |
| ArrowLeft: false, |
| ArrowRight: false, |
| ArrowUp: false, |
| Space: false, |
| KeyA: false, |
| KeyD: false, |
| KeyW: false |
| } |
| }; |
| |
| |
| const gameContainer = document.getElementById('game-container'); |
| const gameWorld = document.getElementById('game-world'); |
| const mario = document.getElementById('mario'); |
| const ground = document.getElementById('ground'); |
| const coinsDisplay = document.getElementById('coins'); |
| const scoreDisplay = document.getElementById('score'); |
| const gameOverScreen = document.getElementById('game-over'); |
| const restartBtn = document.getElementById('restart-btn'); |
| const title = document.getElementById('title'); |
| |
| |
| const jumpSound = document.getElementById('jump-sound'); |
| const coinSound = document.getElementById('coin-sound'); |
| const bumpSound = document.getElementById('bump-sound'); |
| const stompSound = document.getElementById('stomp-sound'); |
| const dieSound = document.getElementById('die-sound'); |
| const themeMusic = document.getElementById('theme-music'); |
| |
| |
| const blocks = []; |
| const bricks = []; |
| const questionBlocks = []; |
| const coins = []; |
| const pipes = []; |
| const goombas = []; |
| |
| |
| function initGame() { |
| gameState.coins = 0; |
| gameState.score = 0; |
| gameState.lives = 3; |
| gameState.marioX = 100; |
| gameState.marioY = 0; |
| gameState.velocityX = 0; |
| gameState.velocityY = 0; |
| gameState.direction = 1; |
| gameState.isJumping = false; |
| gameState.isWalking = false; |
| gameState.isAlive = true; |
| gameState.cameraX = 0; |
| gameOverScreen.style.display = 'none'; |
| |
| |
| mario.style.left = '100px'; |
| mario.style.bottom = '64px'; |
| mario.classList.remove('mario-walk', 'mario-jump'); |
| |
| |
| createLevel(); |
| |
| |
| requestAnimationFrame(gameLoop); |
| |
| |
| themeMusic.currentTime = 0; |
| themeMusic.volume = 0.7; |
| try { |
| themeMusic.play(); |
| } catch (e) { |
| console.log("Audio play failed:", e); |
| } |
| } |
| |
| |
| function createLevel() { |
| |
| gameWorld.querySelectorAll('.block, .brick, .question-block, .coin, .pipe, .goomba') |
| .forEach(element => element.remove()); |
| |
| |
| blocks.length = 0; |
| bricks.length = 0; |
| questionBlocks.length = 0; |
| coins.length = 0; |
| pipes.length = 0; |
| goombas.length = 0; |
| |
| |
| gameState.groundY = 64; |
| |
| |
| for (let i = 0; i < 10; i++) { |
| const block = document.createElement('div'); |
| block.className = 'block'; |
| block.style.left = (500 + i * 48) + 'px'; |
| block.style.bottom = '150px'; |
| gameWorld.appendChild(block); |
| blocks.push({ |
| element: block, |
| x: 500 + i * 48, |
| y: 150, |
| width: 48, |
| height: 48 |
| }); |
| } |
| |
| |
| for (let i = 0; i < 3; i++) { |
| const brick = document.createElement('div'); |
| brick.className = 'brick'; |
| brick.style.left = (300 + i * 60) + 'px'; |
| brick.style.bottom = '200px'; |
| gameWorld.appendChild(brick); |
| bricks.push({ |
| element: brick, |
| x: 300 + i * 60, |
| y: 200, |
| width: 48, |
| height: 48 |
| }); |
| } |
| |
| |
| for (let i = 0; i < 2; i++) { |
| const block = document.createElement('div'); |
| block.className = 'question-block'; |
| block.style.left = (700 + i * 120) + 'px'; |
| block.style.bottom = '200px'; |
| gameWorld.appendChild(block); |
| questionBlocks.push({ |
| element: block, |
| x: 700 + i * 120, |
| y: 200, |
| width: 48, |
| height: 48 |
| }); |
| } |
| |
| |
| const pipe = document.createElement('div'); |
| pipe.className = 'pipe'; |
| pipe.style.left = '1200px'; |
| pipe.style.bottom = '0px'; |
| pipe.style.height = '150px'; |
| gameWorld.appendChild(pipe); |
| pipes.push({ |
| element: pipe, |
| x: 1200, |
| y: 0, |
| width: 96, |
| height: 150 |
| }); |
| |
| |
| const pipe2 = document.createElement('div'); |
| pipe2.className = 'pipe'; |
| pipe2.style.left = '1800px'; |
| pipe2.style.bottom = '0px'; |
| pipe2.style.height = '180px'; |
| gameWorld.appendChild(pipe2); |
| pipes.push({ |
| element: pipe2, |
| x: 1800, |
| y: 0, |
| width: 96, |
| height: 180 |
| }); |
| |
| |
| for (let i = 0; i < 8; i++) { |
| const coin = document.createElement('div'); |
| coin.className = 'coin'; |
| coin.style.left = (800 + i * 70) + 'px'; |
| coin.style.bottom = '250px'; |
| gameWorld.appendChild(coin); |
| coins.push({ |
| element: coin, |
| x: 800 + i * 70, |
| y: 250, |
| width: 24, |
| height: 24 |
| }); |
| } |
| |
| |
| for (let i = 0; i < 5; i++) { |
| const coin = document.createElement('div'); |
| coin.className = 'coin'; |
| coin.style.left = (1500 + i * 150) + 'px'; |
| coin.style.bottom = '150px'; |
| gameWorld.appendChild(coin); |
| coins.push({ |
| element: coin, |
| x: 1500 + i * 150, |
| y: 150, |
| width: 24, |
| height: 24 |
| }); |
| } |
| |
| |
| for (let i = 0; i < 5 |
| </html> |