#includestdio.h
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)聶榮,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
#includeconio.h
int migong[10][10]= //設(shè)置迷宮,最外圍1為墻 里邊0為可走路徑 1為障礙
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,0,0,1,1,1},
{1,0,1,1,1,1,1,0,0,1},
{1,0,1,0,0,0,0,0,0,1},
{1,0,0,0,1,0,1,1,1,1},
{1,1,1,1,0,0,1,1,1,1},
{1,0,0,0,0,1,1,1,1,1},
{1,0,1,1,0,0,1,1,1,1},
{1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1}
};
int num;
struct
{
int x,y,d;
}lj[100];//x,y分別為垂直和水平方向
void start()
{
int top=0,x,y,d,find;//d為設(shè)置方向,上下左右。find為設(shè)置找不找得到路
lj[top].x=1;
lj[top].y=1;
migong[1][1]=-1;
find=0;d=-1;
while(top-1){
if(lj[top].x==8lj[top].y==8)
{
printf("迷宮路徑如下:\n");
printf("start-");
for(x=0;x=top;x++)
{
printf("(%d,%d)- ",lj[x].x,lj[x].y);//把找到的路徑輸出
num++;
if(num%8==0)
printf("\n");
}
printf("-end!\n");
}
while(d4find==0){
d++;
switch(d){
case 0:x=lj[top].x-1; y=lj[top].y; break;//方向為上
case 1:x=lj[top].x; y=lj[top].y+1;break;//方向為右
case 2:x=lj[top].x+1; y=lj[top].y; break;//方向為下
case 3:x=lj[top].x; y=lj[top].y-1;}//方向為左
if(migong[x][y]==0)
find=1;
}
if(find==1){ //判斷是否找得到
lj[top].d=d;
top++;
lj[top].x=x;
lj[top].y=y;
d=-1;find=0; //重新調(diào)整方向
migong[x][y]=-1;}
else{
migong[lj[top].x][lj[top].y]=0;
top--;d=lj[top].d; //找不到的話退棧
}
}
}
void main()
{
start();
getch();
}
自己適當改一下下列程序迷宮的大小即可
#include?stdio.h
#include?stdlib.h
#define?MAXMATRIXSIZE?12
#define?MAXSTACKSIZE?12
#define?EXITROW?10
#define?EXITCOL?10
int?Maze[MAXMATRIXSIZE][MAXMATRIXSIZE];
int?FALSE=0;
int?TRUE=1;
typedef?struct?
{
short?int?Vert,Horiz;
}?Offsets;
Offsets?Move[8]={{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}};
typedef?struct
{
short?int?Row,Col,Dir;
}?ElementType;
typedef?struct?
{
ElementType?Data[MAXSTACKSIZE];
int?Top;?
}?Stack;
void?Push(?Stack?*PtrS,?ElementType?item?)
{
if?(?PtrS-Top?==?MAXSTACKSIZE-1?)?{
printf("堆棧滿");
return;
}
else?{
PtrS-Data[++(PtrS-Top)]?=?item;
return;
}
}
ElementType?Pop(?Stack?*PtrS?)
{????
ElementType?ERROR;
ERROR.Col?=-1;ERROR.Row?=-1;ERROR.Dir?=-1;
if?(?PtrS-Top?==?-1?)?{
printf("堆???);
return?ERROR?;?/*?ERROR是ElementType的特殊值,標志錯誤?*/
}
else?
return?(?PtrS-Data[(PtrS-Top)--]?);
}
void?Path(?)
{?
int?i,?Row,?Col,?NextRow,?NextCol,?Dir,?Found?=?FALSE;
int?Mark[MAXMATRIXSIZE][MAXMATRIXSIZE];?/*?標記位置是否走過?*/
ElementType?Position;
Stack?S;
S.Top?=?-1;??/*?堆棧初始化為空?*/
Mark[1][1]?=?1;??????/*?從入口位置開始,標記為走過?*/
/*?將入口位置及下一個方向放入堆棧?*/
S.Top++;
S.Data[S.Top].Row?=?1;
S.Data[S.Top].Col?=?1;
S.Data[S.Top].Dir?=?2;?
/*?注意:不可能從入口向北走,所以方向序號從2開始,即從向東開始?*/
while?(?S.Top??-1??!Found?)?{?/*?當棧非空且沒找到出口時?*/
Position?=?Pop(S);?/*?取出棧頂元素為當前位置?*/
Row?=?Position.Row;?Col?=?Position.Col;?Dir?=?Position.Dir;
while?(?Dir??8??!Found?)?{/*?當還有方向可探且沒找到出口時?*/
/*嘗試往下一個方向Dir移動?*/
NextRow?=?Row?+?Move[Dir].Vert;
NextCol?=?Col?+?Move[Dir].Horiz;
if?(?NextRow?==?EXITROW??NextCol?==?EXITCOL?)??
/*?如果到出口?*/
Found?=?TRUE;
else??/*?下一個位置不是出口?*/
if?(?!Maze[NextRow][NextCol]??!Mark[NextRow][NextCol]?){
/*?若下一個位置可通,且沒走過?*/
Mark[NextRow][NextCol]?=?1;?/*?標記為走過?*/
Position.Row?=?Row;
Position.Col?=?Col;
Position.Dir?=?Dir?+?1;
Push(S,?Position);??/*?當前位置和下一個方向存入棧?*/
/*?更新當前位置,從方向0開始?*/
Row?=?NextRow;?Col?=?NextCol;?Dir?=?0;
}?/*?結(jié)束if?*/
else?++Dir;?/*?若此路不通,則在當前位置嘗試下一個方向?*/
}?/*?結(jié)束8方向探測?*/
}?/*?結(jié)束搜索?*/
if?(?Found?)?{????/*?找到一個路徑,并輸出該路徑?*/
printf?("The?path?is:\n");
printf?("row??col\n");
for?(?i?=?0;?i?=?S.Top;?i++?)
printf?("%d?%d\n",?S.Data[i].Row,?S.Data[i].Col);
printf?("%d?%d\n",?Row,?Col);?/*?不要忘記最后一步未入堆棧?*/
printf?("%d?%d\n",?EXITROW,?EXITCOL);?/*?打印出口?*/
}
else?/*?若沒找到路徑?*/
printf?("The?maze?does?not?have?a?path\n");
}
void?main()
{
int?i,j;
FILE?*fp;
if((fp=fopen("迷宮矩陣.txt","r"))==NULL)?{printf("文件不存在!");exit;}
for(i=0;iMAXMATRIXSIZE;i++)
{printf("\n");?
for(j=0;jMAXSTACKSIZE;j++)
{fscanf(fp,"%d",Maze[i][j]);
printf("%d?",Maze[i][j]);}
}
fclose(fp);
Path();
}
typedef struct{
int Col,Row;//迷宮的大小
int arr[Rangle][Rangle]; //0表示障礙,1表示是可走的通道,-1表示外界的圍墻
}MazeType;
void InitMaze(MazeType
M,int col,int row)
{
//按照用戶的輸入的行數(shù)row和列數(shù)col列的二維數(shù)組(元素值為1或0)
//設(shè)置迷宮的初值,加上邊緣的一圈的值
}
void PrintMaze(MazeType M)
{
//根據(jù)已經(jīng)進行二維數(shù)組的標記值來輸出迷宮(或者其通路)
}
bool Pass(MazeType M,PosType pos)
{//求解迷宮M中,從Start到end的一條路徑
//若存在則返回true,否則返回false
Stack S;
InitStack(S);
PosType curpos=start;//設(shè)置當前坐標為入口位置;
int curstep=1;
//當前的步數(shù)
bool Find=false;
//是否找到出口
ElemType e;
do{
if(Pass(M,curpos))
{
FootPrint(M,curpos);//在當前位置標記為2
e.step=1;
e.seat=curpos;
e.di=1;//初始化為向右邊位置移動
Push(S,e);
if(curpos.c==end.ccurpos.r==end.r)//如果找到了出口則終止,并返回true
{
Find=true;
return Find;
}
else{
curpos=NextPos(curpos,1);
curstep++;
}
}
else{//當前位置不能通過
if(!StackEmpty(S)){
Pop(S,e);//將已經(jīng)走過的最近位置彈出,數(shù)據(jù)保存在e中
while(e.di==4!(StackEmpty(S))){
MarkPrint(M,e.seat);//留下不能通過的標記
Pop(S,e);
curstep--;
}//while
if(e.di4)//不能通過則改變方向
{
e.di++;//方向順時針改變一下
Push(S,e);
curpos = NextPos(e.seat,e.di); //求下一個節(jié)點
}
}
}
}while(!StackEmpty(S)!Find);
//(!StackEmpty(S)!Find);//當棧不為空且沒有找到出口
return
false;//沒有找到出口則返回false
首先根據(jù)自己的需要和喜好,去素材網(wǎng)站下載ico圖標,當然這些圖標VB6.0不一定能夠直接用。
開始--打開ArtIcons Pro軟件。
打開的ArtIcons Pro軟件界面如圖所示:
“文件”--“打開”,彈出打開對話框,選擇所需修改的圖標,單擊“打開”按鈕打開圖標,在軟件中顯示出來。
在軟件右側(cè),單擊鼠標右鍵,選擇“新圖像”命令。
在打開的“新圖像格式對話框”中按照VB6.0所需的ico圖標格式進行設(shè)置:
大小選擇48X48,顏色選擇256色,其它默認,單擊“確定按鈕進行確認?!?/p>
此時按照剛剛制定的格式,生成了一個新圖像:
"文件"--“導(dǎo)出”--“當前圖像”,命名后保存。生成一個新圖標如圖所示:
隨便打開一個VB6.0工程,將剛剛生成的圖標加入到Form1的ico屬性中:
在“文件”菜單下選擇生成exe命令,在彈出的生成工程對話框中按確定按鈕,生成了一個心形圖標,非常美觀。想要生成自己喜歡的圖標都可以參照以上方法。