惯例,先上下效果图片:
在上一篇玩玩webgame开发(1)大概给出了jquery方式的地图实现,最近又做了一些改进,加进了更多元素。代码全部改成jquery插件的方式。有机会做专门的介绍。
这次的主题主要是地图上面人物的移动以及战争迷雾的实现。
人物的移动其实比较简单,就是监听键盘上下左右按键事件。
$(document).keydown(function(event){
$.boboMove(event);
});
后台boboMove函数的写法:
switch(event.keyCode){
case 37:
if(bobo.pos.X > minX){ //判断地图边缘
bobo.pos.X -= 1; //坐标变化
$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);//将人物移动到这个位置上,实际做法就是将人物的图片放在这个div上面
}
break;
case 38:
if(bobo.pos.Y < maxY){
bobo.pos.Y += 1;
$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);
}
break;
case 39:
if(bobo.pos.X < maxX){
bobo.pos.X += 1;
$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);
}
break;
case 40:
if(bobo.pos.Y > minY){
bobo.pos.Y -= 1;
$("#"+"X"+bobo.pos.X+"Y"+bobo.pos.Y).append(boboFace);
}
break;
}
cleanBattleFog(); //清除战争迷雾
我写的这个webgame打算做个战争迷雾的效果,玩过魔兽争霸或者英雄无敌的人应该对这个概念很清楚,就是在没有探索之前,地图上面的区域都是迷雾覆盖无法看到的。
迷雾覆盖效果实现其实很简单,对于我所做的系统来说,迷雾就是所有的区域div都加上一个battleFog的css。
移除战争迷雾的算法是这样的:在人物的视野内的格子div移除battleFog这个css类。例如人物视野为1,人物坐标3,3。那么视野内的(2,3),(3,3),(3,4),(4,3),(3,2)。显示出来就是一个十字形,如果视野是2,那么显示出来就类似一个星形。
在正式给出代码之前,各位看客可以自己考虑一下这个算法的实现。可能大家都觉得这个很简单。。但是今天在写这个的时候才发觉这个看似简单的问题要写好不那么好想,
可能很久没动脑筋了吧,这里卖个小关子,大家动动脑筋想想,给出人物当前的坐标,以及人物的视野,得出当前人物所有可以看到的坐标。
=================思考十分钟分割线=================
:D
:D
:D
:D
呵呵,最后给出我的战争迷雾移除算法:
function cleanBattleFog(){
var fogToBeClean = []; //将被移除迷雾的区域数组,保存所有将被移除迷雾的div的id
//bobo.pos.X 人物X坐标,
//bobo.pos.Y 人物Y坐标
//bobo.eyeshot 人物视野
for(var m =bobo.pos.X-bobo.eyeshot;m<=bobo.pos.X+bobo.eyeshot; m++ ){
for(var n=bobo.pos.Y-bobo.eyeshot;n<=bobo.pos.Y+bobo.eyeshot;n++){
var xdiff = m - bobo.pos.X;
var ydiff = n - bobo.pos.Y;
if(xdiff*xdiff + ydiff*ydiff <= bobo.eyeshot*bobo.eyeshot
&& m>=1 && n>=1 && m <= map.maxY && n <= map.maxX
){
fogToBeClean.push('#X'+m+'Y'+n);
}
}
}
$(fogToBeClean.join(',')).removeClass('battleFog');
}
其实算法不难,就是2点间坐标距离要小于视野。并且要注意考虑地图的边界,不然可能得到不在地图内的坐标。
每得到一个坐标,用数组的push方法保存到数组中。jquery支持用逗号分割的表达式获得多个对象,所以最后直接一个join搞定。
- 大小: 115.1 KB
分享到:
相关推荐
在本文中,我们将深入探讨WebGame游戏开发中的一个重要部分——人物移动。WebGame是一种基于Web浏览器的游戏,通常使用Flash技术来实现丰富的图形界面和交互性。在这个特定的资源包中,我们关注的是ActionScript(AS...
《Flex在WebGame中的应用:GappleRPG...通过对人物移动的源代码进行研究,我们可以掌握Flex中的事件处理、对象移动、碰撞检测等核心概念,这对于提升游戏开发技能,特别是使用Flex技术构建WebGame,有着显著的帮助。
### Webgame开发简明教程知识点总结 #### 一、Webgame概述 ...Webgame作为一种独特的游戏形式,在技术实现和玩法设计上都有其独特之处。未来随着技术的发展和玩家需求的变化,Webgame也将不断进化和发展。
#### 一、Webgame简介与开发环境搭建 - **Webgame定义**:Webgame是一种基于Web浏览器的游戏形式,玩家无需安装客户端软件即可通过互联网进行游戏。 - **开发环境**: - 后端语言推荐PHP,因其简单易学且广泛应用...
在Web游戏开发中,人物行走动画是至关重要的一个部分,它为玩家提供了与游戏世界的交互体验。本实例探讨的是如何使用JavaScript实现Web游戏中的角色行走功能。JavaScript是一种广泛用于网页和网络应用的脚本语言,它...
ASP.NET WebGame通常指的是使用微软的ASP.NET框架开发的Web游戏,而C#是该框架的主要编程语言。这可能意味着在项目的某些部分,如后端服务或特定功能模块,可能会看到C#的影子,或者开发者可能参考了ASP.NET的一些...
2. DOM操作:在Webgame开发中,DOM(文档对象模型)是网页内容的结构化表示。通过JavaScript,开发者可以改变DOM元素,创建动态效果和游戏界面。引擎可能提供了便利的方法来操作DOM元素,如创建游戏对象、添加事件...
在本文中,我们将深入探讨如何使用AS3(ActionScript 3)进行WebGame开发,特别是如何让游戏中的角色跑起来。ActionScript 3是Flash Professional和Adobe AIR等平台中的主要编程语言,它提供了强大的功能来创建互动...
5. **Event-driven编程**:Flex采用事件驱动模型,游戏中的各种交互如点击、移动等都可以通过监听和处理事件来实现。这种模式使得游戏逻辑更易于理解和维护。 6. **图形渲染**:Flex支持矢量图形,这意味着游戏图形...
资源名称:webgame网页游戏开发设计简明教程 中文WORD版本文档是webgame网页游戏开发设计简明教程;webgame程序构成:三大部分。第一是数据流程。第二是程序。第三是美术。其中,数据流程包括了功能。也只有在功能中...
描述: "本文档主要讲述的是网页游戏开发入门教程(webgame+design);希望对大家的学习会有帮助;感兴趣的朋友可以过来看看" 知识点: 1. 网页游戏开发基础:该文档是一份入门级教程,主要面向对PHP5网页游戏开发感...
### WebGame的AS端开发心得解析 #### 一、理解AS项目全局结构 在WebGame的AS端开发过程中,理解项目的整体结构是非常重要的一步。这不仅有助于开发者更好地组织代码,还能确保项目的可维护性和可扩展性。对于AS端...
通过了解Python在实际Webgame项目中的应用,我们可以更深刻地认识到它作为游戏服务器端开发语言的优势,以及如何利用相关工具和框架来优化开发流程,提升项目质量和效率。对于有意从事Webgame开发的技术人员而言,这...
通过对《龙与地下城Webgame》的源码研究,开发者不仅可以深入了解D&D规则的编程实现,还可以学习到Webgame开发中的各种技术,如前端框架、服务器架构、数据库设计和网络编程。这是一次难得的学习机会,对于提升游戏...
该文档描述部分重复了标题内容,没有提供额外的信息,但从整体来看,我们可以推断出此文档旨在深入解析WebGame大型游戏的设计与开发过程。 #### 二、故事情节与背景设定 **故事背景**:文档中提到了一个富有传奇...
总的来说,这个项目为想要进入Webgame开发领域的人提供了一个宝贵的实践平台,可以帮助他们掌握相关技能,并对Webgame的开发流程有更直观的认识。无论是对PHP的深入学习,还是对游戏开发的整体理解,都能从中获益匪...
4. **人物行走模块**: 在游戏中,角色的移动是玩家与游戏世界互动的基础。该模块通常包括角色的动画处理、碰撞检测和路径规划。AS3中的Sprite类可以用来管理角色的图形和动作,而物理引擎或自定义算法可以处理碰撞和...
总结而言,FLEX WebGame源码提供了一个深入学习FLEX游戏开发的宝贵平台,尤其对于“MapDemo”模块,开发者可以深入了解人物行走机制和地图动态加载的实现,从而提升自己的技术实力和开发效率。通过研究和实践这些...
2. **数据库设计**:通常包括SQL脚本,用于创建玩家表、游戏世界表、物品表等,以及相关的数据模型类,负责与数据库进行交互。 3. **游戏逻辑**:包括用户注册、登录系统、游戏进程控制、角色移动、战斗逻辑等,...