Web开发基础:JavaScript飞机大战

2024-09-04 20:32

本文主要是介绍Web开发基础:JavaScript飞机大战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

超详细的Java知识点路线图


飞机大战

图片链接:https://pan.baidu.com/s/1elfvlHClwwDnc8buUnySPw
提取码:mi5y
在这里插入图片描述

功能点:

1、飞机跟着鼠标移动
在onmousemove事件中获得鼠标的坐标,设置给飞机图片
2、发射子弹
子弹需要动态添加到网页中
动态创建标签对象
document.createElement(“标签名”);
动态添加到层中
层对象.appendChild(标签对象);
设置样式
3、敌机移动
4、击中敌机

代码

<!DOCTYPE html>
<html>
<head><title>飞机大战</title><style type="text/css">#bg{width: 300px;height: 500px;background: url(images/background_1.png);/*margin: 0px auto;*/}#plane{width: 40px;height: 50px;position: absolute;}</style>
</head>
<body><div id="bg" onmousemove="movePlane()"><img id="plane" src="images/plane.gif"></div><script type="text/javascript">//获得背景对象var bg = document.getElementById("bg");//获得飞机对象var plane = document.getElementById("plane");//鼠标的位置var x,y;//移动飞机function movePlane(){//获得鼠标的x和y坐标x = window.event.clientX;y = window.event.clientY;if(x >=0 && x <= bg.offsetWidth && y >= 0 && y <= bg.offsetHeight){//修改飞机图片的位置plane.style.left = (x - plane.offsetWidth / 2) + "px";plane.style.top = (y - plane.offsetHeight / 2) + "px";}}//子弹的数组var bullets = new Array();//敌人的数组var enemys = new Array();//子弹类,x,y代表子弹出现的初始位置function Bullet(x,y){var img = document.createElement("img");//创建img标签对象bg.appendChild(img);					//添加图片对象到游戏背景上img.src = "images/bullet1.png";			//设置子弹图片img.style.position = "absolute";		//绝对定位img.style.width = "6px";img.style.height = "14px";img.style.left = x + "px";				//设置子弹图片初始坐标img.style.top = y + "px";this.width = 6;							//子弹的尺寸this.height = 14;this.x = x;								//子弹的坐标this.y = y;this.move = function(){					//子弹的移动this.y -= 10;						//向上移动img.style.top = this.y + "px";		//修改子弹图片的位置}this.remove = function(){				//删除子弹bg.removeChild(img);				//从背景中删除图片}}//敌人类,x,y代表子弹出现的初始位置function Enemy(x,y){var img = document.createElement("img");//创建img标签对象bg.appendChild(img);					//添加图片对象到游戏背景上img.src = "images/enemy1_fly_1.png";	//设置子弹图片img.style.position = "absolute";		//绝对定位img.style.width = "34px";img.style.height = "24px";img.style.left = x + "px";				//设置子弹图片初始坐标img.style.top = y + "px";this.width = 34;							//子弹的尺寸this.height = 24;this.x = x;								//子弹的坐标this.y = y;this.isDead = false;this.move = function(){					//子弹的移动this.y += 10;						//向上移动img.style.top = this.y + "px";		//修改子弹图片的位置}this.remove = function(){				//删除子弹bg.removeChild(img);				//从背景中删除图片}this.dead = function(){					//显示爆炸图片img.src = "images/boom.png";this.isDead = true;}}//创建子弹对象function createBullet(){bullets.push(new Bullet(x,y - plane.offsetHeight / 2));}//创建敌人对象function createEnemy(){enemys.push(new Enemy(bg.offsetWidth * Math.random(),0));}//移动所有的子弹function moveBullets(){for(var i = 0;i < bullets.length;i++){bullets[i].move(); 			//移动子弹checkHit(bullets[i]); 		//判断子弹是否打中敌人if(bullets[i].y <= 0){		//子弹到顶部后,删除子弹bullets[i].remove();bullets.splice(i,1);}}}//移动所有的敌人function moveEnemys(){for(var i = 0;i < enemys.length;i++){enemys[i].move(); //移动子弹if(enemys[i].y >= bg.offsetHeight || enemys[i].isDead){		//敌人到底部或被子弹打中,就删除敌人enemys[i].remove();enemys.splice(i,1);}}}//判断子弹是否打中敌人function checkHit(bullet){//遍历所有敌人for(var i = 0;i < enemys.length;i++){//碰撞检查if(bullet.x > enemys[i].x && bullet.x + bullet.width < enemys[i].x + enemys[i].width &&bullet.y > enemys[i].y && bullet.y + bullet.height < enemys[i].y + enemys[i].height){enemys[i].dead();}}}//启动周期任务执行创建子弹setInterval("createBullet()",200);//移动子弹setInterval("moveBullets()",50);//创建敌人setInterval("createEnemy()",2000);//移动敌人setInterval("moveEnemys()",100);</script>
</body>
</html>

这篇关于Web开发基础:JavaScript飞机大战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136952

相关文章

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys