PAGE PAGE 1C語言編寫的迷宮小游戲 源代碼# # # # # # N 20/*迷宮的大小,可改變*/int [N][N];/*遞歸用的數組,用全局變量節約時間*/int yes=0;/*yes是判斷是否找到路的標志,1找到,0沒找到*/int way[100][2],wayn=0;/*way數組是顯示路線用的,wayn是統計走了幾個格子*/void Init(void);/*圖形初始化*/void Close(void);/*圖形關閉*/void (int *x,int *y,int n);/*畫人工探索物圖*/void (int (*x)[N]);/*人工探索*/void (int (*x)[N],int (*y)[N]);/*為了8個方向的遞歸,把舊迷宮圖拷貝給新數組*/int (int (*x)[N],int i,int j);/*自動探索函數*/void (int (*x)[N]);/*隨機生成迷宮函數*/void PrMap(int (*x)[N]);/*輸出迷宮圖函數*/void (void);/*輸出結果處理*/void Find(void);/*成功處理*/void (void);/*失敗處理*/void main(void)/*主函數*/{ int map[N][N]; /*迷宮數組*/ char ch; (); ("\n hand(1) else auto\n");/*選擇探索方式*/ scanf("%c",&ch); Init(); /*初始化*/ (map);/*生成迷宮*/ PrMap(map);/*顯示迷宮圖*/ if(ch=='1')(map);/*人工探索*/ (map,1,1);/*系統自動從下標1,1的地方開始探索*/ ();/*輸出結果*/ Close();}void Init(void)/*圖形初始化*/{ int gd=,gm; (&gd,&gm,"c:\\tc");}void (int *x,int *y,int n)/*畫人工控制圖*/{/*如果將以下兩句注釋掉c語言迷宮游戲源程序,則顯示人工走過的路徑c語言迷宮游戲源程序,*/ (,WHITE); /*設置白色實體填充樣式*/ bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);/*恢復原通路*/ (n)/*判斷x,y的變化,8個方向的變化*/ {case 1: (*x)--;break; /*上*/case 2: (*x)--;(*y)++;break ;/*右上*/case 3: (*y)++;break; /*右*/case 4: (*x)++;(*y)++;break; /*右下*/case 5: (*x)++;break; /*下*/case 6: (*x)++;(*y)--;break; /*左下*/case 7: (*y)--;break; /*左*/case 8: (*x)--;(*y)--;break; /*左上*/ } (,RED);/*新位置顯示探索物*/ bar(100+(*y)*15-6,50+(*x)*15-6,100+(*y)*15+6,50+(*x)*15+6);}void (int (*map)[N])/*人工手動查找*/{ int x,y; char c=0;/*接收按鍵的變量*/ x=y=1;/*人工查找的初始位置*/ (11); line(500,200,550,200); (570,197,"d"); line(500,200,450,200); (430,197,"a"); line(500,200,500,150); (497,130,"w"); line(500,200,500,250); (497,270,"x"); line(500,200,450,150); (445,130,"q"); line(500,200,550,150); (550,130,"e"); line(500,200,450,250); (445,270,"z"); line(500,200,550,250); (550,270,"c");/*以上是畫8個方向的控制介紹*/ (); (420,290,"Press 'Enter' to end");/*壓回車鍵結束*/ (,RED); bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6);/*入口位置顯示*/ while(c!=13)/*如果按下的不是回車鍵*/ {c=getch();/*接收字符后開始各個方向的探索*/if(c=='w'&&map[x-1][y]!=1) (&x,&y,1);/*上*/else if(c=='e'&&map[x-1][y+1]!=1)(&x,&y,2);/*右上*/ (c=='d'&&map[x][y+1]!=1)(&x,&y,3);/*右*/(c=='c'&&map[x+1][y+1]!=1)Draw