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