介绍
公司最近有一个竞技场项目,里面有一个单词小游戏。
游戏大概就是随机生成一个5*5的棋盘,上面有单词的字母,通过滑动连出正确的单词。
棋盘生成算法
思路
首先随机选个一个起点,从这个点开始铺单词。
分别选取上下左右四个方向作为下一个字母的摆放位置,不能触边也不能走重复路,直到平铺完所有的单词。
如果在棋盘能平铺下单词的情况下,找不到路径,就从四个角作为起点,必能找到路径。
代码
import java.util.*;
/**
* @author Wang Guolong
* @version 1.0
* @date 2020/7/31 5:50 下午
*/
public class GenerateWordBoard {
private static char[][] board;
public static void main(String[] args) {
GenerateWordBoard g = new GenerateWordBoard();
g.generateCharBoard("vocabulary", 5, 5);
}
private void generateCharBoard(String word, int m, int n) {
// 单词为空 直接返回
if (word.isEmpty()) {
return;
}
// 单词长度大于棋盘 铺不下 直接返回
if (word.length() > m * n) {
return;
}
// 初始化棋盘 全为*
initBoard(m, n);
char[] wordChar = word.toCharArray();
// 随机选取一个位置开始
Random random = new Random();
int randomX = random.nextInt(m