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

是很久以前写的一个小游戏。名字为: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#写的,就不放代码了,放几张图:


难看了点微笑



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值