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]='/'; //向上下左右四个方向开启递归 //查看能走几个方向随机选择一个 List directions=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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。