java简单迷宫游戏代码 java写迷宫游戏( 二 )


在计算机中,字符由不同的位模式(ON 或 OFF)表示 。每个字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式 。对于使用 1 个字节存储每个字符的程序,通过给每个位模式指派字符可表示最多 256 个不同的字符 。2 个字节有 16 位,这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式 。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符 。
单字节代码页是字符定义,这些字符映射到每个字节可能有的 256 种位模式中的每一种 。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式 。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页 。
虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同 , 但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同 。如果在运行不同代码页的计算机间交换数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页 。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失 。
如果某个数据库为来自许多不同国家的客户端提供服务,则很难为该数据库选择这样一种代码页 , 使其包括所有客户端计算机所需的全部扩展字符 。而且,在代码页间不停地转换需要花费大量的处理时间 。
急求大佬帮忙写一下java程序递归的话就是深度优先搜索(可以理解成不撞南墙不回头java简单迷宫游戏代码,撞java简单迷宫游戏代码了墙就原路返回)可以加上剪枝(就是做标记,如果之前某一次走过但不通的路下次再走到就不用走了)
用栈的话应该是广度优先搜索(大概就是分裂无数个你,每次向所有方向走一步),不过广搜要用队列实现,用栈本质还是深搜了
具体算法可以搜百度
帮忙给个迷宫问题的JAVA程序,最好是用VC..粘的也好 , 只要可以运行就好..importjava.io.*;
import java.util.Stack;
classMazeCell{
intx,y;
MazeCell(){
}
MazeCell(inti,intj){
x=i;y=j;
}
booleanequals(MazeCellcell){
returnx==cell.xy==cell.y;
}
}
classMaze{
introws=0,cols=0;
char[][]store;
MazeCellcurrentCell,exitCell=newMazeCell(),entryCell=newMazeCell();
finalcharexitMarker='e',entryMarker='m',visited='.';
finalcharpassage='0',wall='1';
StackmazeStack=newStack();
Maze(){
introw=0,col=0;
StackmazeRows=newStack();
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbuffer=newBufferedReader(isr);
Stringstr;
System.out.println("Enterarectangularmazeusingthefollowing"
+"characters:\nm-entry\ne-exit\n1-wall\n0-passage\n"
+"Enteronelineatattime;endwithCtrl-z(PC)orCtrl-D(Unix):");
try{
str=buffer.readLine();
while(str!=null){
row++;
cols=str.length();
str="1"+str+"1";//put1sintheborderlinecells;
mazeRows.push(str);
if(str.indexOf(exitMarker)!=-1){
exitCell.x=row;
exitCell.y=str.indexOf(exitMarker);
}
if(str.indexOf(entryMarker)!=-1){
entryCell.x=row;
entryCell.y=str.indexOf(entryMarker);
}
str=buffer.readLine();
}
}catch(IOExceptioneof){
}
rows=row;
store=newchar[rows+2][];//createa1Darrayofchararrays;
store[0]=newchar[cols+2];//aborderlinerow;
for(;!mazeRows.isEmpty();row--)
store[row]=((String)mazeRows.pop()).toCharArray();
store[rows+1]=newchar[cols+2];//anotherborderlinerow;
for(col=0;col=cols+1;col++){
store[0][col]=wall;//filltheborderlinerowswith1s;
store[rows+1][col]=wall;
}
}
voiddisplay(PrintStreamout){
for(introw=0;row=rows+1;row++)

推荐阅读