phaser实现类似超级玛丽跳跃类游戏代码
代码语言:html
所属分类:游戏
代码描述:phaser实现类似超级玛丽跳跃类游戏代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box
}
body {
font-family: "Comic Sans MS","Arial",sans-serif;
background: linear-gradient(to bottom,#ff9a56 0,#ff6b35 100%);
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh
}
#gameContainer {
position: relative;
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
border-radius: 15px;
overflow: hidden
}
#menu {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
background: rgba(255,154,86,0.95);
padding: 40px;
border-radius: 20px;
border: 5px solid #8b4513;
text-align: center;
color: #fff;
z-index: 1000;
box-shadow: 0 8px 16px rgba(0,0,0,0.3);
max-width: 500px
}
#menu h1 {
font-size: 48px;
margin-bottom: 10px;
text-shadow: 3px 3px 6px rgba(0,0,0,0.5);
color: #fff
}
#menu .pumpkin-emoji {
font-size: 64px;
margin: 10px 0
}
#menu p {
font-size: 18px;
margin-bottom: 25px;
line-height: 1.6;
color: rgba(255,255,255,0.95)
}
#menu button {
font-family: "Comic Sans MS","Arial",sans-serif;
font-size: 24px;
font-weight: bold;
padding: 15px 40px;
margin: 10px;
background: #8b4513;
color: white;
border: 3px solid #5a2d0c;
border-radius: 15px;
cursor: pointer;
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
transition: all .2s;
box-shadow: 0 4px 8px rgba(0,0,0,0.2)
}
#menu button:hover {
background: #a0522d;
transform: scale(1.05);
box-shadow: 0 6px 12px rgba(0,0,0,0.3)
}
#menu button:active {
transform: scale(0.95)
}
.hidden {
display: none!important
}
#ui {
position: absolute;
top: 20px;
left: 20px;
color: white;
text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
font-size: 20px;
font-weight: bold;
z-index: 100;
pointer-events: none
}
#rotMeter {
position: absolute;
top: 20px;
right: 20px;
width: 250px;
z-index: 100;
pointer-events: none
}
#rotMeter .label {
color: white;
text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
font-size: 18px;
font-weight: bold;
margin-bottom: 5px
}
#rotMeter .bar-container {
background: rgba(0,0,0,0.5);
border: 3px solid rgba(255,255,255,0.8);
border-radius: 10px;
padding: 5px;
height: 35px
}
#rotMeter .bar {
background: linear-gradient(to right,#f44,#fa0,#4f4);
height: 100%;
border-radius: 5px;
transition: width .3s ease;
box-shadow: 0 0 10px rgba(255,255,255,0.5)
}
#socialLinks {
margin-top: 20px;
font-size: 14px
}
#socialLinks a {
color: rgba(255,255,255,0.9);
text-decoration: none;
margin: 0 8px;
transition: all .2s
}
#socialLinks a:hover {
color: #fff;
text-decoration: underline
}
#instructions {
position: absolute;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
background: rgba(0,0,0,0.7);
color: white;
padding: 15px 30px;
border-radius: 10px;
border: 2px solid rgba(255,255,255,0.4);
font-size: 16px;
text-align: center;
z-index: 100;
pointer-events: none
}
</style>
</head>
<body>
<div id="gameContainer"></div>
<div id="menu">
<h1>DON'T LET ME ROT</h1>
<p>
You're a jack-o'-lantern racing against time!<br> Collect preservatives to stay fresh.<br> Avoid hazards that speed up decay.<br>
<strong>How long can you survive?</strong>
</p>
<button id="startBtn">START ROTTING</button>
<button id="howToPlayBtn">HOW TO PLAY</button>
<button id="highScoresBtn">HIGH SCORES</button>
</div>
<div id="ui" class="hidden">
<div>Score: <span id="scoreValue">0</span></div>
<div>Level: <span id="levelValue">1</span></div>
<div>Lives: <span id="livesValue">3</span></div>
</div>
<div id="rotMeter" class="hidden">
<div class="label">Freshness</div>
<div class="bar-container">
<div class="bar" id="rotBar" style="width: 100%"></div>
</div>
</div>
<div id="instructions" class="hidden">
Arrow Keys or WASD to Move • Up or Space to Jump • Collect Ice Packs to Stay Fresh!
</div>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/phaser.3.80.1.js"></script>
<script >
let game;
let gameScene;
const config = {
type: Phaser.AUTO,
width: 1200,
height: 700,
parent: "gameContainer",
backgroundColor: "#5C94FC",
physics: {
default: "arcade",
arcade: {
gravity: { y: 1000 },
debug: false,
},
},
scene: {
preload: preload,
create: create,
update: update,
},
};
const WORLD_WIDTH = 3600;
const WORLD_HEIGHT = 700;
// Game state
let player;
let platforms;
let collectibles;
let hazards;
let cursors;
let score = 0;
let lives = 3; // Player gets 3 lives
let currentLevel = 1; // Start on level 3 for testing
let freshness = 100; // Health (100 = fresh, 0 = completely rotten)
let rotSpeed = 0.05; // How fast the pumpkin rots per frame
let gameActive = false;
let groundLevel;
let clouds;
let goalPortal; // Level completion portal
// High scores (stored in localStorage)
const MAX_HIGH_SCORES = 10;
function getHighScores() {
const scores = localStorage.getItem('pumpkinHighScores');
return scores ? JSON.parse(scores) : [];
}
function saveHighScore(playerScore, playerLevel, playerLives) {
const highScores = getHighScores();
const newScore = {
score: playerScore,
level: playerLevel,
lives: playerLives,
date: new Date().toLocaleDateString()
};
highScores.push(newScore);
highScores.sort((a, b) => b.score - a.score);
highScores.splice(MAX_HIGH_SCORES); // Keep only top 10
localStorage.setItem('pumpkinHighScores', JSON.stringify(highScores));
return highScores.findIndex(s => s === newScore) + 1; // Return rank (1-based)
}
function preload() {
// No external assets needed - we'll draw everything with graphics!
}
function createTextures(scene) {
// Create ice collectible texture
const iceGraphics = scene.add.graphics();
iceGraphics.fillStyle(0x00ffff);
iceGraphics.lineStyle(4, 0x000000);
iceGraphics.fillCircle(16, 16, 15);
iceGraphics.strokeCircle(16, 16, 15);
iceGraphics.fillStyle(0xffffff);
iceGraphics.fillCircle(12, 12, 5);
iceGraphics.lineStyle(2, 0xffffff);
iceGraphics.beginPath();
iceGraphics.moveTo(10, 10);
iceGraphics.lineTo(22, 22);
iceGraphics.strokePath();
iceGraphics.beginPath();
iceGraphics.moveTo(10, 22);
iceGraphics.lineTo(22, 10);
iceGraphics.strokePath();
iceGraphics.generateTexture("ice", 32, 32);
iceGraphics.destroy();
// Create spray collectible texture
const sprayGraphics = scene.add.graphics();
sprayGraphics.fillStyle(0xff1493);
sprayGraphics.lineStyle(4, 0x000000);
sprayGraphics.fillEllipse(16, 20, 24, 30);
sprayGraphics.strokeEllipse(16, 20, 24, 30);
sprayGraphics.fillStyle(0xffffff);
sprayGraphics.lineStyle(3, 0x000000);
sprayGraphics.fillRect(8, 2, 16, 10);
sprayGraphics.strokeRect(8, 2, 16, 10);
sprayGraphics.fillStyle(0xffffff);
sprayGraphics.fillCircle(10, 25, 3);
sprayGraphics.fillCircle(22, 15, 3);
sprayGraphics.generateTexture("spray", 32, 40);
sprayGraphics.destroy();
// Create sun hazard texture
const sunGraphics = scene.add.graphics();
for (let i = 0; i < 8; i++) {
cons.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0