導航:首頁 > 編程語言 > java迷宮

java迷宮

發布時間:2022-01-23 15:14:59

❶ 如何使用java開發一個迷宮小游戲

你得知道游戲的機制
迷宮需要些什麼
畫圖如何畫
怎麼判定是否走出迷宮
是否遇到牆,此路不通
搞懂了這些流程,做起來就快了

❷ java迷宮程序代碼

qq你了

❸ 急求一個用java寫的迷宮代碼

敢問LZ哪個學校的?LZ的題目和圖跟我准備做的題目一摸一樣啊,是不是JAVA書後面的?課程設計做 圖形用戶界面與演算法設計的?

❹ 求Java關於迷宮的演算法(用棧實現)

packagecom.Albert.LabyringhStack;

publicclassPoint{
intx;
inty;
intdirection;//direction指向此點附近的一個點應該有四個編號為1234
publicintgetX(){
returnx;
}
publicvoidsetX(intx){
this.x=x;
}
publicintgetY(){
returny;
}
publicvoidsetY(inty){
this.y=y;
}

publicintgetDirection(){
returndirection;
}
publicvoidsetDirection(intdirection){
this.direction=direction;
}
publicvoidaddDirection(){
this.direction++;

}
publicPoint(){
}
publicPoint(intx,inty){
super();
this.x=x;
this.y=y;
this.direction=1;
}
publicPoint(intx,inty,intdirection){
super();
this.x=x;
this.y=y;
this.direction=direction;
}

}
packagecom.Albert.LabyringhStack;

importjava.util.*;

publicclassLabyringhStack{

publicPointS;
publicPointF;
char[][]mazemap;
Stack<Point>path;

publicLabyringhStack(){
}
publicLabyringhStack(char[][]ma){//初始化存入數組
this.mazemap=newchar[ma.length][ma[0].length];
for(inti=0;i<ma.length;i++){
for(intj=0;j<ma[0].length;j++){//mazemap[0]必須有元素不可為空
this.mazemap[i][j]=ma[i][j];
}
}
S=returnPlace('S');
F=returnPlace('F');
}
publicPointreturnPlace(chars){//返回數組中字元的位置
Pointpoint=newPoint();
for(inti=0;i<this.mazemap.length;i++){
for(intj=0;j<this.mazemap[0].length;j++){//mazemap[0]必須有元素不可為空
if(this.mazemap[i][j]==s)
{point.setX(i);
point.setY(j);
point.setDirection(1);
}
}
}
returnpoint;
}
publiccharreturnChar(Pointpoint){
if(point.getX()>=0&&point.getY()>=0)
returnthis.mazemap[point.getX()][point.getY()];
else
return'#';
}
publicvoidreplacePlace(Pointpoint,chars){//更改特定位置處的字元
mazemap[point.getX()][point.getY()]=s;
}
publicvoidprintPath(){
Stack<Point>tempPath=newStack<Point>();
while(!path.empty()){//對棧進行反序
tempPath.push(path.pop());
}
while(!tempPath.empty()){
System.out.print("("+tempPath.peek().getX()+","+tempPath.pop().getY()+")");
}
}
publicbooleangetPath(){//取得路徑的演算法如果有路徑就返回真
path=newStack<Point>();
S.setDirection(1);
path.push(S);
replacePlace(S,'X');
while(!path.empty()){
PointnowPoint=path.peek();//取得當前位置
if(nowPoint.getX()==F.getX()&&nowPoint.getY()==F.getY()){
//printPath();
returntrue;
}
Pointtemp=newPoint();//存放下一個可走的位置
intfind=0;//標志是否可向下走
while(nowPoint.getDirection()<5&&find==0){
switch(nowPoint.getDirection()){
case1:temp=newPoint(nowPoint.getX(),nowPoint.getY()-1,1);break;//取得當前位置左邊的位置
case2:temp=newPoint(nowPoint.getX()+1,nowPoint.getY(),1);break;//取得當前位置下邊的位置
case3:temp=newPoint(nowPoint.getX(),nowPoint.getY()+1,1);break;//取得當前位置右邊的位置
case4:temp=newPoint(nowPoint.getX()-1,nowPoint.getY(),1);break;//取得當前位置上邊的位置
}
nowPoint.addDirection();//指向下一個需要驗證的點
if(returnChar(temp)=='O'||returnChar(temp)=='F')find=1;//如果能向下走則置為1
}
if(find==1){//如果可走就進棧
replacePlace(temp,'X');//設置成X防止回走
// printArr();
path.push(temp);
}else{//如果不可走就退棧
replacePlace(nowPoint,'O');
path.pop();
}
}
returnfalse;
}
publicvoidprintArr(){
for(inti=0;i<mazemap.length;i++){
for(intj=0;j<mazemap[0].length;j++){//mazemap[0]必須有元素不可為空
System.out.print(mazemap[i][j]);
}
System.out.println();
}
System.out.println();
}

}
packagecom.Albert.LabyringhStack;

publicclassMain{

/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
char[][]mazemap={
{'M','M','M','M','M','M','M','M'},
{'M','S','O','O','M','M','M','M'},
{'M','M','M','O','M','M','M','M'},
{'M','M','O','O','O','O','M','M'},
{'M','M','M','M','M','F','M','M'},
{'M','M','M','M','M','M','M','M'},
{'M','M','M','M','M','M','M','M'}
};
LabyringhStacksolution=newLabyringhStack(mazemap);
if(solution.getPath()){
System.out.print("迷宮路徑如下:");
solution.printPath();
}
else{
System.out.println("沒有可走的路");
}
}
}

❺ java棧實現走迷宮

首先,你要知道走迷宮的思路:就是遇到岔路都往一個方向,比如往右,遇到死路就回頭,回頭遇到岔路繼續往右。

❻ Java迷宮的游戲

這個太簡單了。。我用類C的代碼寫給你看看。。。直接手寫的,不調試了
,誰讓你就給這點分呢。。。。其實分啥都不是。。。

其實就是搜索,為了簡單我就用深度優先了

int dir[4][2]={
{1,0},
{-1,0},
{0,1},
{0,-1}
};//用來控制方向的數組
int flag = 0;
int map[][];//這個就是你的迷宮

void dfs( int x, int y ){
if( flag ){
return;
}
map[x][y] = 0;
for(int i = 0; i < 4; i++ ){
int dx = x + dir[i][0];
int dy = y + dir[i][1];
if( 0 <= dx && dx < 行數 && 0 <= dy && dy < 列數 && map[dx][dy] == 1 ){
dfs(dx,dy);
}
}
map[x][y] = 1;
}

這個就是回溯函數了。。。。

❼ java怎麼生成迷宮地圖

//作者:zhongZw

❽ Java解決迷宮問題

以一個M×N的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計一個程序,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。
(1) 根據二維數組,輸出迷宮的圖形。
(2) 探索迷宮的四個方向:RIGHT為向右,DOWN向下,LEFT向左,UP向上,輸出從入口到出口的行走路徑。

❾ java迷宮圖形界面

這是我之前課程設計做的一個迷宮,Swing做的,發在javaeye的博客上了,有打包成jar的,安裝了jdk可以直接雙擊運行,有源碼,還有我寫的一個說明文檔,網址如下:
http://zpsailor.javaeye.com/admin/blogs/651141
自己下載下吧,我就不給你發到郵箱了。

閱讀全文

與java迷宮相關的資料

熱點內容
java字元串追加字元串 瀏覽:186
我的世界如何破壞東西可以激活命令方塊 瀏覽:73
程序員那麼可愛大結局幾時播 瀏覽:87
光遇一個號怎麼弄小號安卓 瀏覽:826
擊掌解壓教學視頻 瀏覽:323
數控車床加工編程技術視頻 瀏覽:99
dns最好的伺服器是什麼 瀏覽:63
下載運行的app後台怎麼撤出來 瀏覽:98
網易我的世界怎麼加材質給伺服器 瀏覽:762
app舊版本不更新怎麼操作 瀏覽:370
如何編譯ddwrt 瀏覽:65
命令行讀文件 瀏覽:352
phpjson轉多維數組 瀏覽:912
linuxboot修復 瀏覽:845
程序在線編譯系統的設計與實現 瀏覽:722
電腦c盤記錄存在哪個文件夾 瀏覽:157
演算法分析與設計替換方法 瀏覽:850
老程序員丟失手機 瀏覽:274
新世紀日本語pdf 瀏覽:87
基於單片機的數字示波器 瀏覽:38