关于“搭桥”游戏生成随机地图的设计思路
2017-04-06 11:17
357 查看
是很久以前写的一个小游戏。名字为:Bridge Puzzle Game。 是一款益智类的小游戏。
游戏链接:http://www.puzzle-bridges.com/
游戏中最重要的一个功能是随机生成游戏地图功能,我们的目的是用户输入游戏棋盘的大小,应用会根据棋盘大小生成相应的随机数的岛屿。如图:
![](https://img-blog.csdn.net/20170406112738278?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eXVudGlhbjExMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通过游戏链接,可以看到游戏棋盘是一个正方形的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#写的,就不放代码了,放几张图:
![](https://img-blog.csdn.net/20170406115039066?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eXVudGlhbjExMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170406115113988?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1eXVudGlhbjExMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
难看了点
游戏链接: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#写的,就不放代码了,放几张图:
难看了点
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)
相关文章推荐
- 技术贴:如何简单地做游戏随机生成地图
- J2ME滚屏游戏的设计——补充说明关于地图与碰撞判断等
- Unity2D - 6. 生成随机游戏地图 (1)
- 关于FSO静态生成技术的应用范围之解决思路
- CMS-一篇关于分类资源管理系统设计思路的笔记
- 关于飞机射击类游戏的设计原理 (加入时间:2001-3-4)
- 多服务器游戏单点登陆设计思路
- 请各位大虾们帮帮小弟,谢谢!一个关于产品搜索数据库设计思路的问题
- J2ME游戏开发中的地图设计与绘制
- 关于二十四点游戏的编程思路与基本算法
- 关于飞机射击类游戏的设计原理 (加入时间:2001-3-4)
- 关于飞机射击类游戏的设计原理
- 使用MIDP2.0开发游戏 (4) 改进的地图生成方式
- 总体设计和登陆服务器 [游戏服务器的设计思路 转]
- JSP生成静态HTML页面的实践方法和设计思路
- 关于飞机射击类游戏的设计原理 (加入时间:2001-3-4)
- 关于飞机射击类游戏的设计原理 (加入时间:2001-3-4)
- 使用MIDP2.0开发游戏(4)改进的地图生成方式
- 极索(Gsuo)推出新版地图采用Gmap设计思路
- 关于生成不重复随机数组的问题?