基于html+JavaScript+css的飞机射击小游戏网页设计与实现

news/2024/4/29 14:18:02/文章来源:https://blog.csdn.net/newlw/article/details/127085873

目录
一、概述 1
1.1项目内容 1
1.2项目开发 5
1.3项目组员 5
1.4组员分工 5
1.5验收标准 5
二、项目介绍 5
2.1 目标 5
2.2 用户的特点 6
2.3 假定和约束 6
2.3.1 开发期限: 6
2.3.2 技术约束: 6
2.4 确定系统运行的要求 6
2.5飞机大作战的整理思路 6
三、项目产品 6
3.1产品中的角色 6
3.2产品用户功能需求 7
四、总结 9

项目说明
概述:Canvas 射击小游戏要求玩家控制飞机发射子弹,消灭会移动的怪兽,如果全部消灭了则游戏成功,如果怪兽移动到底部则游戏失败。
目标:实现一个 Cavnas 射击小游戏
项目结构
index.html: 游戏页面
style.css: 页面样式
js: 页面涉及的所有 js 代码
app.js: 页面逻辑入口 js
img: 存放游戏的图片素材
视觉稿: 存放游戏的视觉稿
readme.md: 项目说明文档
具体要求
1、打通游戏整体流程 (开始->游戏进行中->成功或者失败)
游戏共分为四种状态:游戏准备->游戏进行->游戏成功或者游戏失败
1.1、游戏准备
首次打开页面,将会展现游戏准备界面,界面有游戏标题和和游戏描述以及开始游戏按钮。
游戏标题:设计游戏
游戏描述:这是一个令人欲罢不能的射击游戏,使用 ← 和 → 操作你的飞机,使用空格(space)进行射击。
1.2、游戏进行
1.画面出现顶部一行怪兽(7个),底部中间出现一个飞机
2.玩家可以通过键盘控制飞机左右移动并且发射子弹,子弹碰到怪兽则怪兽被消灭,消灭所有怪兽则显示游戏成功界面
3.怪兽初始统一往右移动。当怪兽移动到达边界时,则向下移动一格,并且往相反反向移动。以次类推,直到触碰到底部边界,则显示游戏失败界面。
1.3、游戏成功
在每一关卡中,成功消灭所有的怪兽,则显示游戏通过成功。可以点击“再玩一次” 回到游戏进行界面
1.4、游戏失败
在游戏中,当怪兽成功突破到飞机的竖直位置,则显示游戏通过失败。可以点击“重新开始” 回到游戏进行界面
2、使用Canvas 绘制游戏
设置游戏场景
游戏场地尺寸为 700 * 600,游戏场地分成三个部分:
场景边距区域 绿色的表示为边距区域,边距长度为30
怪兽移动区域: 蓝色区域,尺寸为 640 * 440
飞机移动区域: 黄色区域表示飞机移动区域,尺寸为 640 * 100
2.1、实现游戏元素 - 飞机(游戏主角)
游戏中飞机元素是我们需要操作的主人公,以下是飞机元素需要注意的内容:
飞机尺寸为 60 * 100
飞机需绘制为飞机图像 img/plane.png
可通过键盘左右方向键移动飞机元素,默认飞机移动的步伐长度为 5,飞机不可移动出前面所讲的 飞机移动区域
2.2、实现游戏元素 - 飞机子弹
通过点击空格键,飞机将射击出子弹元素,飞机可同时射出多个子弹。以下是子弹元素需要注意的内容:
子弹是一根颜色为白色竖直线条,长度为 10,线条宽度为 1
子弹初始横坐标为飞机的正中间即 plane.x + (plane.width / 2)
子弹初始纵坐标等于飞机的纵坐标 plane.y
子弹会不断往前方飞行,子弹每帧移动距离为 10
当子弹元素飞出画布时,需删除该子弹元素
当子弹元素和怪兽元素发生碰撞时,需删除该子弹元素
2.3、实现游戏元素 - 怪兽
游戏中怪兽元素共有两种状态(存活和死亡),存活时怪兽会移动,死亡时会绽放成烟花。以下是怪兽元素需要注意的内容:
怪兽尺寸为 50 * 50
一行怪兽元素共有7个,每个怪兽之间间隔为 10
怪兽元素处于存活状态时,需绘制为怪兽图像 img/enemy.png
怪兽元素处于存活状态时,每一帧移动距离为 2
当最右边的怪兽元素移动到 怪兽移动区域的左右边界时,下一帧则往下移动,移动的距离为 50
当怪兽移动超过到怪兽移动区域的底部边界时,则游戏结束:
当子弹元素和怪兽元素发生碰撞时,本文转载自http://www.biyezuopin.vip/onews.asp?id=14775怪兽元素处于死亡状态,且怪兽元素需绘制为爆炸图像 img/boom.png (爆炸过程建议绘制三帧,即怪兽死亡过程持续3帧)
怪兽死亡过程结束后,删除怪兽元素
当怪兽移动超过到怪兽移动区域的底部边界时,则游戏结束
2.4、实现游戏分数
在游戏场景左上角有一个分数元素,以下是分数元素需要注意的内容:
分数坐标为(20,20),分数的文字大小 18px
分数默认为0,当消灭一个怪兽,则分数加1
分数一直进行累加,直到游戏结束

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./style.css"><style></style><title>飞机大战</title>
</head>
<body><div id="game" data-status="start">  <div class="game-panel"><section class="game-intro game-ui"><h1 class="section-title">飞机大战</h1><p class="game-desc">这是一个令人欲罢不能的飞机大战,使用 ← 和 → 操作你的飞机,使用空格(space)进行射击。一起来消灭宇宙怪兽吧!</p><p class="game-level">当前Level: 1</p><button class="js-play button">开始游戏</button></section><section class="game-failed game-ui"><h1 class="section-title">游戏结束</h1><p class="game-info-text">最终得分: <span class="score"></span></p><button class="js-replay button">重新开始</button></section><section class="game-success game-ui"><h1 class="section-title">游戏成功</h1><p class="game-next-level game-info-text"></p><button class="js-next button">继续游戏</button></section><section class="game-all-success game-ui"><h1 class="section-title">通关成功</h1><p class="game-next-level game-info-text">你已经成功地防御了怪兽的所有攻击。</p><button class="js-replay button">再玩一次</button></div><div class="game-info game-ui"><span class="title">分数:</span><span class="score"></span></div>	<canvas id="canvas" width="700" height="600"><!-- 动画画板 --></canvas></div><audio id="myaudio" src="./sound/music.wav" controls="controls" loop="true" hidden="true" ></audio><script src="./js/lib/util.js" ></script><script src="./js/lib/element.js" ></script><script src="./js/config.js" ></script><script src="./js/enemy.js" ></script><script src="./js/bullet.js" ></script><script src="./js/plane.js" ></script><script src="./js/keyboard.js" ></script><!-- 主逻辑函数 --><script src="./js/app.js" ></script></body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_16014.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL三种存储引擎的区别

文章目录一、引言二、三个存储引擎的介绍1&#xff0c;InnoDB介绍特点&#xff08;1&#xff09;事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全&#xff08;2&#xff09;支持主键自增&#xff08;3&#xff09;支持外键&#xff08;4&#xff09;支持事务和事务相关…

jar包运行报错jar中没有主清单属性、springGateway访问接口报错302,跳转login接口

此处记录三个错误&#xff1a; 一、jar中没有主清单属性&#xff0c;打包以后运行报错&#xff1a; 这是一个gateway模块&#xff0c;包含了启动类&#xff0c;因为在pom文件中没有指定&#xff0c;所以报错&#xff1a;在该模块的pom文件中加入如下代码&#xff1a;com.xxxx…

Spring中IOC容器的基本配置使用

实例化bean对象 为外部定义的bean起别名 基于set方法的依赖注入 使用构造函数进行依赖注入 使用内部注入的方式注入bean对象 使用list集合依赖注入和使用map集合依赖注入 测试类 使用depends-on控制bean的加载顺序 使用懒加载lazy-init 默认为false 使用单例或者多例(原型)…

C#中对象与JSON字符串互相转换的三种方式

JSON(JavaScriptObject Notation, JS 对象标记) 是一种轻量级的数据交换格式。 关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下三种方法来解决此问题 分别是使用Newtonsoft.Json.dll、DataContractJsonSerializer、JavaScriptSerializer…

【老板要你啥都会系列】| 前端晋升全栈--项目日志

目录 1.开篇 2.nodejs文件操作 3.stream 4.stream演示 5.写日志 6.拆分日志 7.分析日志介绍 8.readline 1.开篇 日志包含什么访问人数啊、峰值啊、bug 啊什么的&#xff0c;如果没有日志那么很容易失控。 访问日志可以参考我们 http-server&#xff0c;每次访问都会有这…

谐振波导光栅的严格分析

摘要 谐振波导光栅(RWG)由于其在波长、相位和偏振等方面的可调谐性&#xff0c;在研究和工业中有着广泛的应用。RWG的结构包含一个薄的高折射率波导薄膜&#xff0c;该薄膜与光栅接触。波导支持多种导模&#xff0c;并且根据厚度的不同&#xff0c;模式的数量也不同。在这个…

javaFx打包exe程序

文章目录将代码打成jar包准备工作下载exe4j定制jre检测jar包用到jre的哪些jmods生成jre准备exe图标使用exe4j将jar转换成exe程序将代码打成jar包 打jar之前&#xff0c;把那些用不到的依赖统统删除&#xff0c;以免包含一些无用的内容&#xff0c;比如用不上的一些依赖jar&…

特征工程之特征降维-特征选择-PCA/LDA

特征降维之特征选择 特征选择是建模中常用的降维手段&#xff0c;比较暴力&#xff0c;直接将不重要特征删除。 缺点&#xff1a;造成信息丢失&#xff0c;不利于模型精度。【与之形成对比的是PCA、LDA等降维方式。】 主要标准有两个&#xff1a; 特征是否发散。特征与目标的…

简单组件讲解

在编程阶段,会遇到有些页面的某一区域的布局或数据显示类似;那么我们就可以复用这一段代码;在使用原生JS编程时,我们习惯是将代码抽出来自成一个文件,需要时引入即可。而在vue中也存在这样一个模块,可以简便的将可复用的代码抽成一个模块,这个就是组件。在很多人看来,组…

产品-如何让用户“更愿意“付费

学院课程 文章目录学院课程前言如何提高用户体验,吸引用户付费关于程序员等级的划分基础免费试看优质博客内容转化为视频用户关于短视频内容的生成关于利用用户的碎片化时间怎么差异化竞品&#xff1f;短视频赛道理解学院现状分析总结前言 学院地址 今天下午公司组织了一场需求…

线性回归

线性回归 导入库 import numpy as np import pandas as pd import matplotlib.pyplot as plt人工数据集n = 100 true_theta = np.array([[1], [1]]) X = np.insert(np.random.normal(5, 1, size=(n, 1)), 0, 1, 1) y = X @ true_theta + np.random.normal(0, 0.04, size=(n, …

Azure | AZ-204 认证之旅-应用服务(二)

theme: orange 我正在参加「掘金启航计划」 Web应用是构建在PaaS层的服务&#xff0c;它是支持托管的&#xff0c;并且是可缩放的&#xff0c;极大提高了工程效率&#xff0c;并且减少了在运营的层面的消耗&#xff0c;这篇文章介绍如何创建应用程序服务。 创建Web应用程序服务…

pytorch深度学习训练模板(分类、回归)

前言 LeNet-AlexNet-ZFNet: LeNet-AlexNet-ZFNet一维复现pytorch VGG: VGG一维复现pytorch GoogLeNet: GoogLeNet一维复现pytorch ResNet: ResNet残差网络一维复现pytorch-含残差块复现思路分析 DenseNet: DenseNet一维复现pytorch 包含所有一维经典模型的代码可随意切换训练 …

云原生技术 --- k8s节点组件之kube-proxy的学习与理解

k8s 网络代理(kube-proxy)在每个节点上运行。网络代理反映了每个节点上 Kubernetes API 中定义的服务&#xff0c;并且可以执行简单的 TCP、UDP 和 SCTP 流转发&#xff0c;或者在一组后端进行 循环 TCP、UDP 和 SCTP 转发。但是&#xff0c;必须要有一个插件&#xff0c;才可以…

毕业设计- 基于单片机与GPS+GSM的车辆定位跟踪系统

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计Maduino Zero A9G GPRS/GPSk开发板这款低功耗A9G使用SIM800/900和NEO-6M GPS模块的基于Arduino的GPS跟踪系统5 软件说明使用Arduino的基于GPSGSM的车辆跟踪系统GPSGSM的车辆跟踪系统的代码6 最后0 前言 &#x1f525; 这两…

IDEA中使用Git

目录 一、IDEA中使用Git 配置Git settings ——>Version Control——>Git 点击Test测试版本号 下载gitee插件 配置账户 第一种方式&#xff1a;账号密码 第二种方式&#xff1a;通过Token令牌 分享单个项目 组员需要拿到项目的SSH地址 二、总结 一、IDEA中使用G…

万物互联时代到来,猿代码领衔先计算机赋数据化转型

社会经济的高速发展推动着各行各业进行转型升级&#xff0c;而数字经济则是当前社会经济发展的强大驱动。根据相关报道显示&#xff0c;早在多年前我国数字经济规模总量便达到万亿元规模&#xff0c;占2016年全年GDP比重的30&#xff05;。数字经济的飞速发张需要强劲算力的支撑…

wxpython设计GUI:grid控件实现显示表单数据功能,同时实现界面的上下翻页以及跳转功能

grid控件实现显示表单数据功能&#xff0c;同时实现界面的上下翻页以及跳转功能。 1. 效果展示 2. 代码实现 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: Logintern09########################################################################### ## Python …

【图像分割】基于matlab直方图的自适应阈值方法分割前景与背景【含Matlab源码 2144期】

一、一种基于直方图的实时自适应阈值分割方法简介 1 引言 在交通管理中&#xff0c;为了获得车辆的运动数据&#xff0c;需要对交通视频进行实时监测&#xff0c;从监测图像序列中检测出运动对象&#xff0c;并对运动对象进行分析处理&#xff0c;从而获得车辆和行人的运动数据…

EMQX Cloud 影子服务:便捷数据缓存服务,加速 IoT 应用开发

全托管 MQTT 消息云服务 EMQX Cloud 可以帮助用户轻松将各类物联网设备连接上云&#xff0c;提供与各类第三方服务的数据集成&#xff0c;助力用户进行高效的数据处理、存储与分析。 为了实现更加便捷的物联网数据处理&#xff0c;进一步简化用户构建物联网应用的开发流程&…