九游娱乐(China)官方网站 enemyWidth-九游娱乐(China)官方网站
游戏步调:
玩家遗弃飞船在屏幕底部把握出动并射击。
敌东谈主从屏幕顶部赶紧位置出现,并垂直下落。
玩家需要射击敌东谈主以赢得分数,要是敌东谈主到达屏幕底部,则游戏竣事。
HTML 代码(index.html):
html
<!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, html {
height: 100%;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: #000;
color: #fff;
font-family: Arial, sans-serif;
}
#gameCanvas {
border: 2px solid #fff;
seainsea.com/7k7k7k/
sdyxbl.com/7k7k7k/
sdxindian.com/7k7k7k/
sdt360.com/7k7k7k/
sdfutong.com/7k7k7k/
sanyetea.com/7k7k7k/
saincom.com/7k7k7k/
rrbjgs.com/7k7k7k/
rqjlwg.com/7k7k7k/
rogerchina.com/7k7k7k/
}
#scoreBoard {
position: absolute;
top: 10px;
left: 50%;
transform: translateX(-50%);
font-size: 20px;
}
</style>
</head>
<body>
<canvas id="gameCanvas" width="480" height="320"></canvas>
<div id="scoreBoard">得分: 0</div>
<script src="https://m.sohu.com/a/game.js"></script>
</body>
</html>
JavaScript 代码(game.js):
javascript
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
const scoreBoard = document.getElementById('scoreBoard');
const playerWidth = 50;
const playerHeight = 30;
const enemyWidth = 30;
const enemyHeight = 20;
qypjc.com/7k7k7k/
qingz.com.cn/7k7k7k/
qididq.com/7k7k7k/
qdlpvc.cn/7k7k7k/
peixun99.com/7k7k7k/
paper4.com/7k7k7k/
okest.com.cn/7k7k7k/
ocench.com/7k7k7k/
nyliyuan.cn/7k7k7k/
nnjswzhs.com/7k7k7k/
const enemySpeed = 2;
const enemySpawnInterval = 1000; // 敌东谈主生成阻隔(毫秒)
const bulletSpeed = 5;
let playerX = canvas.width / 2 - playerWidth / 2;
let bullets = [];
let enemies = [];
let score = 0;
let lastEnemySpawnTime = 0;
function drawPlayer() {
ctx.beginPath();
ctx.rect(playerX, canvas.height - playerHeight, playerWidth, playerHeight);
ctx.fillStyle = 'green';
ctx.fill();
ctx.closePath();
}
function drawBullets() {
bullets.forEach((bullet, index) => {
ctx.beginPath();
ctx.rect(bullet.x, bullet.y, 5, 10);
ctx.fillStyle = 'yellow';
ctx.fill();
ctx.closePath();
bullet.y -= bulletSpeed;
if (bullet.y < 0) {
bullets.splice(index, 1);
}
});
}
function drawEnemies() {
enemies.forEach((enemy, index) => {
ctx.beginPath();
ctx.rect(enemy.x, enemy.y, enemyWidth, enemyHeight);
ctx.fillStyle = 'red';
ctx.fill();
ctx.closePath();
enemy.y += enemySpeed;
if (enemy.y > canvas.height) {
enemies.splice(index, 1);
alert('游戏竣事!');
location.reload();
}
bullets.forEach((bullet, bulletIndex) => {
if (bullet.x < enemy.x + enemyWidth && bullet.x + 5 > enemy.x &&
bullet.y < enemy.y + enemyHeight && bullet.y + 10 > enemy.y) {
score += 10;
scoreBoard.textContent = `得分: ${score}`;
enemies.splice(index, 1);
net400.com.cn/7k7k7k/
nchmw.com/7k7k7k/
nbf365.cn/7k7k7k/
myhealthgene.com/7k7k7k/
muye148.com.cn/7k7k7k/
mondtek.com/7k7k7k/
miguli.com/7k7k7k/
micooljeans.com/7k7k7k/
merrillcapital.cn/7k7k7k/
mengdingshantea.com/7k7k7k/
bullets.splice(bulletIndex, 1);
}
});
});
}
function updateGame() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
drawPlayer();
drawBullets();
drawEnemies();
if (Date.now() - lastEnemySpawnTime > enemySpawnInterval) {
enemies.push({
x: Math.random() * (canvas.width - enemyWidth),
y: 0
});
lastEnemySpawnTime = Date.now();
}
requestAnimationFrame(updateGame);
}
document.addEventListener('keydown', (event) => {
if (event.key === 'ArrowLeft' && playerX > 0) {
playerX -= 5;
} else if (event.key === 'ArrowRight' && playerX < canvas.width - playerWidth) {
playerX += 5;
} else if (event.key === ' ') {
bullets.push({
x: playerX + playerWidth / 2 - 2.5,
y: canvas.height - playerHeight
});
}
});
updateGame();
如何玩这个游戏:
将上述HTML和JavaScript代码划分保存为index.html和game.js文献。
确保这两个文献位于合并目次下。
使用浏览器怒放index.html文献,游戏将会自动启动。
使用把握箭头键遗弃飞船出动,使用空格键辐射枪弹。
射击下落的红色敌东谈主以赢得分数,防御敌东谈主到达屏幕底部。
canvasconstindexhtmlif发布于:中国香港声明:该文不雅点仅代表作家本东谈主,搜狐号系信息发布平台,搜狐仅提供信息存储空间处事。