您的位置:首页 > 其它

关于“搭桥”游戏生成随机地图的设计思路

2017-04-06 11:17 357 查看
是很久以前写的一个小游戏。名字为:Bridge Puzzle Game。 是一款益智类的小游戏。

游戏链接:http://www.puzzle-bridges.com/

游戏中最重要的一个功能是随机生成游戏地图功能,我们的目的是用户输入游戏棋盘的大小,应用会根据棋盘大小生成相应的随机数的岛屿。如图:



通过游戏链接,可以看到游戏棋盘是一个正方形的N X N的方格棋盘。从游戏中通过观察,可以得到到:

1.每个“岛屿”之间不可以水平和垂直相邻,只可以斜线方向相邻。

2.搭桥链接“岛屿”时,不能有桥相互交叉和相互重复。

3.生成的地图必须要保证可以链接到所有的“岛屿”。

4.生成地图时,每个“岛屿”的数标。

。。。

想过很多种方法,都可以生成随机地图,但是由于随机性不高,生成的地图种类就会偏少。提供一个我能想到的最高随机的方法:

1.首先需要两个List集合,一个储存Line对象信息,另一个储存”岛屿“对象的信息。

2.在给定的网格中,随机选取一个坐标,放置一个“岛屿”。把“岛屿”信息放到List中。

3.创建一个循环。

4.在循环中随机选中一个已经创建的“岛屿”,并随机在此“岛屿”的水平或者竖直方向上选取一个坐标,记得此坐标要排除选定“岛屿“的坐标以及其坐标的相邻位置。

4.如果新选定的坐标在List集合中不会与其他坐标重复或者相邻,则创建一个Line对象,把此坐标和选中”岛屿“的坐标作为起始点和终点。

5.新创建的Line比较在List中的Line对象,如果有重复的或者垂直的Line对象在List中,则返回步骤4,如果没有则在该坐标处创建一个”岛屿“,将”岛屿“信息存入到List中,并且该坐标的Line信息存入到Line的List中。

6.循环结束,随机地图创建完成。

由于是C#写的,就不放代码了,放几张图:





难看了点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: