欢迎访问楠楠博客,专注于网络营销类百科知识解答!
当前位置:楠楠博客 >> 软件编程 >> 编程 >> 详情

编程猫编程射击小游戏

2024-02-03 编程 责编:楠楠博客 4865浏览

// 首先,我们来定义一些常量,方便后续使用

编程猫编程射击小游戏

var canvasWidth = 800;

var canvasHeight = 400;

var playerWidth = 50;

var playerHeight = 50;

var bulletWidth = 10;

var bulletHeight = 10;

var enemyWidth = 30;

var enemyHeight = 30;

// 创建玩家对象

var player = {

x: canvasWidth / 2 - playerWidth / 2,

y: canvasHeight - playerHeight - 10,

width: playerWidth,

height: playerHeight,

color: 'blue',

speed: 10,

bullets: [],

draw: function(context) {

context.fillStyle = this.color;

context.fillRect(this.x, this.y, this.width, this.height);

},

moveLeft: function() {

if (this.x > 0) {

this.x -= this.speed;

}

},

moveRight: function() {

if (this.x + this.width < canvasWidth) {

this.x += this.speed;

}

},

shoot: function() {

var bullet = {

x: this.x + this.width / 2 - bulletWidth / 2,

y: this.y,

width: bulletWidth,

height: bulletHeight,

color: 'red',

speed: 5,

update: function() {

this.y -= this.speed;

},

draw: function(context) {

context.fillStyle = this.color;

context.fillRect(this.x, this.y, this.width, this.height);

}

};

this.bullets.push(bullet);

}

};

// 创建敌人对象

function Enemy(x, y) {

this.x = x;

this.y = y;

this.width = enemyWidth;

this.height = enemyHeight;

this.color = 'green';

this.speed = 2;

this.update = function() {

this.y += this.speed;

};

this.draw = function(context) {

context.fillStyle = this.color;

context.fillRect(this.x, this.y, this.width, this.height);

};

}

// 创建敌人数组

var enemies = [];

// 创建画布对象

var canvas = document.createElement('canvas');

canvas.width = canvasWidth;

canvas.height = canvasHeight;

var context = canvas.getContext('2d');

document.body.appendChild(canvas);

// 监听键盘事件

window.addEventListener('keydown', function(event) {

switch (event.keyCode) {

case 37: // 左箭头键

player.moveLeft();

break;

case 39: // 右箭头键

player.moveRight();

break;

case 32: // 空格键

player.shoot();

break;

}

});

// 游戏主循环

function gameLoop() {

// 更新玩家子弹

for (var i = 0; i < player.bullets.length; i++) {

var bullet = player.bullets[i];

bullet.update();

// 检查子弹是否击中敌人

for (var j = 0; j < enemies.length; j++) {

var enemy = enemies[j];

if (checkCollision(bullet, enemy)) {

player.bullets.splice(i, 1);

enemies.splice(j, 1);

i--;

break;

}

}

// 检查子弹是否超出画布

if (bullet.y + bullet.height < 0) {

player.bullets.splice(i, 1);

i--;

}

}

// 更新敌人

for (var i = 0; i < enemies.length; i++) {

var enemy = enemies[i];

enemy.update();

// 检查敌人是否与玩家发生碰撞

if (checkCollision(enemy, player)) {

alert('游戏结束!');

location.reload();

}

// 检查敌人是否超出画布

if (enemy.y + enemy.height > canvasHeight) {

enemies.splice(i, 1);

i--;

}

}

// 清空画布

context.clearRect(0, 0, canvasWidth, canvasHeight);

// 绘制玩家

player.draw(context);

// 绘制玩家子弹

for (var i = 0; i < player.bullets.length; i++) {

var bullet = player.bullets[i];

bullet.draw(context);

}

// 绘制敌人

for (var i = 0; i < enemies.length; i++) {

var enemy = enemies[i];

enemy.draw(context);

}

// 随机生成敌人

if (Math.random() < 0.01) {

var x = Math.random() * (canvasWidth - enemyWidth);

var y = -enemyHeight;

var enemy = new Enemy(x, y);

enemies.push(enemy);

}

// 递归调用游戏主循环

requestAnimationFrame(gameLoop);

}

// 检测碰撞

function checkCollision(obj1, obj2) {

return obj1.x < obj2.x + obj2.width

&& obj1.x + obj1.width > obj2.x

&& obj1.y < obj2.y + obj2.height

&& obj1.y + obj1.height > obj2.y;

}

// 启动游戏

gameLoop();

本站申明:楠楠博客为网络营销类百科展示网站,网站所有信息均来源于网络,若有误或侵权请联系本站!
为您推荐
  • 针对“机器人编程招聘学徒工作”这一职业发展路径,以下将从行业背景、学徒要求、核心技能、招聘数据以及发展建议等方面,提供专业、准确的信息。机器人编程是智能制造、工业自动化及服务机器人领域的核心技术岗位。
    2026-04-17 编程 289浏览
  • 关于石家庄初中编程特长生的培养,目前中国义务教育阶段(小学和初中)的招生政策以“免试就近入学”为主导,因此,与高中阶段明确设有“科技特长生”或“信息学特长生”招生渠道不同,初中阶段通常没有官方统一招考
    2026-04-16 编程 5606浏览
栏目推荐
  • 在规划创新实践项目时,选择合适的编程语言是决定项目技术栈、开发效率和最终成功的关键因素。选择应基于项目目标(如Web应用、数据分析、嵌入式系统)、团队技术背景、生态社区支持及语言特性(性能、可维护性、学习
    2026-03-14 编程 5147浏览
  • 根据您的需求,我为您搜索并整理了关于天津市河西区编程语言培训机构的相关专业信息。这些机构主要面向成人职业提升、青少年编程启蒙以及国际竞赛等不同方向,其专业性和侧重点各有不同。在天津河西区,编程语言培训
    2026-03-14 编程 7748浏览
  • 数控车床编程是连接零件图纸与实体加工的关键环节,其核心是将加工工艺过程、工艺参数、刀具路径等指令,按照特定数控系统规定的代码和格式编制成加工程序单。其主要内容包括以下几个专业层面:一、 程序结构与格式这
    2026-03-13 编程 1177浏览
栏目热点
全站推荐
  • 针对您寻找可以离线做题的软件的需求,经过对全网专业信息和用户反馈的梳理,以下为您分类推荐几款专业、可靠的软件。这些应用的核心价值在于其离线功能,允许用户在没有网络连接的环境下进行练习、复习和自测。一、
    2026-04-25 软件 9108浏览
  • 根据您的需求,和通百艺(通常指一个提供多元化技能或知识学习的平台)在当前的互联网环境中,并没有一个在定位、规模和内容上完全一致的直接对标网站。然而,从“提供广泛专业技能与知识学习”这一核心属性出发,我
    2026-04-25 网站 7828浏览
  • 清除网页篡改是一项涉及技术操作与安全加固的系统性工作,旨在恢复网站的完整性并防止未来攻击。以下为专业且标准的处理流程与核心要点。第一步:立即隔离与评估发现篡改后,首要行动是隔离受影响的系统,例如将网站
    2026-04-25 网页 2343浏览
友情链接
底部分割线