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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory