按照昔日做给上头拿去找汽车商卖钱的一个赛车游戏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 第一话 工欲善其事相关推荐

  1. HTML5 2D平台游戏开发#4状态机

    在实现了<HTML5 2D平台游戏开发--角色动作篇之冲刺>之后,我发现随着角色动作的增加,代码中的逻辑判断越来越多,铺天盖地的if() else()语句实在让我捉襟见肘: 这还仅仅是角色 ...

  2. html5 2d,3d游戏引擎

    html5 2d,3d游戏引擎 http://biz.turbulenz.com/developers posted on 2014-10-12 21:58 雨亭 阅读(...) 评论(...) 编辑 ...

  3. android 发布动态功能,Gate.io发布安卓手机APP 2.6.5 beta版本,新增动态短视频功能...

    Gate.io发布安卓手机APP 2.6.5beta版本,APP内"发动态"增加短视频功能,最长视频2分钟.同时为实盘增加操作历史分页,优化动态显示,修复bug等.我们将持续为用户 ...

  4. 跨平台2D/3D游戏开发框架libGDX发布1.2.0更新

    摘要:基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费,而且具有极为强大的兼容性和高效性,近日,libGDX发布全新1.2.0版本,除修复Bug之外,还新增了OpenG ...

  5. 【phaser】快速实现HTML5 2D小游戏

    原文链接 前言 最近忙着看项目和写项目,在 github 上无意中发现了别人用 phaser 实现的2d小游戏,代码简单易懂,而且phaser框架本身就是非常的简单,非常适合想快速开发小游戏的开发者. ...

  6. C语言零基础项目:2D 赛车游戏,详细思路+源码分享

    目录 一.简介 二.如何建立一个地图包 三.关于碰撞图的绘制 四.游戏时的说明 五.如何更好地绘制赛场图与碰撞图? 游戏截图 源码下载 一.简介 此游戏是<2D 赛车>的"魔改版 ...

  7. Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!

    明天你好,我叫干不倒 一直比较喜欢看<欢乐喜剧人>,其中有一期小沈龙的节目,名字叫明天你好,我叫干不倒... 父亲的身体一直不好,因为常年的酗酒抽烟,患脑梗好些年头了,周末病情有些恶化,住 ...

  8. Flask开发成语接龙游戏,以后闲了手机玩玩自己写的游戏吧!#华为云·寻找黑马程序员#

    文章目录 明天你好,我叫干不倒 英语单词学习应用 成语接龙 接龙规则 实现分析 数据库信息 登陆排行 游戏界面 成语判断 拼音识别 代码编写 Jinjia2模板 Flask装饰器 游戏演示 手机搭建项 ...

  9. HTML5 2D平台游戏开发#7Camera

    在庞大的游戏世界中,玩家不能一览地图全貌,而是只能看到其中一部分,并一步步探索,这时就要用到一种技术来显示局部的地图,游戏术语称为摄像机(Camera).下面两张图中的白色矩形框表示了Camera的作 ...

最新文章

  1. 【高并发】面试官问我:为啥局部变量是线程安全的?
  2. zerodivisionerror什么意思python-python里的raise是什么意思
  3. php 半角全角,PHP 全角转半角实现代码
  4. 推荐一个小巧轻便的RSS阅读器
  5. javaScript高程笔记--最佳实践
  6. WinSock API相关函数
  7. UVA-10859 - Placing Lampposts(树形DP)
  8. 搭建Cocos2d-js开发环境(Window)
  9. python调用通达信公式_python读取通达信公式结果
  10. Ubuntu上Qt5+OpenCV配置
  11. Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶
  12. 内网穿透,外网装逼:10分钟学会用花生壳实现从外网访问内网的web项目
  13. 安卓编程 app图标自定义
  14. 解决Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 14.x
  15. 知识普及:HTML 5到底是个什么东西
  16. 联想笔记本电脑开机后一直黑屏的解决办法
  17. SpringSecurity详细介绍RememberMe功能
  18. 小萌库 - 2014世界足球杯全程精彩回顾
  19. FMSoft uniGUI 1.9.x,开发经验扩展到了一个新的维度
  20. linux中goldendict发声词典播放报错问题解决方案

热门文章

  1. 计算机考研复试真题 打印日期
  2. 给百度CEO李彦宏的公开拜年信(转载)
  3. 你的朋友圈为什么刷不出来宝马的广告?之我感
  4. 积木创意:从腾讯的“倍增行动”来看新零售
  5. CocoaPods安装和使用教程
  6. linux互斥锁和PV原语
  7. leetcode刷题--辅助工具
  8. iframe内部再次嵌套iframe禁用右击事件
  9. thinkadmin 使用composer -vvv install 安装时报错Executing async command (CWD): ‘/usr/bin/unzip‘ -qq
  10. STUN协议和常用NAT类型