java迷宮代碼及注釋 JAVA迷宮

java老鼠迷宮代碼難嗎

非常難。思路:

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),績(jī)溪網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:績(jī)溪等地區(qū)???jī)溪做網(wǎng)站價(jià)格咨詢:028-86922220

1、設(shè)老鼠的行進(jìn)路線都是優(yōu)先選擇下-右-上-左。

2、設(shè)老鼠很聰明,走過(guò)的路線走撒泡尿,表示鼠大爺?shù)酱艘挥?,我們可以把?shù)組的值改為3,表示走過(guò),但走不通。

3、這是一個(gè)int[8][8]的二位數(shù)組,那么開(kāi)始位置下標(biāo)是1,1,結(jié)束位置是6,6。行和列分別用、j表示。

4、實(shí)際路線我們可以設(shè)置2表示,我們可以使用遞歸,讓老鼠不斷測(cè)試路線。

5、最后打印數(shù)組,看老鼠的實(shí)際路線。

java 怎樣給源代碼添加注釋

1、單行(single-line)--短注釋://…… 單獨(dú)行注釋:在代碼中單起一行注釋, 注釋前最好有一行空行,并與其后的代碼具有一樣的縮進(jìn)層級(jí)。如果單行無(wú)法完成,則應(yīng)采用塊注釋。 注釋格式:/* 注釋內(nèi)容 */ 行頭注釋:在代碼行的開(kāi)頭進(jìn)行注釋。主要為了使該行代碼失去意義。 注釋格式:// 注釋內(nèi)容 行尾注釋:尾端(trailing)--極短的注釋,在代碼行的行尾進(jìn)行注釋。一般與代碼行后空8(至少4)個(gè)格,所有注釋必須對(duì)齊。 注釋格式:代碼 + 8(至少4)個(gè)空格 + // 注釋內(nèi)容 2、塊(block)--塊注釋:/*……*/ 注釋若干行,通常用于提供文件、方法、數(shù)據(jù)結(jié)構(gòu)等的意義與用途的說(shuō)明,或者算法的描述。一般位于一個(gè)文件或者一個(gè)方法的前面,起到引導(dǎo)的作用,也可以根據(jù)需要放在合適的位置。這種域注釋不會(huì)出現(xiàn)在HTML報(bào)告中。注釋格式通常寫成: /* * 注釋內(nèi)容 */ 3、文檔注釋:/**……*/ 注釋若干行,并寫入javadoc文檔。每個(gè)文檔注釋都會(huì)被置于注釋定界符 /**......*/ ...

c++編寫一個(gè)迷宮游戲,求完整代碼。最好能有適當(dāng)?shù)淖⑨尅?/h2>

#include stdio.h

#include iostream

#include conio.h

#include windows.h

#include time.h

using namespace std;

#define Height 25//高度,必須為奇數(shù)

#define Width 25 //寬度,必須為奇數(shù)

#define Wall 1 //用1表示墻

#define Road 0 //用0表示路

#define Start 2

#define End 3

#define up 72

#define down 80

#define left 75

#define right 78

#define flag 5

int map[Height+2][Width+2];

int x=2,y=1; //玩家當(dāng)前位置,剛開(kāi)始在入口處

class Migong

{

public:

void gotoxy(int x,int y); //移動(dòng)坐標(biāo)的函數(shù)聲明

void shengcheng(int x,int y); //隨機(jī)生成迷宮的函數(shù)聲明

void display(int x,int y); //顯示迷宮的函數(shù)聲明

void chushi(); //初始化迷宮的函數(shù)聲明

};

class Wanjia:public Migong //玩家類由迷宮類派生來(lái)

{

public:

void gonglue(int x,int y);

void shang(int x,int y);

void xia(int x,int y);

void zuo(int x,int y);

void you(int x,int y);

void game(); //游戲運(yùn)行包括移動(dòng)的函數(shù)聲明

};

void Migong::gotoxy(int x,int y) //移動(dòng)坐標(biāo) 這是使光標(biāo) 到(x,y)這個(gè)位置的函數(shù).調(diào)用 COORD 需要#include.

{

COORD coord;

coord.X=x;

coord.Y=y;

SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );

}

void Migong::shengcheng(int x,int y) //隨機(jī)生成迷宮

{

int c[4][2]={0,1,1,0,0,-1,-1,0}; //四個(gè)方向 //數(shù)組c 0 1 向右

// 1 0 向下

// -1 0 向上

// 0 -1 向左

int i,j,t;

//將方向打亂

for(i=0;i4;i++)

{

j=rand()%4; //隨機(jī)生成j

t=c[i][0];c[i][0]=c[j][0];c[j][0]=t; //將c[i][0]和c[j][0]交換

t=c[i][1];c[i][1]=c[j][1];c[j][1]=t; //類似上

}

map[x][y]=Road; //當(dāng)前位置設(shè)為路

for(i=0;i4;i++) //沿四個(gè)方向設(shè)置

if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) //沿c[i][0]、c[i][1]方向前2步如果是墻

{

map[x+c[i][0]][y+c[i][1]]=Road; //讓該方向前一步設(shè)為路

shengcheng(x+2*c[i][0],y+2*c[i][1]); //在該方向前兩步繼續(xù)生成地圖 因?yàn)檫@里是遞歸函數(shù),當(dāng)執(zhí)行到最后一點(diǎn)發(fā)現(xiàn)都不能走的時(shí)候,

//會(huì)返回到上一個(gè)函數(shù),也就是上一個(gè)點(diǎn),再次判斷是否可以產(chǎn)生地圖 ,知道地圖上所有點(diǎn)被遍歷完。

}

}

void Migong::display(int x,int y) //顯示迷宮

{

gotoxy(2*y-2,x-1);

switch(map[x][y])

{

case Start:

cout"入";break; //顯示入口

case End:

cout"出";break; //顯示出口

case Wall:

cout"■";break; //顯示墻

case Road:

cout" ";break; //顯示路

case up:

cout"↑";break; //在攻略中的標(biāo)記 下同

case down:

cout"↓";break;

case left:

cout"←";break;

case right:

cout"→";break;

case flag:

cout" ";break; //標(biāo)記,防止攻略遍歷時(shí)候無(wú)線循環(huán)

}

}

void Migong::chushi()

{

int i,j;

srand((unsigned)time(NULL)); //初始化隨機(jī)種子

for(i=0;i=Height+1;i++)

for(j=0;j=Width+1;j++)

if(i==0||i==Height+1||j==0||j==Width+1) //初始化迷宮 默認(rèn)四周是路

map[i][j]=Road;

else map[i][j]=Wall;

shengcheng(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1)); //從隨機(jī)一個(gè)點(diǎn)開(kāi)始生成迷宮,該點(diǎn)行列都為偶數(shù)

for(i=0;i=Height+1;i++) //邊界處理 把最開(kāi)始默認(rèn)為路的堵上,以免跑出迷宮

{

map[i][0]=Wall;

map[i][Width+1]=Wall;

}

for(j=0;j=Width+1;j++) //邊界處理

{

map[0][j]=Wall;

map[Height+1][j]=Wall;

}

map[2][1]=Start; //給定入口

map[Height-1][Width]=End; //給定出口

for(i=1;i=Height;i++) //i初始為1,結(jié)束為height,以免畫出外圍

for(j=1;j=Width;j++) //畫出迷宮 同上

display(i,j);

}

void Wanjia::game()

{

int x=2,y=1; //玩家當(dāng)前位置,剛開(kāi)始在入口處

int c; //用來(lái)接收按鍵

while(1)

{

gotoxy(2*y-2,x-1);

cout"☆"; //畫出玩家當(dāng)前位置

if(map[x][y]==End) //判斷是否到達(dá)出口

{

gotoxy(30,24); //到達(dá)此坐標(biāo)

cout"到達(dá)終點(diǎn),按任意鍵結(jié)束";

getch();

break;

c=getch();

}

if(c!=-32)

{

c=getch();

switch(c)

{

case 72: //向上走

if(map[x-1][y]!=Wall)

{

display(x,y);

x--;

}

break;

case 80: //向下走

if(map[x+1][y]!=Wall)

{

display(x,y);

x++;

}

break;

case 75: //向左走

if(map[x][y-1]!=Wall)

{

display(x,y);

y--;

}

break;

case 77: //向右走

if(map[x][y+1]!=Wall)

{

display(x,y);

y++;

}

break;

case 112: //按下P

gonglue(2,1);break; //如果按下P執(zhí)行攻略函數(shù)

}

}

}

}

void Wanjia::shang(int x,int y)

{

if(map[x][y]==End) //判斷是否到達(dá)出口

{

gotoxy(52,20); //到達(dá)此坐標(biāo)

cout"到達(dá)終點(diǎn),按任意鍵結(jié)束";

getch();

exit(0);

}

if(map[x-1][y]!=Wallmap[x-1][y]!=upmap[x-1][y]!=downmap[x-1][y]!=leftmap[x-1][y]!=rightmap[x-1][y]!=flag)

{ //當(dāng)移動(dòng)后的下一個(gè)位置沒(méi)有被走過(guò)且不是墻

map[x][y]=up;

display(x,y);

x--;

gonglue(x,y); //遞歸,攻略下一個(gè)點(diǎn)

}

}

void Wanjia::xia(int x,int y)

{

if(map[x][y]==End) //判斷是否到達(dá)出口

{

gotoxy(52,20); //到達(dá)此坐標(biāo)

cout"到達(dá)終點(diǎn),按任意鍵結(jié)束";

getch();

exit(0);

}

if(map[x+1][y]!=Wallmap[x+1][y]!=upmap[x+1][y]!=downmap[x+1][y]!=leftmap[x+1][y]!=rightmap[x+1][y]!=flag) //當(dāng)移動(dòng)后的下一個(gè)位置沒(méi)有被走過(guò)且不是墻

{

map[x][y]=down;

display(x,y);

x++;

gonglue(x,y); //遞歸,攻略下一個(gè)點(diǎn)

}

}

void Wanjia::zuo(int x,int y)

{

if(map[x][y]==End) //判斷是否到達(dá)出口

{

gotoxy(52,20); //到達(dá)此坐標(biāo)

cout"到達(dá)終點(diǎn),按任意鍵結(jié)束";

getch();

exit(0);

}

if(map[x][y-1]!=Wallmap[x][y-1]!=upmap[x][y-1]!=downmap[x][y-1]!=leftmap[x][y-1]!=rightmap[x][y-1]!=flag) //當(dāng)移動(dòng)后的下一個(gè)位置沒(méi)有被走過(guò)且不是墻

{

map[x][y]=left;

display(x,y);

y--;

gonglue(x,y); //遞歸,攻略下一個(gè)點(diǎn)

}

}

void Wanjia::you(int x,int y)

{

if(map[x][y]==End) //判斷是否到達(dá)出口

{

gotoxy(52,20); //到達(dá)此坐標(biāo)

cout"到達(dá)終點(diǎn),按任意鍵結(jié)束";

getch();

exit(0);

}

if(map[x][y+1]!=Wallmap[x][y+1]!=upmap[x][y+1]!=downmap[x][y+1]!=leftmap[x][y+1]!=rightmap[x][y+1]!=flag) //當(dāng)移動(dòng)后的下一個(gè)位置沒(méi)有被走過(guò)且不是墻

{

map[x][y]=right;

display(x,y);

y++;

gonglue(x,y); //遞歸,攻略下一個(gè)點(diǎn)

}

}

void Wanjia::gonglue (int x,int y)

{

gotoxy(2*y-2,x-1);

cout"☆"; //畫出玩家當(dāng)前位置

if(map[x][y]==End) //判斷是否到達(dá)出口

{

gotoxy(52,20); //到達(dá)此坐標(biāo)

cout"到達(dá)終點(diǎn),按任意鍵結(jié)束";

getch();

exit(0);

}

shang(x,y); //上下左右

xia(x,y);

zuo(x,y);

you(x,y);

map[x][y]=flag; //當(dāng)上下左右都無(wú)法走的時(shí)候,即為死路,因?yàn)檫f歸函數(shù)開(kāi)始向后,所以講死路點(diǎn)值置為flag,變成無(wú)形之墻。

display(x,y);

}

int main()

{

cout" 移動(dòng)迷宮 "endl;

cout"--------------------"endl;

cout"歡迎來(lái)到移動(dòng)迷宮游戲"endl;

cout"--------------------"endl;

cout"游戲說(shuō)明:給定一出口和入口"endl;

cout"玩家控制一個(gè)五角星(☆)從入口走到出口"endl;

cout"系統(tǒng)會(huì)記錄你所走的步數(shù)"endl;

cout"按回車進(jìn)入游戲";

cout"(按下P鍵可以獲得攻略。)";

getch();

system("cls"); //清屏函數(shù) ,清除開(kāi)始界面

Wanjia w1;

w1.chushi();

w1.game(); //開(kāi)始游戲

// w1.gonglue(2,1); //功略顯示

getch();

return 0;

}

————————————————

版權(quán)聲明:本文為CSDN博主「失落之風(fēng)」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:

喜歡的源碼拿走,把小贊贊留下

關(guān)于Java走迷宮的問(wèn)題。我已經(jīng)有相關(guān)代碼了,但是我看不懂。麻煩高手幫忙注釋一下,然后再修改點(diǎn)兒。

package 走迷宮;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

import java.util.TimerTask;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

// 迷宮

public class Maze extends JFrame implements ActionListener {

private JPanel panel;

private JPanel northPanel;

private JPanel centerPanel;

private MazeGrid grid[][];

private JButton restart;

private JButton dostart;

private int rows;// rows 和cols目前暫定只能是奇數(shù)

private int cols;

private ListString willVisit;

private ListString visited;

private LinkedListString comed;

private long startTime;

private long endTime;

public Maze() {

rows = 25;

cols = 25;

willVisit = new ArrayListString();

visited = new ArrayListString();

comed = new LinkedListString();

init();

this.setTitle("回溯法--走迷宮");

this.add(panel);

this.pack();

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void init() {

panel = new JPanel();

northPanel = new JPanel();

centerPanel = new JPanel();

panel.setLayout(new BorderLayout());

restart = new JButton("重新生成迷宮");

dostart = new JButton("開(kāi)始走迷宮");

grid = new MazeGrid[rows][cols];

centerPanel.setLayout(new GridLayout(rows, cols, 1, 1));

centerPanel.setBackground(new Color(0, 0, 0));

northPanel.add(restart);

northPanel.add(dostart);

dostart.addActionListener(this);

restart.addActionListener(this);

for (int i = 0; i grid.length; i++)

for (int j = 0; j grid[i].length; j++) {

if (j % 2 == 0 i % 2 == 0)

grid[i][j] = new MazeGrid(true, 20, 20);

else

grid[i][j] = new MazeGrid(false, 20, 20);

}

grid[0][0].setVisited(true);

grid[0][0].setPersonCome(true);

grid[0][0].setStart(true);

visited.add("0#0");

grid[rows - 1][cols - 1].setEnd(true);

grid = createMap(grid, 0, 0);

for (int i = 0; i grid.length; i++)

for (int j = 0; j grid[i].length; j++) {

grid[i][j].repaint();

centerPanel.add(grid[i][j]);

}

panel.add(northPanel, BorderLayout.NORTH);

panel.add(centerPanel, BorderLayout.CENTER);

}

/**

* 生成迷宮

*

* @param mazeGrid

* @param x

* @param y

* @return

*/

public MazeGrid[][] createMap(MazeGrid mazeGrid[][], int x, int y) {

int visitX = 0;

int visitY = 0;

if (x - 2 = 0) {

if (!mazeGrid[x - 2][y].isVisited()) {

willVisit.add((x - 2) + "#" + y);

}

}

if (x + 2 cols) {

if (!mazeGrid[x + 2][y].isVisited()) {

willVisit.add((x + 2) + "#" + y);

}

}

if (y - 2 = 0) {

if (!mazeGrid[x][y - 2].isVisited()) {

willVisit.add(x + "#" + (y - 2));

}

}

if (y + 2 rows) {

if (!mazeGrid[x][y + 2].isVisited()) {

willVisit.add(x + "#" + (y + 2));

}

}

if (!willVisit.isEmpty()) {

int visit = (int) (Math.random() * willVisit.size());

String id = willVisit.get(visit);

visitX = Integer.parseInt(id.split("#")[0]);

visitY = Integer.parseInt(id.split("#")[1]);

mazeGrid[(visitX + x) / 2][(visitY + y) / 2].setMark(true);

mazeGrid[visitX][visitY].setVisited(true);

if (!visited.contains(id)) {// 將這個(gè)點(diǎn)加到已訪問(wèn)中去

visited.add(id);

}

willVisit.clear();

createMap(mazeGrid, visitX, visitY);

} else {

if (!visited.isEmpty()) {

String id = visited.remove(visited.size() - 1);// 取出最后一個(gè)元素

visitX = Integer.parseInt(id.split("#")[0]);

visitY = Integer.parseInt(id.split("#")[1]);

mazeGrid[visitX][visitY].setVisited(true);

createMap(mazeGrid, visitX, visitY);

}

}

return mazeGrid;

}

/**

* 走迷宮

*

* @param mazeGrid

* @param x

* @param y

*/

public String goMaze(MazeGrid mazeGrid[][], int x, int y) {

int comeX = 0;

int comeY = 0;

// left

if (x - 1 = 0) {

if (mazeGrid[x - 1][y].isMark()) {

if (!comed.contains((x - 1) + "#" + y))

willVisit.add((x - 1) + "#" + y);

}

}

// right

if (x + 1 cols) {

if (mazeGrid[x + 1][y].isMark()) {

if (!comed.contains((x + 1) + "#" + y))

willVisit.add((x + 1) + "#" + y);

}

}

// up

if (y - 1 = 0) {

if (mazeGrid[x][y - 1].isMark()) {

if (!comed.contains(x + "#" + (y - 1)))

willVisit.add(x + "#" + (y - 1));

}

}

// down

if (y + 1 rows) {

if (mazeGrid[x][y + 1].isMark()) {

if (!comed.contains(x + "#" + (y + 1)))

willVisit.add(x + "#" + (y + 1));

}

}

if (!willVisit.isEmpty()) {

int visit = (int) (Math.random() * willVisit.size());

String id = willVisit.get(visit);

comeX = Integer.parseInt(id.split("#")[0]);

comeY = Integer.parseInt(id.split("#")[1]);

mazeGrid[x][y].setPersonCome(false);

mazeGrid[comeX][comeY].setPersonCome(true);

mazeGrid[x][y].repaint();

mazeGrid[comeX][comeY].repaint();

willVisit.clear();

comed.add(x + "#" + y);

} else {

if (!comed.isEmpty()) {

String id = comed.removeLast();

comeX = Integer.parseInt(id.split("#")[0]);

comeY = Integer.parseInt(id.split("#")[1]);

mazeGrid[x][y].setPersonCome(false);

mazeGrid[comeX][comeY].setPersonCome(true);

mazeGrid[x][y].repaint();

mazeGrid[comeX][comeY].repaint();

comed.addFirst(x + "#" + y);

}

}

return comeX + "#" + comeY;

}

int comeX = 0;

int comeY = 0;

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().equals("重新生成迷宮")) {

refreshMap(grid);

} else if (e.getActionCommand().equals("開(kāi)始走迷宮")) {

startTime = System.currentTimeMillis();

dostart.setVisible(false);

restart.setText("禁止刷新");

int delay = 1000;

int period = 500;// 循環(huán)間隔

java.util.Timer timer = new java.util.Timer();

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {

if (grid[rows - 1][cols - 1].isPersonCome()) {

endTime = System.currentTimeMillis();

JOptionPane.showMessageDialog(null, "已經(jīng)走出迷宮,耗時(shí)"

+ (endTime - startTime) / 1000 + "秒", "消息提示",

JOptionPane.ERROR_MESSAGE);

this.cancel();

restart.setText("重新生成迷宮");

} else {

String id = goMaze(grid, comeX, comeY);

comeX = Integer.parseInt(id.split("#")[0]);

comeY = Integer.parseInt(id.split("#")[1]);

}

}

}, delay, period);

}

}

/**

* 刷新地圖

*/

public void refreshMap(MazeGrid mazeGrid[][]) {

comeX = 0;

comeY = 0;

willVisit.clear();

visited.clear();

comed.clear();

this.remove(panel);

init();

this.add(panel);

this.pack();

this.setVisible(true);

}

public static void main(String args[]) {

long start = System.currentTimeMillis();

new Maze();

long end = System.currentTimeMillis();

System.out.println("使用ArrayList生成迷宮耗時(shí):" + (end - start) + "毫秒");

}

}

JAVA代碼,幫忙加點(diǎn)注釋,分不多了

/**

* 在該類中創(chuàng)建了服務(wù)器端的ServerSocket,

* 當(dāng)有客戶發(fā)出連接服務(wù)器的請(qǐng)求時(shí),

* 生成與客戶端進(jìn)行通信的Socket對(duì)象。

*/

public class MultiServer {

public static void main(String args[]) throws IOException {

System.out.println("建立并等等待連接......");

// 創(chuàng)建 服務(wù)器端 ServerSocket 監(jiān)聽(tīng)5500端口

ServerSocket serverSocket = new ServerSocket(5500);

// 初始化是個(gè)socket對(duì)象

Socket connectToClient = null;

while (true) {

// 等待客戶端的連接 獲得客戶端Socket

connectToClient = serverSocket.accept();

new ServerThread(connectToClient);

}

}

}

你這while方法沒(méi)break,你確定沒(méi)問(wèn)題?

JAVA數(shù)據(jù)結(jié)構(gòu)迷宮求解!

#includestdio.h

#includegraphics.h

#includeconio.h

typedef struct{

int x,y;

int dir;

}pos,elem;

typedef struct{

elem* b,* t;

int size;

}stack;

void initstack(stack* s)

{

s-b=(elem*)malloc(50*sizeof(elem));

if(s-b){

s-t=s-b;

s-size=50;

return;

}

exit(0);

}

void push(stack* s,elem* e)

{

*s-t=*e;

s-t++;

}

void pop(stack* s,elem* e)

{

*e=*--s-t;

}

void gettop(stack* s,elem* e)

{

*e=*(s-t-1);

}

void clearstack(stack* s)

{

s-t=s-b;

}

int stackempty(stack* s)

{

return !(s-t-s-b);

}

int destroystack(stack* s)

{

free(s-b);

free(s);

return 1;

}

int mg[10][10]={

{-1,-0,-1,-1,-1,-1,-1,-1,-1,-1},

{-1,-0,-0,-0,-1,-0,-0,-0,-0,-1},

{-1,-0,-1,-0,-1,-0,-1,-1,-0,-1},

{-1,-0,-1,-1,-0,-0,-0,-0,-0,-1},

{-1,-0,-0,-1,-0,-1,-1,-0,-0,-1},

{-1,-0,-0,-0,-0,-0,-1,-0,-0,-1},

{-1,-0,-1,-0,-0,-0,-0,-1,-0,-1},

{-1,-0,-1,-1,-0,-0,-0,-1,-0,-1},

{-1,-0,-0,-0,-1,-0,-0,-1,-0,-0},

{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}

};

void step(stack* s,pos* cur,stack* result);

void savepath(stack* s,pos* cur,stack* result);

void draw(int y,int x);

void step(stack* s,pos* cur,stack* result)

{

if(stackempty(result)||s-t-s-bresult-t-result-b){

for(cur-dir++;cur-dir5;cur-dir++){

setfillstyle(SOLID_FILL,15);

switch(cur-dir){

case 1:

if(!mg[cur-y-1][cur-x]){

mg[cur-y][cur-x]=1;

push(s,cur);

cur-y--;

cur-dir=0;

draw(cur-y,cur-x);

return;

}

break;

case 2:

if(!mg[cur-y][cur-x+1]){

mg[cur-y][cur-x]=1;

push(s,cur);

cur-x++;

cur-dir=0;

draw(cur-y,cur-x);

return;

}

break;

case 3:

if(!mg[cur-y+1][cur-x]){

mg[cur-y][cur-x]=1;

push(s,cur);

cur-y++;

cur-dir=0;

draw(cur-y,cur-x);

return;

}

break;

case 4:

if(!mg[cur-y][cur-x-1]){

mg[cur-y][cur-x]=1;

push(s,cur);

cur-x--;

cur-dir=0;

draw(cur-y,cur-x);

return;

}

break;

default:

exit(0);

}

}

}

mg[cur-y][cur-x]=0;

setfillstyle(SOLID_FILL,0);

draw(cur-y,cur-x);

pop(s,cur);

}

void savepath(stack* s,pos* cur,stack* result)

{

pos* top=s-t;

if(stackempty(result)){

push(result,cur);

while(tops-b)

push(result,--top);

}

else if(result-t-result-bs-t-s-b){

clearstack(result);

push(result,cur);

while(tops-b)

push(result,--top);

}

}

void draw(int y,int x)

{

bar(100+15*x,100+15*y,115+15*x,115+15*y);

}

void main(void)

{

int i;

int x,y;

int gd=DETECT,gm;

stack* s=NULL;

stack* result=NULL;

pos* cur=NULL;

initgraph(gd,gm,"");

for(x=0;x10;x++)

for(y=0;y10;y++){

if(mg[y][x]){

setfillstyle(SOLID_FILL,3);

draw(y,x);

}

}

result=(stack*)malloc(sizeof(stack));

initstack(result);

s=(stack*)malloc(sizeof(stack));

cur=(pos*)malloc(sizeof(pos));

initstack(s);

cur-x=1;

cur-y=0;

cur-dir=0;

push(s,cur);

cur-x=1;

cur-y=1;

cur-dir=1;

do{

if(cur-x==9cur-y==8)

savepath(s,cur,result);

step(s,cur,result);

}while(!stackempty(s));

if(stackempty(result))

printf("no way available");

else{

int ch=0;

printf("following is the shortest path:\n");

while(!stackempty(result)){

pop(result,cur);

setfillstyle(SOLID_FILL,15);

draw(cur-y,cur-x);

if(ch5){

putchar('\n');

ch=0;

}

printf("(%d,%d,%d) ",cur-x,cur-y,cur-dir);

ch++;

}

}

printf("\n");

destroystack(s);

destroystack(result);

free(cur);

printf("Press any key to end");

while(!kbhit());

closegraph();

}

新聞名稱:java迷宮代碼及注釋 JAVA迷宮
文章起源:http://muchs.cn/article16/hgidgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、ChatGPT、商城網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)