java实现单词搜索迷宫游戏

这篇文章主要介绍了java实现单词搜索迷宫游戏,实例分析了迷宫游戏的实现技巧,需要的朋友可以参考下

本文实例讲述了java实现单词搜索迷宫游戏。分享给大家供大家参考。具体分析如下:

我们在杂志上,经常能够看到找单词的小游戏,在一个二维表格中,存在各种字母,我们可以从八个方向找单词。这个用计算机处理十分方便,但是,算法的好坏很重要,因为要是用蛮力算法实现,那么耗费的时间是不可想象的。

这是数据结构与问题求解Java语言描述一书中给的实现思路

完整代码如下,注释写的很明白了

 import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStreamReader; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 单词搜索迷宫 * * */ public class WordSearch { /** * 在构造函数中构造两个输入流,单词的输入流,和表格的输入流 * */ public WordSearch( ) throws IOException { puzzleStream = openFile( "输入表格文件路径:" ); wordStream  = openFile( "输入单词文件路径:" ); System.out.println( "文件读取中..." ); readPuzzle( ); readWords( ); } /** * @return matches 共有多少个单词匹配 * 按照每个位置从八个方向搜索 * rd 表示行上得增量,eg:rd=-1,表示向上一行 * cd 表示列上得增量  eg:cd=-1。表示向左一步 * 所以rd=1,cd=0表示南 * rd=-1,cd=0表示北, * rd=-1,cd=1,表示东北 */ public int solvePuzzle( ) { int matches = 0; for( int r = 0; r = 0 && j >= 0 && i  puzzleLines = new ArrayList( ); if( ( oneLine = puzzleStream.readLine( ) ) == null ) throw new IOException( "No lines in puzzle file" ); columns = oneLine.length( ); puzzleLines.add( oneLine ); while( ( oneLine = puzzleStream.readLine( ) ) != null ) { if( oneLine.length( ) != columns ) System.err.println( "Puzzle is not rectangular; skipping row" ); else puzzleLines.add( oneLine ); } rows = puzzleLines.size( ); theBoard = new char[ rows ][ columns ]; int r = 0; for( String theLine : puzzleLines ) theBoard[ r++ ] = theLine.toCharArray( ); } /** * 读取已经按照字典排序的单词列表 */ private void readWords( ) throws IOException { List words = new ArrayList( ); String lastWord = null; String thisWord; while( ( thisWord = wordStream.readLine( ) ) != null ) { if( lastWord != null && thisWord.compareTo( lastWord ) <0 ) { system.err.println( "没有按照字典顺序排序,此次跳过" ); continue; } words.add( thisword.trim() lastword=thisWord; thewords string[ words.size( ]; words.toarray(>

希望本文所述对大家的java程序设计有所帮助。

以上就是java实现单词搜索迷宫游戏的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java