java实现单词小游戏
本文实例为大家分享了java实现单词小游戏的具体代码,供大家参考,具体内容如下
介绍
公司最近有一个竞技场项目,里面有一个单词小游戏。
游戏大概就是随机生成一个5*5的棋盘,上面有单词的字母,通过滑动连出正确的单词。
棋盘生成算法
思路
首先随机选个一个起点,从这个点开始铺单词。
分别选取上下左右四个方向作为下一个字母的摆放位置,不能触边也不能走重复路,直到平铺完所有的单词。
如果在棋盘能平铺下单词的情况下,找不到路径,就从四个角作为起点,必能找到路径。
代码
importjava.util.*;
/**
*@authorWangGuolong
*@version1.0
*@date2020/7/315:50下午
*/
publicclassGenerateWordBoard{
privatestaticchar[][]board;
publicstaticvoidmain(String[]args){
GenerateWordBoardg=newGenerateWordBoard();
g.generateCharBoard("vocabulary",5,5);
}
privatevoidgenerateCharBoard(Stringword,intm,intn){
//单词为空直接返回
if(word.isEmpty()){
return;
}
//单词长度大于棋盘铺不下直接返回
if(word.length()>m*n){
return;
}
//初始化棋盘全为*
initBoard(m,n);
char[]wordChar=word.toCharArray();
//随机选取一个位置开始
Randomrandom=newRandom();
intrandomX=random.nextInt(m);
intrandomY=random.nextInt(n);
//开始从随机位置dfs铺单词从index0开始
booleanresult=generateDfs(board,wordChar,randomX,randomY,0);
//如果没有找到路线那么从四个角开始必能找到一条路
if(!result){
Liststarts=Arrays.asList(newint[]{0,0},newint[]{0,n-1},newint[]{m-1,0},
newint[]{m-1,n-1});
//随机四个角的一个
Collections.shuffle(starts);
//初始化棋盘
initBoard(m,n);
//dfs铺单词
generateDfs(board,wordChar,starts.get(0)[0],starts.get(0)[1],0);
}
//查看结果
for(inti=0;i=board.length||i<0||j>=board[0].length||j<0||board[i][j]=='/'){
returnfalse;
}
//摆放一个字母
board[i][j]=wordChar[index];
//如果已经达到单词长度则直接返回找到一条路
if(index==wordChar.length-1){
returntrue;
}
//记录当前矩阵元素
chartmp=board[i][j];
//修改为/表示已经访问过
board[i][j]='/';
//向上下左右四个方向开启递归
//查看能走几个方向随机选择一个
Listdirections=Arrays.asList(newint[]{-1,0},newint[]{1,0},newint[]{0,-1},newint[]{0,1});
Collections.shuffle(directions);
booleanres=false;
for(intk=0;k
运行结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。