使用HTML制作一个赛龙舟小游戏

news2024/12/25 11:00:54

在这个信息爆炸的时代,开发者们肩负着前所未有的责任与挑战,以屈原名言 路漫漫其修远兮,吾将上下而求索 为指引,使用HTML制作一个赛龙舟小游戏,以此激励广大开发者在技术征途上不断求索,追求极致。

  • 一、前期准备
    • 1.1、项目创建
      • HBuilderX
    • 1.2、素材收集
    • 1.3、外部插件
  • 二、开发步骤
    • 2.1、HTML
    • 2.2、游戏加载
      • 界面设置
      • 进度条动画
    • 2.3、障碍移动
    • 2.4、龙舟移动键盘事件
  • 三、结语

一、前期准备

1.1、项目创建

该游戏所涉及到的技术只有HTML、CSS、JS,所以这里只需要用到一些前端开发idea,后端以及数据库都没有用到,使用HBuilderX或者WebStorm都可以,这一小节主要介绍在HBuilderX中创建项目以及开发的过程。

HBuilderX

打开开发工具,在左上角点击下图所选择的图标,选择项目

在这里插入图片描述

左侧tab选择普通项目,右侧选择空项目或者基本HTML项目均可,输入项目名称以及位置后在右下角点击保存即可创建一个项目。

在这里插入图片描述

1.2、素材收集

准备一些带有端午元素的素材图片,粽子,龙舟等,将素材存放至上述步骤所创建的images文件夹中。

1.3、外部插件

分别引入layui以及jqmeter.min.js,前者用于快速构建网页界面的同时将JS动态化渲染;后者则是用于实现进度条加载动画。

在这里插入图片描述

二、开发步骤

2.1、HTML

选中项目,选择新建HTML文件,它会在创建该页面的同时自动默认创建结构标签,只需要在body标签中进行开发即可。

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
</html>

2.2、游戏加载

界面设置

在body中新建一个div,设置唯一ID,同时通过css设置其背景图

<style>
	#backShadow{
	    position: absolute;
	    width: 100%;
	    height: 100%;
	    background: url("images/back.jpg") no-repeat top;
	    background-size: cover;
	    z-index: 222;
	}
</style>
<div id="backShadow"></div>

增加一个开始游戏的按钮,通过设置定位的方式将其固定在界面上实现效果如下。

在这里插入图片描述

 .start{
            width: 310px;
            height: 120px;
            position: absolute;
            left: 50%;
            top: 200px;
            margin-left: -155px;
            padding: .3em .8em;
            border: 1px solid rgba(0,0,0,.1);
            background: #58a linear-gradient(hsla(0,0%,100%,.2),transparent);
            border-radius: .2em;
            box-shadow: 0 .05em .25em rgba(0,0,0,.5);
            outline: none;
            color: white;
            text-shadow: 0 -.05em .05em rgba(0,0,0,.5);
            font-size: 60px;
            line-height: 1.5;
            cursor: pointer;
            z-index: 999;
            background-color: #6b0;
        }

进度条动画

使用script标签引入外部插件,同时在js中给开始按钮增加对应的点击事件

<script src="js/jquery-3.4.1.min.js"></script>
<script src="lib/layer/layer.js"></script>
<script src="scrollBar/jqmeter.min.js"></script>
/*******************点击开始按钮*****************************/
$(".start").on("click",function () {

});

jqmeter使用起来非常简单,在HTML结构中增加一个div标签,同时在点击按钮后调用该进度条插件。注意:该进度条插件有两个必填的参数:goal和raised。此外还有一些可用的参数,其中一些参数也可以使用css来实现,如颜色参数;

在这里插入图片描述

$('#jqmeter-container').jQMeter({
           goal:'$100',
           raised:'$100',
           animationSpeed :5000,
           counterSpeed: 5000
       });

2.3、障碍移动

设置定时函数随机生成障碍物,通过变量控制所生成的坐标。

在这里插入图片描述

var leftSkip=0,speed=2000;
var target=$(window).height(),skip=0,score=0;
 var blockInter= setInterval(blockFn,speed);
 function blockFn() {
     $(".block").animate({
         top:target
     },speed,"linear",function () {
         leftSkip=Math.random()*250;
         $(".block").css({"top":-70, "left":leftSkip});
     });
 };

2.4、龙舟移动键盘事件

通过操作dom元素的方式获取keydown键盘事件,这里有针对性的写一些常用的按键即可,如A、D、方向键等。KeyDown()功能:检查用户是否按了键盘上指定的键。语法:KeyDown ( keycode )参数 keycode:KeyCode枚举类型或integer类型,指明要检测的按键或某个键的ASCII值返回值Boolean。如果用户按了keycode参数指定的按键,函数返回TRUE,否则返回FALSE。

在这里插入图片描述

$(document).keydown(function (ev) {
		var left=$(".car").offset().left;
		var top=$(".car").offset().top;
		//龙舟移动
		switch (ev.which) {
		case 65://a
		$(".car").offset({left:Math.max(left-10,$(".box").offset().left)});
		break;
		case 68://d
		$(".car").offset({left:Math.min(left+10,
		$(".box").offset().left+$(".box").width()-$(".car").width())});
		break;
		case 37:
		$(".car").offset({left:Math.max(left-10,$(".box").offset().left)});
		break;
		case 39:
		$(".car").offset({left:Math.min(left+10,
		$(".box").offset().left+$(".box").width()-$(".car").width())});
		break;
});

三、结语

因外部JS较大,就没有全部通过代码块的方式放在文章中,这里主要讲解了一下实现思路跟部分关键代码,对游戏感兴趣的可以直接在文章里下载代码包。
最后祝大家端午安康,记得吃粽子,无论咸甜,都是粽情粽义。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

忘记了谷歌Gmail账号名怎么办?用这种方法轻松找回谷歌邮箱地址

有些朋友以前注册过谷歌邮箱&#xff0c;但很久很久没有再去使用。 现在注册ChatGPT需要谷歌邮箱&#xff0c;于是打算把尘封已久的谷歌邮箱找出来&#xff0c;可是这时候你才发现&#xff0c;谷歌邮箱的账号名早已忘掉了。 今天重点来说说如何找回谷歌账号&#xff0c;希望能够…

ANTLR实战

ANTLR&#xff08;Another Tool for Language Recognition&#xff09;是目前非常活跃的语法生成工具&#xff0c;用Java语言编写&#xff0c;基于LL&#xff08;∗&#xff09;解析方式&#xff0c;使用自上而下的递归下降分析方法。ANTLR可以用来产生词法分析器、语法分析器和…

【运维知识进阶篇】zabbix5.0稳定版详解5(SNMP网络管理协议监控)

简单网络管理协议&#xff08;SNMP&#xff09;是专门设计用于在IP网络管理网络节点&#xff08;服务器、工作站、路由器、交换机及HUBS网络枢纽等&#xff09;的一种标准协议&#xff0c;它是一种应用层协议。 目录 SNMP三种版本 监控SNMP SNMP&#xff1a;OID和MIB介绍可以…

深度学习基于Resnet18的图像多分类--训练自己的数据集(超详细 含源码)

1.ResNet18原理 2.文件存储 一个样本存放的文件夹为dataset 下两个文件夹 train和test文件(训练和预测) 3.训练和测试的文件要相同。下面都分别放了 crane (鹤)、elephant(大象)、leopard(豹子) 4.编写预测的Python文件&#xff1a;code.py 跟dataset是同级路径。 5.code.p…

ROS从入门到精通2-7:Gazebo仿真之动态生成障碍物

目录 0 专栏介绍1 动态生成障碍应用场景2 基于Gazebo动态生成障碍2.1 spawn_model服务2.2 动态构造障碍物URDF2.3 请求服务与动态生成 3 实测演示 0 专栏介绍 本专栏旨在通过对ROS的系统学习&#xff0c;掌握ROS底层基本分布式原理&#xff0c;并具有机器人建模和应用ROS进行实…

CSS | 解决html中img标签图片底部存在空白缝隙的问题

目录 问题描述 原因分析 解决方案 写在最后 问题描述 在学习CSS的过程中&#xff0c;我们经常会遇到图片底侧存在空白缝隙的问题。 代码示例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" />&l…

SpringCloudAlibaba之Sentinel源码分析--protoc-3.17.3-win64

Sentinel源码分析 文章目录 Sentinel源码分析1.Sentinel的基本概念1.1.ProcessorSlotChain1.2.Node1.3.Entry1.3.1.自定义资源1.3.2.基于注解标记资源 1.4.Context1.4.1.什么是Context1.4.2.Context的初始化1.4.2.1.自动装配1.4.2.2.AbstractSentinelInterceptor1.4.2.3.Contex…

【C++初阶】string类常见题目详解(一)—— 仅仅反转字母、字符串中的第一个唯一字母、字符串最后一个单词的长度、验证回文串、字符串相加

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C初阶 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C初阶】…

【Python 基础篇】Python 集合及集合常用函数

文章目录 导言一、集合的创建和访问二、集合的常用函数len()add()remove()union()intersection()difference()issubset()issuperset()clear() 总结 导言 在Python中&#xff0c;集合&#xff08;Set&#xff09;是一种无序、不重复的数据类型&#xff0c;用于存储多个唯一的元…

HCIP网络笔记分享——广域网协议及BGP协议

第二部分 HCIA回顾一、广域网技术1、HDLC2、PPP3、PAP4、CHAP5、GRE6、运行路由协议 二、动态路由协议1、OSPF2、重发布3、路由策略3.1 抓流量3.2 具体过程 4、BGP 三、BGP边界网关协议1、BGP的数据包2、BGP的状态机3、BGP的工作过程4、BGP的路由黑洞问题5、BGP的防环问题6、BG…

Studio One6.1.1免费中文版电子音乐、摇滚乐制作软件

Studio One6是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One6.1的主要特点包括&#xff1a; 1. …

深入理解什么是端口(port)

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…

JavaEE的学习(Spring +Spring MVC + MyBatis)

一、Spring入门 Spring是一个轻量级的控制反转 (IoC-Inversion of Control)和面向切面 (AOP-Aspect Oriented Programming)的容器&#xff08;框架&#xff09;。它采用分层架构&#xff0c;由大约20个模块组成&#xff0c;这些模块分为Core Container、Data Access/Integrati…

什么是计算机蠕虫?

计算机蠕虫诞生的背景 计算机蠕虫的诞生与计算机网络的发展密切相关。20世纪60年代末和70年代初&#xff0c;互联网还处于早期阶段&#xff0c;存在着相对较少的计算机和网络连接。然而&#xff0c;随着计算机技术的进步和互联网的普及&#xff0c;计算机网络得以迅速扩张&…

TC8:SOMEIPSRV_FORMAT_09-10

SOMEIPSRV_FORMAT_09: Undefined bits in the Flag field 目的 Flag字段中的未定义位应静态设置为0 测试步骤 DUT CONFIGURE:启动具有下列信息的服务Service ID:SERVICE-ID-1Instance数量:1Tester:客户端-1监听在网卡上DUT:发送SOME/IP Notification消息Tester:验证接收…

Flutter应用开发,系统样式改不了?SystemChrome 状态栏、导航栏、屏幕方向……想改就改

文章目录 开发场景SystemChrome 介绍SystemChrome的使用导入 SystemChrome 包隐藏状态栏说明 改变状态栏的样式注意事项其他样式说明 锁定屏幕方向锁定屏幕方向实例注意事项 开发场景 开发APP时&#xff0c;我们经常要客制化状态栏、导航栏栏等的样式和风格&#xff0c;Flutte…

网络之网络基础入门

文章目录 前言一、局域网和广域网1.局域网LAN2.广域网WAN3.城域网和校园网4.如何区分广域网和局域网 二、协议1.概念2.理解3.协议分层4.数据传输的条件 三、OSI七层模型&#xff08;了解即可&#xff09;1.概念2.OSI七层模型 四、TCP/IP五层&#xff08;四层&#xff09;模型1.…

TC8:TCP_BASICS_11-17

TCP_BASICS_11: [finwait-2 -> time_wait] delay(2*MSL) -> [closed] 目的 TCP从FINWAIT-2状态到TIME-WAIT状态后,等待2MSL时间后,移动到CLOSED状态 关于为什么要等待2MSL时间,我的文章中讲过太多次了,这里就不提了 测试步骤 Tester:让DUT移动到FINWAIT-2状态Test…

使用Python批量进行数据分析

案例01 批量升序排序一个工作簿中的所有工作表——产品销售统计表.xlsx import xlwings as xw import pandas as pd app xw.App(visible False, add_book False) workbook app.books.open(产品销售统计表.xlsx) worksheet workbook.sheets # 列出工作簿中的所有工作表 fo…

SpringBoot 如何使用 ApplicationEventPublisher 发布事件

SpringBoot 如何使用 ApplicationEventPublisher 发布事件 在 SpringBoot 应用程序中&#xff0c;我们可以使用 ApplicationEventPublisher 接口来发布事件。事件可以是任何对象&#xff0c;当该对象被发布时&#xff0c;所有监听该事件的监听器都会收到通知。 下面是一个简单…