iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >html5如何开发RPG游戏
  • 304
分享到

html5如何开发RPG游戏

2024-04-02 19:04:59 304人浏览 独家记忆
摘要

本篇内容主要讲解“HTML5如何开发RPG游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5如何开发RPG游戏”吧!   准备工作   一,库件下

本篇内容主要讲解“HTML5如何开发RPG游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习html5如何开发RPG游戏”吧!

  准备工作

  一,库件下载

  本游戏开发,需要用到开源库件:LegendForHtml5Programming

  请到这里下载最新版的LegendForHtml5Programming,本次开发需要1.2版以上

  库件的开发过程请看这里

  二,库件配置

  首先建立一个文件夹rpg(你也可以起其他的名字)

  然后将下载的库件解压,解压后将legend文件夹放到与rpg文件夹同目录

  然后,在rpg文件夹里建一个index.html文件和一个js文件夹,在js文件夹里建一个Main.js文件

  最后,在index.html里加入下面的代码

  <!DOCTYPE html>

  <html>

  <head>

  <meta charset="UTF-8">

  <title>rpg</title>

  </head>

  <body>

  <div id="mylegend">loading&hellip;&hellip;</div>

  <!-- 引入LegendForHtml5Programming库件 -->

  <script type="text/javascript" src=""></script>

  <script type="text/javascript" src=""></script>

  </body></html>

  当然,你也可以将legend文件夹放到其他地方,但是你需要修改legend文件夹下的legend.js文件中的LEGEND_PATH的值,来配置库件的路径

  游戏地图的实现

  接下来,我们先来画最底层的地图层,

  地图当然就是是由图片来组成的,如何在画面上显示一张图片,我之前已经写过专门的文章,代码如下

  var loader;

  function main(){

  loader=new LLoader();

  loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);

  loader.load("map.jpg","bitmapData");

  }

  function loadBitmapdata(event){

  var bitmapdata=new LBitmapData(loader.content);

  var bitmap=new LBitmap(bitmapdata);

  addChild(bitmap);

  }

  如果想更详细了解的话,看下面的帖子

  用仿ActionScript的语法来编写html5&mdash;&mdash;第一篇,显示一张图片

  游戏中的地图可以是一张比较大的图片,即整个图片就是游戏的地图,当人物或者地图移动的时候,改变图片显示的区域范围,从而实现地图的滚动和显示等,这样的话,必须为每个场景准备一张地图。

  另外,地图也可以是由许多小的地图块儿来组成,比如,我们熟悉的《吞食天地》,《勇者斗恶龙》等经典小型rpg游戏,这样的地图,我们需要准备一张或几张地图块儿,把这些地图块组合成地图来显示,比如下图

  在地图显示的时候,首先把图片切割,然后在根据预先设定好的位置显示到地图层上,这样我们就看到了一张完整的地图了

  接下来,打开Main.js

  在里面加入

  1. init(50,"mylegend",480,320,main);

  在legendForHtml5Progarmming中,用init这个函数来初始化canvas,上面的代码表示,初始化一个速度为50,名字为mylegend,大小为480*320的游戏界面,初始化完成后调用main(),这个速度值是说每个多少毫秒游戏循环一次,所以这个值设定的越小,游戏运行的速度就越快

  因为要调用main方法,所以我们要写一个main方法,main方法里做一些简单的准备工作。

  虽说读取图片只需要一个

  1. loader.load("map.jpg","bitmapData");

  但是游戏中往往用到很多张图片,你可以用到哪一张再加载哪一张,也可以一次性全部加载完,然后再开始显示游戏

  为了一次性把图片加载完,我的做法是,将需要的图片放到一个数组里,然后设定一个索引,每加载一个图片,让这个索引加1,当这个索引小于数组的长度,则继续加载,直到将数组中的图片全部加载完,然后开始进行下一步的工作

  具体实现看下面的代码

  //图片path数组

  var imgData=new Array();

  //读取完的图片数组

  var imglist={};

  function main(){

  //准备读取图片

  imgData.push({name:"map",path:""});

  imgData.push({name:"mingren",path:""});

  imgData.push({name:"e1",path:""});

  imgData.push({name:"e2",path:""});

  //实例化进度条层

  loadingLayer=new LSprite();

  loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");

  addChild(loadingLayer);

  //开始读取图片

  loadImage();

  }

  function loadImage(){

  //图片全部读取完成,开始初始化游戏

  if(loadIndex >=imgData.length){

  removeChild(loadingLayer);

  legendLoadOver();

  gameInit();

  return;

  }

  //开始读取图片

  loader=new LLoader();

  loader.addEventListener(LEvent.COMPLETE,loadComplete);

  loader.load(imgData[loadIndex].path,"bitmapData");

  }

  function loadComplete(event){

  //进度条显示

  loadingLayer.graphics.clear();

  loadingLayer.graphics.drawRect(1,"black",[50, 200, 200, 20],true,"#ffffff");

  loadingLayer.graphics.drawRect(1,"black",[50, 203, 200*(loadIndex/imgData.length), 14],true,"#000000");

  //储存图片数据

  imglist[imgData[loadIndex].name]=loader.content;

  //读取下一张图片

  loadIndex++;

  loadImage();

  }

  上面的代码不难明白,当图片没有读取完之前,会不断循环loadImage和loadComplete两个方法,当读取完之后,移除进度条,用legendLoadOver告诉游戏已经读取完成,然后调用gameInit方法,进行游戏的初始化工作。

  看gameInit方法

  function gameInit(event){

  //游戏层显示初始化

  layerInit();

  //添加地图

  addMap();

  //添加人物

  addChara();

  }

  在gameInit方法中,首先进行游戏层的初始化,然后添加游戏地图,然后添加人物

  游戏层显示初始化,按照我们一开始所说,我们一次来初始化地图层,人物层,效果层,对话层,控制层

  //游戏层显示初始化

  function layerInit(){

  //游戏底层添加

  backLayer=new LSprite();

  addChild(backLayer);

  //地图层添加

  mapLayer=new LSprite();

  backLayer.addChild(mapLayer);

  //人物层添加

  charaLayer=new LSprite();

  backLayer.addChild(charaLayer);

  //效果层添加

  effectLayer=new LSprite();

  backLayer.addChild(effectLayer);

  //对话层添加

  talkLayer=new LSprite();

  backLayer.addChild(talkLayer);

  //控制层添加

  ctrlLayer=new LSprite();

  backLayer.addChild(ctrlLayer);

  }

  有了游戏层次的划分,我们在添加游戏对象的时候,将地图添加到地图层,人物添加到人物层,他们就会依次显示在游戏的界面

  下面开始添加地图

  首先我们需要准备好显示地图的数组

  //地图图片数组

  var map=[

  [18,18,18,18,18,18,18,18,18,18,18,18,55,55,18],

  [18,18,18,17,17,17,17,17,17,17,17,17,55,55,18],

  [18,18,17,17,17,17,18,18,17,17,17,17,55,55,18],

  [18,17,17,17,18,18,18,18,18,17,17,55,55,17,18],

  [18,17,17,18,22,23,23,23,24,18,17,55,55,17,18],

  [18,17,17,18,25,28,26,79,27,18,55,55,17,17,18],

  [18,17,17,17,17,10,11,12,18,18,55,55,17,17,18],

  [18,18,17,17,10,16,16,16,11,55,55,17,17,17,18],

  [18,18,17,17,77,16,16,16,16,21,21,17,17,17,18],

  [18,18,18,18,18,18,18,18,18,55,55,18,18,18,18]

  ];

  这些数字分别对应着图中如下位置

  然后看下面代码

  //添加地图

  function addMap(){

  var i,j,index,indexX,indexY;

  var bitmapdata,bitmap;

  //地图图片数据

  bitmapdata=new LBitmapData(imglist["map"]);

  //将地图图片拆分,得到拆分后的各个小图片的坐标数组

  imageArray=LGlobal.divideCoordinate(bitmapdata.image.width,bitmapdata.image.height,10,10);

  //在地图层上,画出15*10的小图片

  for(i=0;i<10;i++){

  for(j=0;j<15;j++){

  //从地图数组中得到相应位置的图片坐标

  index=map[i][j];

  //小图片的竖坐标

  indexY=Math.floor(index /10);

  //小图片的横坐标

  indexX=index - indexY*10;

  //得到小图片

  bitmapdata=new LBitmapData(imglist["map"],indexX*32,indexY*32,32,32);

  bitmap=new LBitmap(bitmapdata);

  //设置小图片的显示位置

  bitmap.x=j*32;

  bitmap.y=i*32;

  //将小图片显示到地图层

  mapLayer.addChild(bitmap);

  }

  }

  }

  这样,我们就把预先设置好的图片显示到了游戏界面上,形成了地图

  先把addChara方法加上

  //添加人物

  function addChara(){

  }

  然后运行游戏

  可以得到下面画面

  游戏人物的实现

  为了更好的实现游戏人物的控制,我们新建一个游戏人物类Character.js

  里面代码如下

  function Character(data,row,col,speed){

  base(this,LSprite,[]);

  var self=this;

  //设定人物动作速度

  self.speed=speed==null?3:speed;

  self.speedIndex=0;

  //设定人物大小

  data.setProperties(0,0,data.image.width/col,data.image.height/row);

  //得到人物图片拆分数组

  var list=LGlobal.divideCoordinate(data.image.width,data.image.height,row,col);

  //设定人物动画

  self.anime=new LAnimation(this,data,list);

  };

  Character.prototype.onframe=function (){

  var self=this;

  if(self.speedIndex++ < self.speed)return;

  self.speedIndex=0;

  self.anime.onframe();

  };

  在legendForHtml5Programming里,有一个LAnimation类,用来实现图片数组顺序播放,形成动画

  使用LAnimation类需要三个参数,一个是显示动画的层,一个是图片,一个是图片的坐标数组

  然后,调用LAnimation类的onframe方法,就可以实现动画的播放了

  在index.html中引入Character类,然后修改addChara方法

  //添加人物

  function addChara(){

  bitmapdata=new LBitmapData(imglist["mingren"]);

  player=new Character(bitmapdata,4,4);

  player.x=32*5;

  player.y=32*6;

  charaLayer.addChild(player);

  }

  在gameInit的末尾添加循环事件

  //添加贞事件,开始游戏循环

  backLayer.addEventListener(LEvent.ENTER_FRAME,onframe);

  最后,添加onframe方法

  function onframe(){

  player.onframe();

  }

到此,相信大家对“html5如何开发RPG游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: html5如何开发RPG游戏

本文链接: https://www.lsjlt.com/news/94195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • html5如何开发RPG游戏
    本篇内容主要讲解“html5如何开发RPG游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5如何开发RPG游戏”吧!   准备工作   一,库件下...
    99+
    2024-04-02
  • Html5如何开发乒乓Ping Pong游戏
    这篇文章给大家介绍Html5如何开发乒乓Ping Pong游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在这一章节我们将:准备开发工具建立我们的第一个游戏-Ping Pong学习使...
    99+
    2024-04-02
  • 用html5开发游戏有哪些优点
    今天小编给大家分享一下用html5开发游戏有哪些优点的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2024-04-02
  • Html5怎样开发乒乓Ping Pong游戏
    这篇文章给大家介绍Html5怎样开发乒乓Ping Pong游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。用jQuery操作游戏元素 我们已经用jQuery初始化了球拍。现在我们做一...
    99+
    2024-04-02
  • Html5怎么开发乒乓Ping Pong游戏
    Html5怎么开发乒乓Ping Pong游戏,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Hea...
    99+
    2024-04-02
  • html5游戏开发用的引擎是什么
    本篇内容主要讲解“html5游戏开发用的引擎是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5游戏开发用的引擎是什么”吧! ...
    99+
    2024-04-02
  • 如何利用AngularJS开发2048游戏
    这期内容当中小编将会给大家带来有关如何利用AngularJS开发2048游戏,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我频繁地被问及到的一个问题之一,就是什么时候使用...
    99+
    2024-04-02
  • HTML5开发Kinect体感游戏的示例分析
    小编给大家分享一下HTML5开发Kinect体感游戏的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HTML5开发Kin...
    99+
    2024-04-02
  • 如何用Silverlight开发贪吃蛇游戏
    今天就跟大家聊聊有关如何用Silverlight开发贪吃蛇游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。介绍使用 Silverlight 3.0(c#) 开发一个贪吃蛇...
    99+
    2023-06-17
  • HTML5 画布标签与游戏开发:用代码创造你的游戏世界
    HTML5 画布标签()是一个非常重要的元素,它为在网页中创建动态图形提供了可能。在游戏开发中,画布标签被广泛用于创建游戏界面、动画和游戏元素等。 要开始使用 HTML5 画布标签进行游戏开发,您需要先了解一些基本的 JavaScrip...
    99+
    2024-02-25
    HTML5 画布标签 游戏开发 JavaScript 代码
  • 如何使用Java开发扫雷游戏
    小编给大家分享一下如何使用Java开发扫雷游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、效果图      二、实现...
    99+
    2023-06-15
  • 如何在PHP中实现游戏开发
    随着互联网的迅猛发展,游戏开发已经成为了一个全新的行业,吸引越来越多的开发者前来尝试。游戏开发所需的技能包括图形处理、物理处理、游戏逻辑和网络通信等,在这些技能中,编程技能是不可或缺的一部分。PHP作为一种流行的编程语言,虽然被认为主要用于...
    99+
    2023-05-21
    PHP 实现 游戏开发
  • Unity游戏开发之2048游戏的实现
    目录一、前言二、游戏开发知识储备2-1技术栈三、休闲类游戏《2048》开发实战3-1玩法概述3-2实现分析3-3搭建场景3-4实现代码一、前言 写今天这篇文章的缘由,其实是来自于前段...
    99+
    2024-04-02
  • C#游戏开发之实现贪吃蛇游戏
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2023-01-04
    C#实现贪吃蛇游戏 C#贪吃蛇游戏 C#贪吃蛇
  • golang游戏怎么开发
    作为一门现代化的程序设计语言,Golang(也称为Go)在游戏开发方面有着广泛的应用,得到了游戏公司和游戏开发者的青睐。Golang以其高效、可靠和易于维护的特点成为越来越多游戏开发者们的首选,同时其并发编程的特性更是对游戏引擎的开发大有裨...
    99+
    2023-05-15
  • C#游戏开发之实现华容道游戏
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { InitializeC...
    99+
    2023-01-04
    C#华容道游戏 C#华容道 C#游戏
  • 如何使用python+pygame开发消消乐游戏
    这篇文章主要介绍了如何使用python+pygame开发消消乐游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。效果是这样的 ↓ ↓ ↓ 一、环境要求windows...
    99+
    2023-06-15
  • 微信小程序│ 游戏开发 │连连看游戏
    “连连看”是源自台湾的桌面小游戏,自从流入大陆以来风靡一时,也吸引众多程序员开发出多种版本的“连连看”。“连连看”考验的是各位的眼力,在有限的时间内,只要把所有能连接的相同图案,两个一对地找出来,每找出一对,它们就会自动消失,只要把所...
    99+
    2023-09-23
    游戏 微信小程序 小程序
  • Python游戏开发之魔塔小游戏的实现
    前言 这一期我们继续完善我们的魔塔小游戏。 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本: 3.7.4 相关模块: cpgames模块; 以及一些pytho...
    99+
    2024-04-02
  • canvas开发过哪些游戏
    canvas开发过的游戏有切水果、愤怒的小鸟、2048、地下城与勇士、神庙逃亡等。详细介绍:1、切水果,Canvas技术使得游戏中的水果和刀光效果非常流畅,给玩家带来了极佳的游戏体验;2、愤怒的小鸟,Canvas技术使得游戏中的物理效果和碰...
    99+
    2023-08-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作