开发html5 2d 赛车游戏以及打包发布为手机APP 第一话 工欲善其事
按照昔日做给上头拿去找汽车商卖钱的一个赛车游戏APP的经验来说明这个例子(不过当然只说有关游戏的部分)
思路:一幅赛道画面,赛道上面有一辆主角车,可以由玩家用手指拖拽去控制赛车的移动
设置计时器,画面上方会不断刷新出不属于主角控制的NPC车辆,这些车辆不断向下移动,直到离开屏幕下方
设置计时器,如果主角车辆没被NPC车辆撞击,每生存一秒增加100分(实际就是一个生存型游戏)
直到主角车辆被NPC车辆撞击中,游戏结束,这时得到的分数为一盘游戏最终分数,关闭所有计时器
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
准备:赛车图片 (注:所有图片均来自网络,仅用于学习,不用于商业用途,如需将程序用于商业用途,请自行置换为原创图片,同时感谢以下图片的作者,大功大德)
公路赛道图片
道路分界线图片:
(一白色的竖线图片,x=5像素,y=15像素,可以自行用画图工具画,就在在上面,由于背景色也是白色,隐身了)
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
代码准备:(废话)
最基本的html5实现动画和游戏的代码,大家可以看看前一篇文章的一些最基本介绍:
关于开发html5 2d 动画和游戏以及打包发布为手机APP(简单入门)
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><title>赛车游戏</title><script type="text/javascript">function init() {setInterval(function(e) {animate();}, 100);}function animate() {}</script>
</head>
<body onLoad="init();"><canvas id="canvas"></canvas></body>
</html>
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
下面说说如何画出咱们的图片
要是你有hbuilder代码编辑软件(没有就直接新建一个文件夹,用文本来编辑好了),那就打开hbuilder,新建一个移动APP项目,程序名字为saiche(这可以自己设定),在项目管理器找到saiche项目,找到img文件夹,然后把咱们的图片全部放进img文件夹
紧跟着就是定义2个变量,用来保存图片对象
var roadpic;var zhujuepic;
在init()方法里面添加给roadpic,zhujuepic变量实例化并设置图片路径的处理
function init() {ctx = document.getElementById('canvas').getContext('2d');canvas1 = document.getElementById('canvas');//用new image()实例化变量 roadpic = new Image(); zhujuepic=new Image();//设置image实例的图片路径roadpic.src ="img/road.png"; //公路图片的路径zhujuepic.src="img/car1.png"; //主角车的路径setInterval(function(e) {animate();}, 100);}
到animate()里面画出图片,drawImage(哪个image实例,坐标X位置,坐标Y位置,宽度,高度)
ctx.drawImage(roadpic,0,0,canvas1.width,canvas1.height); ctx.drawImage(zhujuepic,canvas1.width/2-40/2,canvas1.height-80,40,80);
看效果
这样,我们就实现了让车辆出现在公路上,大家可以用上一篇介绍到的线上打包成安装包的方法打包成APK到自己的手机测试一下,值得注意的是我们这里只是固定了画面的大小,大家得自己去调整画面的大小去适应不同手机设备,项目源码在下面
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><title>赛车游戏</title><script type="text/javascript">var ctx;var canvas1;var roadpic;var zhujuepic;function init() {ctx = document.getElementById('canvas').getContext('2d');canvas1 = document.getElementById('canvas');roadpic = new Image(); zhujuepic=new Image();roadpic.src ="img/road.png";zhujuepic.src="img/car1.png";setInterval(function(e) {animate();}, 100);}function animate() {ctx.clearRect(0, 0, canvas1.width, canvas1.height);//----------------------------------//ctx.drawImage(roadpic,0,0,canvas1.width,canvas1.height); ctx.drawImage(zhujuepic,canvas1.width/2-40/2,canvas1.height-80,40,80); }</script>
</head><body onLoad="init();"><canvas id="canvas" width="300" height="540"></canvas></body>
</html>
下一话,咱们将讲解如何让东西动起来
开发html5 2d 赛车游戏以及打包发布为手机APP 第二话 让单调的背景动起来
开发html5 2d 赛车游戏以及打包发布为手机APP 第一话 工欲善其事相关推荐
- HTML5 2D平台游戏开发#4状态机
在实现了<HTML5 2D平台游戏开发--角色动作篇之冲刺>之后,我发现随着角色动作的增加,代码中的逻辑判断越来越多,铺天盖地的if() else()语句实在让我捉襟见肘: 这还仅仅是角色 ...
- html5 2d,3d游戏引擎
html5 2d,3d游戏引擎 http://biz.turbulenz.com/developers posted on 2014-10-12 21:58 雨亭 阅读(...) 评论(...) 编辑 ...
- android 发布动态功能,Gate.io发布安卓手机APP 2.6.5 beta版本,新增动态短视频功能...
Gate.io发布安卓手机APP 2.6.5beta版本,APP内"发动态"增加短视频功能,最长视频2分钟.同时为实盘增加操作历史分页,优化动态显示,修复bug等.我们将持续为用户 ...
- 跨平台2D/3D游戏开发框架libGDX发布1.2.0更新
摘要:基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费,而且具有极为强大的兼容性和高效性,近日,libGDX发布全新1.2.0版本,除修复Bug之外,还新增了OpenG ...
- 【phaser】快速实现HTML5 2D小游戏
原文链接 前言 最近忙着看项目和写项目,在 github 上无意中发现了别人用 phaser 实现的2d小游戏,代码简单易懂,而且phaser框架本身就是非常的简单,非常适合想快速开发小游戏的开发者. ...
- C语言零基础项目:2D 赛车游戏,详细思路+源码分享
目录 一.简介 二.如何建立一个地图包 三.关于碰撞图的绘制 四.游戏时的说明 五.如何更好地绘制赛场图与碰撞图? 游戏截图 源码下载 一.简介 此游戏是<2D 赛车>的"魔改版 ...
- Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!
明天你好,我叫干不倒 一直比较喜欢看<欢乐喜剧人>,其中有一期小沈龙的节目,名字叫明天你好,我叫干不倒... 父亲的身体一直不好,因为常年的酗酒抽烟,患脑梗好些年头了,周末病情有些恶化,住 ...
- Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!#华为云·寻找黑马程序员#
文章目录 明天你好,我叫干不倒 英语单词学习应用 成语接龙 接龙规则 实现分析 数据库信息 登陆排行 游戏界面 成语判断 拼音识别 代码编写 Jinjia2模板 Flask装饰器 游戏演示 手机搭建项 ...
- HTML5 2D平台游戏开发#7Camera
在庞大的游戏世界中,玩家不能一览地图全貌,而是只能看到其中一部分,并一步步探索,这时就要用到一种技术来显示局部的地图,游戏术语称为摄像机(Camera).下面两张图中的白色矩形框表示了Camera的作 ...
最新文章
- 【高并发】面试官问我:为啥局部变量是线程安全的?
- zerodivisionerror什么意思python-python里的raise是什么意思
- php 半角全角,PHP 全角转半角实现代码
- 推荐一个小巧轻便的RSS阅读器
- javaScript高程笔记--最佳实践
- WinSock API相关函数
- UVA-10859 - Placing Lampposts(树形DP)
- 搭建Cocos2d-js开发环境(Window)
- python调用通达信公式_python读取通达信公式结果
- Ubuntu上Qt5+OpenCV配置
- Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶
- 内网穿透,外网装逼:10分钟学会用花生壳实现从外网访问内网的web项目
- 安卓编程 app图标自定义
- 解决Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 14.x
- 知识普及:HTML 5到底是个什么东西
- 联想笔记本电脑开机后一直黑屏的解决办法
- SpringSecurity详细介绍RememberMe功能
- 小萌库 - 2014世界足球杯全程精彩回顾
- FMSoft uniGUI 1.9.x,开发经验扩展到了一个新的维度
- linux中goldendict发声词典播放报错问题解决方案
热门文章
- 计算机考研复试真题 打印日期
- 给百度CEO李彦宏的公开拜年信(转载)
- 你的朋友圈为什么刷不出来宝马的广告?之我感
- 积木创意:从腾讯的“倍增行动”来看新零售
- CocoaPods安装和使用教程
- linux互斥锁和PV原语
- leetcode刷题--辅助工具
- iframe内部再次嵌套iframe禁用右击事件
- thinkadmin 使用composer -vvv install 安装时报错Executing async command (CWD): ‘/usr/bin/unzip‘ -qq
- STUN协议和常用NAT类型