上一段时间一直在阅读“深蓝色”的游戏制作教程,其中第十二讲提到了地图副本,即如下:(引自蓝色的博客)

    代码下载地址,https://files.cnblogs.com/wangweixznu/WpfGameStudy.rar  

引自深蓝色的博客地址为:

http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505342.htmlhttp://www.cnblogs.com/alamiye010/archive/2009/06/17/1505342.html

前面几节详细的讲解了游戏地图的完整构造,比较有难度的是关于地图内层如障碍物的实现。A*算法往往能让众多的初学者望而止步,斜度α地图则更需要一定的几何知识及抽象思维。很多朋友就问了:什么年代了,都在说面向对象、提高开发效率,难道就没有大众化可以让各层次能力的朋友们都能轻松制作地图引擎的方法吗?大家是否还记得上一节中遗留的一个小悬念,杀手涧就是它了:神奇的副本地图。

 

WFP制作游戏地图构建障碍物的方法改进

      大家先看上图,左边的是地图表现层,它的尺寸为800*600。右边的则是我通过Photoshop在原图基础上勾勒出来的该地图的副本,同样它的尺寸也为800*600。这里特别要提的是该副本是由简单纯色调组成的,因此能够压缩到极小的容量,几乎忽略不计,这是它能作为我们得力工具的前提,也是Silverlight制作基于网页游戏的必要条件。好了,接下来我们详细介绍一下此副本:大家对照原图很容易会发现它上面的黑色其实代表的就是地图中的障碍物,那大片的白色区域呢?其实就是我们可以任意通行的区域了。至于黄色,聪明的朋友应该也不难猜到,它代表的是地图中的传送点。当然,您还可以在此副本中增加例如红色代表陷阱,绿色代表特殊NPC等等。是否觉得像画画一样的?嘿嘿,这就是我主张的面向对象的游戏编程创新思想了。到此地图副本制作完成了,那么该如何利用它呢?

 

具体详细内容讲解可以参考http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505342.html

但是感觉有一个问题就是对于一旦用到A*算法就要涉及用二维矩阵来构建地图的障碍物,然而大家都知道,一款游戏的地图是很复杂的,障碍物也很复杂,如果纯粹靠编程的方式来精确定位障碍物难免有些麻烦,必须在在图像处理工具上标出每个障碍物的具体位置,然后在一一构建障碍物矩阵,利用深蓝色这篇文章中的道理,我想了一个方法,如果我们在加载地图的时候就能够自动创建障碍物矩阵,岂不是更好,那才是真正面向对象编程,地图由你怎么换,你只要给我提供一副黑白图片即可以了,加载地图的时候会根据黑白地图即地图副本自动创建障碍物矩阵

具体代码如下:页面代码

 

<Window x:Class="WpfGameStudy.AStarMapDemo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="AStarMapDemo"  Width="650"  Height="650">
    <Canvas Name="canvas" Width="600"  Height="600" Background="Gray" MouseLeftButtonDown="canvas_MouseLeftButtonDown"></Canvas>

</Window>

 

 

对应后台代码:

 

  1WFP制作游戏地图构建障碍物的方法改进using System;
  2WFP制作游戏地图构建障碍物的方法改进using System.Collections.Generic;
  3WFP制作游戏地图构建障碍物的方法改进using System.Linq;
  4WFP制作游戏地图构建障碍物的方法改进using System.Text;
  5WFP制作游戏地图构建障碍物的方法改进using System.Windows;
  6WFP制作游戏地图构建障碍物的方法改进using System.Windows.Controls;
  7WFP制作游戏地图构建障碍物的方法改进using System.Windows.Data;
  8WFP制作游戏地图构建障碍物的方法改进using System.Windows.Documents;
  9WFP制作游戏地图构建障碍物的方法改进using System.Windows.Input;
 10WFP制作游戏地图构建障碍物的方法改进using System.Windows.Media;
 11WFP制作游戏地图构建障碍物的方法改进using System.Windows.Media.Imaging;
 12WFP制作游戏地图构建障碍物的方法改进using System.Windows.Shapes;
 13WFP制作游戏地图构建障碍物的方法改进using System.Windows.Media.Animation;
 14WFP制作游戏地图构建障碍物的方法改进using System.IO;
 15WFP制作游戏地图构建障碍物的方法改进
 16WFP制作游戏地图构建障碍物的方法改进using QX.Game.PathFinder;
 17WFP制作游戏地图构建障碍物的方法改进namespace WpfGameStudy
 18}

只是简单写了一下,细节上的大家可以自己完善,根据这个原来创建地图真实太Easy了,哈哈

注:里面用的A*算法还是深蓝的,在此声明;感谢深蓝写了这么好的教程

相关文章:

  • 2022-01-16
  • 2021-08-10
  • 2022-01-12
  • 2021-12-14
  • 2022-12-23
  • 2021-04-25
  • 2021-08-07
  • 2021-08-24
猜你喜欢
  • 2021-08-14
  • 2021-04-04
  • 2021-07-13
  • 2022-12-23
  • 2022-12-23
  • 2021-09-26
相关资源
相似解决方案