html5 游戏制作教程,【整理】一步一步学做HTML5游戏教程
本帖最后由 蓝色力量1221 于 2012-11-29 01:26 编辑
游戏源码下载地址:http://l13.yunpan.cn/lk/QMQFfWQjvWGvg
该游戏教程主要参考了老外Jason Croucher的博客
http://jacebook.co.uk/blog/2010/09/11/html5-writing-a-game/
游戏代码也下载自他的博客。
本教程主要是分析这个游戏的代码,用我自己的语言告诉大家怎么来开发这个游戏
姑且称这个游戏为《蘑菇与熊》吧
游戏的介绍:
用蘑菇顶住熊不给落地,熊碰撞完顶部的奖品为赢。顶部的奖品有3种:叶子、鲜花、橡子
下面开始分析这个游戏解析来该做什么
我使用开发环境是:Dreamweaver
开发语言:HTML5,jquery
OK~废话少说了,分析游戏
由图我们可以分析出
1、游戏需要到的对象(即游戏物体)有
a、蘑菇 b、熊猫 c、奖品(叶子、鲜花、橡子)
2、html界面
a、画布(用来描绘游戏)
为了简单易懂~我们就不一下子定义完所有的对象和事件了
先从最简单的做起,第二回我们让蘑菇能够左右动起来~
===================================================
上回分析了游戏,在这一回我们将让蘑菇跟随鼠标动起来~
达到这个效果:http://www.html5china.com/html5games/mogu/index1.html
一、写html代码XML/HTML Code复制内容到剪贴板
用ID为container的DIV来获取鼠标移动画面的事件
canvas用来绘图
二、定义全局变量JavaScript Code复制内容到剪贴板
//全局变量
var backgroundForestImg = new Image();//森林背景图
var mushroomImg = new Image();//蘑菇图
var ctx;//2d画布
var screenWidth;//画布宽度
var screenHeight;//画布高度
赋予全局变量值JavaScript Code复制内容到剪贴板
mushroomImg.src = "images/mushroom.png";//蘑菇
backgroundForestImg.src = "images/forest1.jpg";//森林背景图
ctx = document.getElementById('canvas').getContext('2d');
screenWidth = parseInt($("#canvas").attr("width"));
screenHeight = parseInt($("#canvas").attr("height"));
三、定义蘑菇实例
由于在画布上的物体全部都有3个共同的属性:x、y坐标,素材image
所以我们定义一个公用的游戏物体JavaScript Code复制内容到剪贴板
//公用 定义一个游戏物体戏对象
function GameObject()
{
this.x = 0;//x 坐标
this.y = 0;//y 坐标
this.image = null; //图片
}
为了方便拓展,定义一个公用的蘑菇JavaScript Code复制内容到剪贴板
//定义公用蘑菇Mushroom 继承游戏对象GameObject
function Mushroom() {};
Mushroom.prototype = new GameObject();//游戏对象GameObject
定义一个我们使用到的具体蘑菇JavaScript Code复制内容到剪贴板
//蘑菇实例
var mushroom = new Mushroom();
初始化蘑菇的位置和图片JavaScript Code复制内容到剪贴板
mushroom.image = mushroomImg;
mushroom.x = parseInt(screenWidth/2);
mushroom.y = screenHeight - 40;
四、用canvas把蘑菇绘制出来JavaScript Code复制内容到剪贴板
//循环描绘物体
function gameLoop()
{
//清除屏幕
ctx.clearRect(0, 0, screenWidth, screenHeight);
ctx.save();
//绘制背景
ctx.drawImage(backgroundForestImg, 0, 0);
//绘制蘑菇
ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);
ctx.restore();
}
好了,到这里蘑菇也定义了,背景图也定义了,绘图也定义了,下面就开始整合上面的代码写一个完整的把蘑菇和背景描述在画布上XML/HTML Code复制内容到剪贴板
蘑菇动起来-html5中文网
//全局变量
var backgroundForestImg = new Image();//森林背景图
var mushroomImg = new Image();//蘑菇
var ctx;//2d画布
var screenWidth;//画布宽度
var screenHeight;//画布高度
//公用 定义一个游戏物体戏对象
function GameObject()
{
this.x = 0;
this.y = 0;
this.image = null;
}
//定义蘑菇Mushroom 继承游戏对象GameObject
function Mushroom() {};
Mushroom.prototype = new GameObject();//游戏对象GameObject
//蘑菇实例
var mushroom = new Mushroom();
//循环描绘物体
function gameLoop()
{
//清除屏幕
ctx.clearRect(0, 0, screenWidth, screenHeight);
ctx.save();
//绘制背景
ctx.drawImage(backgroundForestImg, 0, 0);
//绘制蘑菇
ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);
ctx.restore();
}
//加载图片
function loadImages()
{
mushroomImg.src = "images/mushroom.png";//蘑菇
backgroundForestImg.src = "images/forest1.jpg";//森林背景图
}
//初始化
$(window).ready(function(){
loadImages();
ctx = document.getElementById('canvas').getContext('2d'); //获取2d画布
screenWidth = parseInt($("#canvas").attr("width")); //画布宽度
screenHeight = parseInt($("#canvas").attr("height"));
mushroom.image = mushroomImg;
mushroom.x = parseInt(screenWidth/2);// 蘑菇X坐标
mushroom.y = screenHeight - 40;//蘑菇Y坐标
setInterval(gameLoop, 10);
});
蘑菇图片下载地址:http://www.html5china.com/html5games/mogu/images/mushroom.png
背景图片下载地址:http://www.html5china.com/html5games/mogu/images/forest1.jpg
你试着在支持html5的浏览器上运行上面代码试看~是不是蘑菇描绘出来了~
假如你能看到效果了,那祝贺你~你有了个很好的开端~
上面的步骤只是将蘑菇和场景绘出来了,那么接下来我们让他随鼠标动起来~
给DIV#container添加放上鼠标的事件
当鼠标放在DIV#container上面时,蘑菇的X轴坐标等与鼠标的X轴坐标JavaScript Code复制内容到剪贴板
//事件处理
function addEventHandlers()
{
//鼠标移动则蘑菇跟着移动
$("#container").mousemove(function(e){
mushroom.x = e.pageX - (mushroom.image.width/2);
});
}
我们只要在刚才的演示代码中的 $(window).ready(function(){ }); 里面加上addEventHandlers();就可以了,如下JavaScript Code复制内容到剪贴板
//初始化
$(window).ready(function(){
addEventHandlers();//加上事件
loadImages();
ctx = document.getElementById('canvas').getContext('2d'); //获取2d画布
mushroom.image = mushroomImg;
screenWidth = parseInt($("#canvas").attr("width"));
screenHeight = parseInt($("#canvas").attr("height"));
mushroom.x = parseInt(screenWidth/2);
mushroom.y = screenHeight - 40;
setInterval(gameLoop, 10);
});
你再运行代码试下,是不是蘑菇跟着鼠标动起来了~
第二回就讲到这了,第三回讲怎么绘制一只熊并让他滚动起来~===================================================
这一回我们让熊动起来~
预期达到效果:http://www.html5china.com/html5games/mogu/index2.html
一、先定义全局变量JavaScript Code复制内容到剪贴板
var bearEyesClosedImg = new Image();//闭着眼睛的熊熊
var horizontalSpeed = 2;//水平速度
var verticalSpeed = -2; //垂直速度,开始肯定是要向上飘,所以要负数
var bearAngle = 2;//熊旋转的速度
二、定义熊
首先定义一只公用熊JavaScript Code复制内容到剪贴板
//定义动物熊 Animal 继承 游戏对象GameObject
function Animal() {};
Animal.prototype = new GameObject();//游戏对象GameObject
Animal.prototype.angle = 0;//旋转的角度,(用来改变熊的旋转速度)
定义我们使用的熊JavaScript Code复制内容到剪贴板
//定义熊实例
var animal = new Animal();
初始化熊JavaScript Code复制内容到剪贴板
bearEyesClosedImg.src = "images/bear_eyesclosed.png";//闭着眼睛的
animal.image = bearEyesClosedImg;//熊图片
animal.x = parseInt(screenWidth/2);//x坐标
animal.y = parseInt(screenHeight/2); //y坐标
三、描绘熊在画布上
因为熊是相对移动的,所以我们要加一个基准JavaScript Code复制内容到剪贴板
//以当前熊的中心位置为基准
ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));
//描绘熊
ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));
但是熊要旋转啊,好的,想要改变它的角度,上面的代码中加入旋转JavaScript Code复制内容到剪贴板
//以当前熊的中心位置为基准
ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));
//根据当前熊的角度轮换
ctx.rotate(animal.angle * Math.PI/180);
//描绘熊
ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));
上面的熊是不动的,为什么呢,因为x,y轴和角度没变,因此我们再加上改变x,y和角度的代码,于是上面的代码变成了JavaScript Code复制内容到剪贴板
//改变移动动物X和Y位置
animal.x += horizontalSpeed;
animal.y += verticalSpeed;
//改变翻滚角度
animal.angle += bearAngle;
//以当前熊的中心位置为基准
ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));
//根据当前熊的角度轮换
ctx.rotate(animal.angle * Math.PI/180);
//描绘熊
ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));
到现目前为止熊已经能滚动和移动了,最终代码如下:展开XML/HTML Code复制内容到剪贴板
第三回就讲到这了,第四回讲熊碰撞边界和蘑菇的事件===================================================
第四回主要讲熊移动碰到边界时的反弹处理
预期达到效果:http://www.html5china.com/html5games/mogu/index3.html
一、写一个碰撞处理函数JavaScript Code复制内容到剪贴板
function HasAnimalHitEdge()
{
//熊碰到右边边界
if(animal.x>screenWidth - animal.image.width)
{
if(horizontalSpeed > 0)//假如向右移动
horizontalSpeed =-horizontalSpeed;//改变水平速度方向
}
//熊碰到左边边界
if(animal.x
{
if(horizontalSpeed < 0)//假如向左移动
horizontalSpeed = -horizontalSpeed;//改变水平速度方向
}
//熊碰到下面边界
if(animal.y>screenHeight - animal.image.height)
{
//2秒钟后从新开始
setTimeout(function(){
horizontalSpeed = speed;
verticalSpeed = -speed;
animal.x = parseInt(screenWidth/2);
animal.y = parseInt(screenHeight/2);
gameLoop();
}, 2000);
}
//熊碰到上边边界
if(animal.y<0)
{
verticalSpeed = -verticalSpeed;
}
}
二、在游戏循环GameLoop()尾部中加入检测边界函数,如下JavaScript Code复制内容到剪贴板
function GameLoop()
{
//清除屏幕
ctx.clearRect(0, 0, screenWidth, screenHeight);
ctx.save();
//绘制背景
ctx.drawImage(backgroundForestImg, 0, 0);
//绘制蘑菇
ctx.drawImage(mushroom.image, mushroom.x, mushroom.y);
//绘制熊
//改变移动动物X和Y位置
animal.x += horizontalSpeed;
animal.y += verticalSpeed;
//改变翻滚角度
animal.angle += bearAngle;
//以当前熊的中心位置为基准
ctx.translate(animal.x + (animal.image.width/2), animal.y + (animal.image.height/2));
//根据当前熊的角度轮换
ctx.rotate(animal.angle * Math.PI/180);
//描绘熊
ctx.drawImage(animal.image, - (animal.image.width/2), - (animal.image.height/2));
ctx.restore();
//检测是否碰到边界
HasAnimalHitEdge();
}
到此第四回的完整代码如下:展开XML/HTML Code复制内容到剪贴板
第四回就讲到这了,第五回讲熊碰撞蘑菇的事件
html5 游戏制作教程,【整理】一步一步学做HTML5游戏教程相关推荐
- 计算机动漫与游戏制作与影视,中职中专计算机动漫与游戏制作专业系列教材·动画与影视后期制作:After Effects CS4技能应用教程...
中职中专计算机动漫与游戏制作专业系列教材·动画与影视后期制作:After Effects CS4技能应用教程 语音 编辑 锁定 讨论 上传视频 <中职中专计算机动漫与游戏制作专业系列教材·动画与 ...
- Galgame研发日志:独立游戏制作前应当进行的第一步
各位独立游戏开发者,尤其是初心者,我强烈建议在游戏开发之前首先写一份详尽的企划书来帮助自己梳理思路.游戏的发起可以源自于一个模糊的想法和概念,而游戏的实现则是一件系统性工程,丝毫浪漫不得. 在完成这份 ...
- 计算机动漫与游戏制作专业素养评价标准,1-计算机动漫与游戏制作专业教学标准.doc...
福建省南安职业中专学校 国家中等职业教育改革发展示范学校建设 计算机动漫与游戏制作专业 教学标准 福建省南安职业中专学校 二〇一四年七月 目 录 一.专业名称(专业代码)1 二.入学要求1 三.基本学 ...
- Kenney Assets - 提供数以万计免费商用的游戏制作素材下载,包括 2d、3d素材,游戏音效和游戏 UI
来自荷兰的游戏公司开放了自家游戏的素材包,制作很精美,下载后无需取得授权就能直接商用. 关于 Kenney Assets Kenney Assets 是游戏公司 Kenney 为游戏开发者提供的游戏素 ...
- python做一个小游戏_12岁的少年教你用Python做小游戏
你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂!在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将会 ...
- python能做什么游戏-12岁的少年教你用Python做小游戏
你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作为英雄,需要在城堡里抵御獾的进攻. 为了写这个游戏的代码,你将 ...
- Unity游戏制作问题整理(1)--添加按钮声音
在制作Unity游戏中,按钮事件是用的比较频繁的,给按钮加声音的方式有两大类. 下面我介绍中,我分别举一个例子. 一种是直接在界面添加(无代码) 首先打开Unity,在场景中新建一个BUTTO ...
- python经典教程游戏软件_手把手带领大家用Python来做经典游戏 — 贪吃蛇
从头到尾,从无到有,逐步分析每一个环节的实现,旨在让大家真正搞清楚"如何用python做贪吃蛇". 课程内容: 基本逻辑 游戏逻辑 第一步.初始框架 第二步.绘制格子 第三步 ...
- scratch小游戏脚本大全_酷酷带你一起做小游戏--跳一跳
运用scratch我做了一个跳一跳小游戏,首先我要确定游戏流程, 小恐龙跑向障碍物,玩家用键盘的空格键控制恐龙跳跃 如果恐龙跳过障碍物则游戏分数加一 如果恐龙接触到障碍物则游戏结束,脚本全部停止 先添 ...
最新文章
- phonegap 2.7 ios配置安装详细教程(2.9通用)
- 算法 - 交换排序(C++)
- python脚本实例手机端-终于晓得python入门脚本实例
- mybatis报错Type interface xxx.Dao is not...
- ORACLE HANDBOOK系列之十:字符集、编码以及Oracle的那些事
- DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)
- 电商小程序如何实现分账?
- linux查看nginx昅 电视,PHP实现查询汉字笔画、笔画排序、笔画统计
- COPRA RF 2005 SR1最新版 (冷弯成型,轧辊设计)
- 【网络安全】DRIDEX木马巧用VEH混淆API调用流程
- 华东理工大学计算机网络作业,华东理工大学计算机网络实验操作手册.pdf
- 交通肇事逃逸会受到什么处罚
- cannot import name ‘utc‘
- PS笔记:调色部分理论基础
- 5000字干货 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost总结
- 28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
- Ubuntu查找软件命令
- 毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介
- uint64_t 头文件 linux,32/64位平台printf uint64的方法
- 基于Springboot+vue前后端分离的项目--后端笔记