原生js实现canvas星际飞船射击类游戏代码
代码语言:html
所属分类:游戏
代码描述:原生js实现canvas星际飞船射击类游戏代码,按住键盘的上下左右键移动位置,按空格键开火。
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
@import url("https://fonts.googleapis.com/css2?family=Fredericka+the+Great&display=swap");
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
font-size: 62.5%;
}
body {
background: #221d38;
color: whitesmoke;
}
canvas {
background: #867443;
background: radial-gradient(circle at 33% 115%, #867443 4%, #805a42 15%, #221d38 34%);
background-position-y: 147px;
}
.wrapper {
font-family: "Fredericka the Great", cursive;
position: relative;
}
.game_space {
background-color: #5f5f5f;
background: radial-gradient(circle, #867443 4%, #805a42 15%, #221d38 34%);
border: 1px solid #666;
color: whitesmoke;
left: 50%;
margin-top: -6px;
position: fixed;
top: 21rem;
transform: translate(-50%, -50%);
width: 720px;
}
.game_space.playing {
cursor: none;
}
.canvasWrapper {
animation: ship_move_y 3s cubic-bezier(0.34, 1.56, 0.64, 1) forwards, ship_move_x 2.5s cubic-bezier(0.34, 1.2, 0.64, 1) forwards;
background: url("//repo.bfw.wiki/bfwrepo/webp/ship_dark.webp");
background-repeat: no-repeat;
background-position: -210px 190px;
height: 300px;
position: relative;
width: 720px;
z-index: 0;
}
@keyframes ship_move_x {
0% {
background-position-x: -210px;
}
50%, 100% {
background-position-x: 350px;
}
}
@keyframes ship_move_y {
0% {
background-position-y: 190px;
}
50%, 100% {
background-position-y: 75px;
}
}
.messaging {
font-size: 4rem;
left: 50%;
pointer-events: none;
position: absolute;
text-align: center;
text-shadow: 1px 1px 10px whitesmoke;
top: 50%;
transform: translate(-50%, -50%);
z-index: 1;
}
.messaging span {
display: inline-block;
}
.messaging span.h2 {
font-size: 2.5rem;
text-shadow: 1px 1px 10px firebrick;
}
.messaging span.h3 {
font-size: 1.9rem;
margin-top: 10px;
text-align: left;
text-shadow: 1px 1px 10px #241e9e;
}
.messaging span.h3 .action {
margin-top: 0;
width: 55px;
}
.level_display,
.score_display {
animation: reveal_score_display 1.5s ease-out forwards;
animation-delay: 1.5s;
font-size: 1.6rem;
height: 2.5rem;
margin: -8rem auto 0;
overflow: hidden;
padding: 0 8px;
text-align: right;
width: 720px;
}
.level_display {
animation: reveal_level_display 1.5s ease-out forwards;
text-align: left;
}
.level_display.hidden,
.score_display.hidden {
margin-top: -8rem;
}
@keyframes reveal_score_display {
0% {
margin-top: -8rem;
}
50%, 100% {
margin-top: 3rem;
}
}
@keyframes reveal_level_display {
0% {
margin-top: -8rem;
}
50%, 100% {
margin-top: -2.5rem;
}
}
.loading_font {
position: fixed;
top: -9999px;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="game_space loading">
<div class="canvasWrapper"></div>
<div class="messaging"></div>
</div>
<div class="score_display hidden">Score: <span class="score">0</span></div>
<div class="level_display hidden">Level: <span class="level">_</span></div>
<div class="loading_font" aria-hidden="true"> </div>
</div>
<script>
// Pen-ified version of this project:
// https://codepen.io/2Mogs/project/editor/DddNpw
/***
CLASSES FIRST
Main code all the way down at the bottom (approx line 1200)
***/
/* CONSTANTS */
class EventIDs {
constructor() {
this.ENTER_PRESSED = 'enter key pressed';
this.EXPLODE = 'explode';
this.FIRE = 'fire';
this.GAME_OVER = 'game over';
this.GET_READY = 'Get next level ready';
this.LEVEL_COMPLETE = 'level complete';
this.RESET_GAME = 'reset game';
this.START = 'start';
}}
class Messaging {
constructor() {
this.gameOver = 'Game Over';
this.levelOver = 'You beat the level';
this.start = 'Click to Play';
}}
class MyMath {
constructor() {
this.mFloor = Math.floor;
this.mRound = Math.round;
this.mRandom = Math.random;
this.mSqrt = Math.sqrt;
this.tau = Math.PI * 2;
}}
class EnemyPatterns {
constructor() {
this.baseRules = {
baseX: 535,
baseY: 44,
scalar: .5,
spaceY: 40,
spaceX: 50,
speed: .6 };
this.patterns = [
{
id: 'code',
rows: ['0111001100111001111',
'1000010010100101000',
'1000010010100101110',
'1000010010100101000',
'0111001100111001111'] },
{
id: 'pen',
rows: ['111001111010001',
'100101000011001',
'100101110010101',
'111001000010011',
'100001111010001'] },
this.generatePattern()];
}
generatePattern() {
return {
id: 'generated',
baseX: 750,
speed: 1.2,
rows: [this.generateRow(),
this.generateRow(),
this.generateRow(),
this.generateRow(),
this.generateRow()] };
}
generateRow(size = 10) {
let row = '';
for (let i = 0; i < size; i++) {
row += math.mRandom() < .85 ? '1' : '0';
}
return row;
}}
let eventIDs = new EventIDs();
let math = new MyMath();
let messaging = new Messaging();
let formations = new EnemyPatterns();
/* CONSTANTS - END */
/* MANAGERS & WATCHERS */
class EventManager {
constructor() {
this.subscribers = {};
}
subscribe(event, handler) {
if (this.subscribers[event]) {
this.subscribers[event].push(handler);
} else
{
this.subscribers[event] = [handler];
}
}
dispatch(event, data) {
if (this.subscribers[event]) {
this.subscribers[event].forEach(function (handler) {
handler(data);
});
}
}}
let eventManager = new EventManager();
class KeyWatcher {
constructor() {
this.goRIGHT = false;
this.goLEFT = false;
this.goUP = false;
this.goDOWN = false;
this.SPACEBAR = false;
this.keycodeSPACE = 32;
this.keycodeRIGHT = 39;
this.keycodeLEFT = 37;
this.keycodeUP = 38;
this.keycodeDOWN = 40;
this.keycodeW = 87;
this.keycodeA = 65;
this.keycodeS = 83;
this.keycodeD = 68;
this.keycodeENTER = 13;
this.allowEnter = false;
this.playing = false;
this.gameOver = false;
this.keyDownListener = this.handleKeyDown.bind(this);
this.keyUpListener = this.handleKeyUp.bind(this);
document.addEventListener('keydown', this.keyDownListener);
document.addEventListener('keyup', this.keyUpListener);
eventManager.subscribe(eventIDs.GAME_OVER, () => this.handleGameOver());
eventManager.subscribe(eventIDs.GET_READY, () => this.allowEnter = true);
eventManager.subscribe(eventIDs.LEVEL_COMPLETE, () => this.stopWatching());
eventManager.subscribe(eventIDs.START, () => this.startWatching());
}
startWatching() {
this.resetAllActions();
this.playing = true;
}
stopWatching() {
this.resetAllActions();
this.allowEnter = false;
this.playing = false;
}
resetAllActions() {
this.goRIGHT = false;
this.goLEFT = false;
this.goUP = false;
this.goDOWN = false;
this.SPACEBAR = false;
}
handleGameOver() {
this.stopWatching();
this.gameOver = true;
this.allowEnter = true;
}
handleKeyDown(e) {
if (!this.playing) return;
if (e.keyCode === this.keycodeRIGHT || e.keyCode === this.keycodeD) {
this.goRIGHT = true;
}
if (e.keyCode === this.keycodeLEFT || e.keyCode === this.keycodeA) {
this.goLEFT = true;
}
if (e.keyCode === this.keycodeUP || e.keyCode === this.keycodeW) {
this.goUP = true;
}
if (e.keyCode === this.keycodeDOWN || e.keyCode === this.keycodeS) {
this.goDOWN = true;
}
if (e.keyCode === this.keycodeSPACE) {
this.SPACEBAR = true;
}
}
handleKeyUp(e) {
if (this.gameOver) {
this.gameOver = false;
}
if (!this.playing && this.allowEnter) {
if (e.keyCode === this.keycodeENTER) {
eventManager.dispatch(eventIDs.ENTER_PRESSED);
}
} else
{
if (e.keyCode === this.keycodeRIGHT || e.keyCode === this.keycodeD) {
this.goRIGHT = false;
}
if (e.keyCode === this.keycodeLEFT || e.keyCode === this.keycodeA) {
this.goLEFT = false;
}
if (e.keyCode === this.keycodeUP || e.keyCode === this.keycodeW) {
this.goUP = false;
}
if (e.keyCode === this.keycodeDOWN || e.keyCode === this.keycodeS) {
this.goDOWN = false;
}
if (e.keyCode === this.keycodeSPACE) {
this.SPACEBAR = false;
}
}
}}
let keyWatcher = new KeyWatcher();
class CollisionManager {
constructor({ enemies, missile, ship }) {
this.ship = ship;
this.missile = missile;
this.enemies = enemies;
this.running = false;
eventManager.subscribe(eventIDs.LEVEL_COMPLETE, () => this.stopTesting());
eventManager.subscribe(eventIDs.START, () => this.startTesting());
}
startTesting() {this.running = true;}
stopTesting() {this.running = false;}
testCollision({ objA, objB, radius }) {
const dx = objA.x - objB.x;
const dy = objA.y - objB.y;
return math.mSqrt(dx * dx + dy * dy) < radius ? true : false;
}
update() {
if (!this.running) return;
const missilePt = { x: this.missile.sprite.x, y: this.missile.sprite.y };
const shipPt = { x: this.ship.sprite.x, y: this.ship.sprite.y };
let enemyPt;
let hit = false;
this.enemies.enemies.map((enemy, i) => {
if (!enemy.alive) return;
enemyPt = { x: enemy.sprite.x, y: enemy.sprite.y };
// Test against missile
if (this.missile.active && enemyPt.x < 700) {
hit = this.testCollision({ objA: missilePt, objB: enemyPt, radius: enemy.radius });
if (hit) {
this.missile.active = false;
this.enemies.killSprite(i);
eventManager.dispatch(eventIDs.EXPLODE, { x: enemyPt.x, y: enemyPt.y, type: explosions.types.missile, value: enemy.variant + 1 });
}
}
// Test against ship
hit = this.testCollision({ objA: shipPt, objB: enemyPt, radius: ship.radius });
if (hit) {
this.enemies.killSprite(i);
this.ship.takeDamage(1);
eventManager.dispatch(eventIDs.EXPLODE, { x: enemyPt.x, y: enemyPt.y, type: explosions.types.missile, value: (enemy.variant + 1) * 2 });
}
});
}}
/* MANAGERS & WATCHERS - END */
/* CONFIGS */
class EnemiesConfig {
constructor() {
this.height = 60;
this.radius = 34;
this.width = 68;
this.winLineX = 120;
}}
class ExplosionsConfig {
constructor() {
this.durations = {
missile: 15,
ship: 30 };
this.hsl = {
missile: '0,100%,100%',
ship: '10,70%,60%' };
this.types = {
missile: 'missile',
ship: 'ship' };
}}
class GlowsConfig {
constructor() {
this.colours = [
'silver', 'yellowgreen', 'darkorange', 'firebrick'];
this.groundBurn = '#521';
this.missile = '#fff';
this.glowSizes = {
ship: 20,
enemy: 7,
ground: 12,
missile: 3 };
}}
class MissileConfig {
constructor() {
this.height = 4;
this.radius = 6;
this.speed = 8;
this.variants = 4;
this.width = 20;
this.xAdjust = 46;
this.yAdjust = -2;
}}
class RocketFlamesConfig {
constructor() {
this.baseDepth = 14;
this.colours = [
'hsla(0,70%,60%,.2)',
'hsla(45,70%,60%,.2)',
'hsla(190,70%,60%,.2)',
'hsla(310,70%,60%,.2)'];
this.colourArrayLength = this.colours.length - 1;
this.flickerBase = 2;
this.flickerVariance = 10;
this.maxLengthVariance = 20;
this.minLength = 12;
this.layers = 6;
this.xAdjust = -42;
this.yAdjust = 6.5;
}}
class ShipConfig {
constructor() {
this.damageLevel = 0;
this.dead = false;
this.health = 0;
this.healthBase = 10;
this.height = 67;
this.maxX = 500;
this.maxY = 210;
this.minX = 85;
this.minY = 50;
this.radius = 40;
this.width = 102;
this.initialX = -200;
this.initialY = 150;
this.autoFly = {
status: true,
state: 0, // 0/1
steps: 30, // Equates to speed - bigger slower,
tolerance: 1, // How close is 'Arrived'
dest: [
{ x: 120, y: 120 }, // Flying in
{ x: 1000, y: 110 } // Flying off
] };
}}
let enemies = new EnemiesConfig();
let explosions = new ExplosionsConfig();
let glows = new GlowsConfig();
let missile = new MissileConfig();
let rocketFlames = new RocketFlamesConfig();
let ship = new ShipConfig();
/* CONFIGS - END */
class GameCanvas {
constructor() {
this.canvas = null;
this.ctx = null;
this.id = '';
this.height = 0;
this.width = 0;
}
createCanvas({ domElement, id, w, h }) {
this.canvas = document.createElement('canvas');
this.resize(w, h);
this.id = this.canvas.id = id;
domElement.appendChild(this.canvas);
this.ctx = this.canvas.getContext('2d');
}
resize(w, h) {
this.width = this.canvas.width = w;
this.height = this.canvas.height = h;
}}
class Backgrounds {
constructor({ speed, ctx, x = 0, y = 0, h, w, initialVariant = 0 }) {
this.bgSprites = [];
this.spriteData = new SpriteData();
this.ctx = ctx;
this.x = x;
this.y = y;
this.h = h;
this.w = w;
this.speed = speed;
this.previousBgId = initialVariant;
this.numBgVariants = 5;
this.lastBgX = 0;
this.minLastBgX = w;
this.init();
}
init() {
while (this.lastBgX < this.minLastBgX) {
this.addBg();
}
}
addBg() {
this.bgSprites.push(
new SpriteSheet(
{ spriteData: this.spriteData.scenes[this.previousBgId++],
w: this.w,
h: this.h,
ctx: this.ctx,
x: this.lastBgX,
y: this.y,
centerX: false }));
this.lastBgX += this.minLastBgX;
if (this.previousBgId >= this.numBgVariants) {this.previousBgId = 0;}
}
update() {
// Move bgs
this.bgSprites.map(bg => {
bg.x -= this.speed;
});
// Crop bgs outside view
this.bgSprites = this.bgSprites.filter(bg => bg.x > -this.w);
// Add new bg if last bg is in view
this.lastBgX -= this.speed;
if (this.lastBgX < this.minLastBgX) {
this.addBg();
}
}
draw() {
this.bgSprites.map(bg => {
bg.draw();
});
}}
class Ground {
constructor({ ctx, w, h, x, y }) {
this.ctx = ctx;
this.spriteData = new SpriteData();
this.sprite = new SpriteSimple({ spriteData: this.spriteData.ground, w: w, h: h, ctx: ctx, x: x, y: y });
}
update() {return;}
draw() {
this.ctx.shadowBlur = glows.glowSizes['ground'];
this.ctx.shadowColor = glows.groundBurn;
this.sprite.draw();
this.ctx.shadowBlur = 0;
}}
class Plants {
constructor({ speed, ctx, x = 0, y = 0, w, minY = 15, maxY = 40, minGap = 120, maxGap = 230, scalar = 1 }) {
this.plantSprites = [];
this.spriteData = new SpriteData();
this.ctx = ctx;
this.x = x;
this.y = y;
this.speed = speed;
this.minY = minY;
this.maxY = maxY - this.minY;
this.previousPlantId = 0;
this.numPlantVariants = 8;
this.lastPlantX = 55;
this.minLastPlantX = w + 50;
this.minGap = minGap;
this.maxGap = maxGap - this.minGap;
this.scalar = scalar;
this.init();
}
init() {
while (this.lastPlantX < this.minLastPlantX) {
this.addPlant();
}
}
addPlant() {
this.plantSprites.push(
new SpriteSheet(
{ spriteData: this.spriteData.plants,
w: 40,
h: 53,
ctx: this.ctx,
x: this.lastPlantX,
y: this.getY(),
variant: this.getVariant(),
scalar: this.scalar }));
this.lastPlantX += math.mRandom() * this.maxGap + this.minGap;
}
getVariant() {
const nextPlantId = math.mFloor(math.mRandom() * this.numPlantVariants);
if (nextPlantId !== this.previousPlantId) {
this.previousPlantId = nextPlantId;
return nextPlantId;
} else
{
this.getVariant();
}
}
getY() {
return this.y - math.mRandom() * this.maxY + this.minY;
}
update() {
// Move plants
this.plantSprites.map(plant => {
plant.x -= this.speed;
});
// Crop plants outside view
this.plantSprites = this.plantSprites.filter(plant => plant.x > -30);
// Add new plant if last plant is in view
this.lastPlantX -= this.speed;
if (this.lastPlantX < this.minLastPlantX) {
this.addPlant();
}
}
draw() {
this.plantSprites.map(plant => {
plant.draw();
});
}}
class WinLine {
constructor({ ctx, h }) {
this.ctx = ctx;
this.height = h;
}
update() {return;}
draw() {
this.ctx.setLineDash([5, 10]);
// Home base line
this.ctx.strokeStyle = 'hsla(0,60%,50%,.4)';
this.ctx.beginPath();
this.ctx.moveTo(enemies.winLineX, 0);
this.ctx.lineTo(enemies.winLineX, this.height);
this.ctx.stroke();
// Max ship range line
this.ctx.strokeStyle = 'hsla(0,100%,100%,.4)';
this.ctx.beginPath();
this.ctx.moveTo(ship.maxX, 0);
this.ctx.lineTo(ship.maxX, this.height);
this.ctx.stroke();
}}
class UI {
constructor() {
this.levelEl = document.querySelector('.level');
this.messageEl = document.querySelector('.messaging');
this.scoreEl = document.querySelector('.score');
this.gameSpace = document.querySelector('.game_space');
this.level = 0;
this.score = 0;
this.scoreMultiplier = 9;
this.gameRunning = false;
this.listening = false;
this.firstMessage = true;
this.startMessages = [
'Defender 404<br><span class="h2">Stop the invasion before<br>it crosses your home line</span><br><span class="h3"><span class="action">Start</span>: Click / ENTER<br><span class="action">Move</span>: Arrow Keys / WASD<br><span class="action">Fire</span>: SPACEBAR</span>',
'Beat the next wave'];
this.levelClear = 'Level cleared';
this.gameOver = 'GAME OVER<br>Play again?';
eventManager.subscribe(eventIDs.ENTER_PRESSED, () => this.handleStart());
eventManager.subscribe(eventIDs.EXPLODE, data => this.handleExplode(data));
eventManager.subscribe(eventIDs.GAME_OVER, () => this.handleGameOver());
eventManager.subscribe(eventIDs.GET_READY, () => this.handleReady());
eventManager.subscribe(eventIDs.LEVEL_COMPLETE, () => this.handleLevelOver());
this.startListener = this.handleStart.bind(this);
this.gameSpace.addEventListener('click', this.startListener);
}
handleReady() {
this.listening = true;
this.setMessage(this.firstMessage ? this.startMessages[0] : this.startMessages[1]);
this.levelEl.innerHTML = ++this.level;
this.firstMessage = false;
this.gameRunning = true;
}
handleStart() {
if (!this.gameRunning && !this.listening) {
this.reset();
return;
}
this.toggleCursor({ hide: true });
eventManager.dispatch(eventIDs.START);
this.listening = false;
this.setMessage('');
}
handleLevelOver() {
this.toggleCursor({ hide: false });
this.setMessage(this.levelClear);
}
handleExplode(data) {
if (!data.value) return;
this.score += data.value * this.scoreMultiplier;
this.scoreEl.innerHTML = this.score;
}
handleGameOver() {
this.toggleCursor({ hide: false });
this.setMessage(this.gameOver);
this.gameRunning = false;
}
setMessage(message) {
this.messageEl.innerHTML = message;
}
toggleCursor({ hide }) {
hide ? this.gameSpace.classList.add('playing') : this.gameSpace.classList.remove('playing');
}
reset() {
eventManager.dispatch(eventIDs.RESET_GAME);
this.level = 0;
this.score = 0;
this.levelEl.innerHTML = this.level;
this.scoreEl.innerHTML = this.score;
this.gameRunning = true;
this.firstMessage = true;
this.handleReady();
}}
class SpriteData {
constructor() {
this.ground = 'data:image/png;base64,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.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0