?? “迷宮探險”游戲設計說明(5).txt
字號:
“迷宮探險”游戲設計詳細說明(5)
__________________________________________________
| |__☆★
| 上海財經大學圖書館 陳暢 | |_
| http://shchenchang.top263.net | ||
| 編程軟件,我的原創作品(含源碼和詳細說明) | ||
| mail:shufechenchang@263.net | ||
|_______QQ:7019717(歡迎編程愛好者加我為好友)_____| ||
|________________________________________________||
☆☆|_______________________________________________|
關于“迷宮探險”程序的一些問題:
******************************************************
Turbo C 中怎樣設置圖形顯示?
Turbo C 中常用圖形函數的用法?
怎樣獲取鍵盤輸入?
迷宮的數據表示法?
怎樣隨機生成一個從入口至出口只有唯一通路的迷宮?
你是怎樣知道生成的迷宮從入口至出口肯定只有唯一通路的?
入口和出口必須在左上角和右下角嗎?
迷宮通路的數據表示法?
怎樣才能找到從入口到出口的那條唯一通路?
對我程序的注解。
******************************************************
■對我程序的注解(二)
☆主函數很短,我就把它貼在下邊,來個全解吧。
int main(void)
{
/* mazewidth和mazeheight為新迷宮的寬度和高度 */
/* success標記玩家是否到達迷宮終點 */
int mazewidth=8,mazeheight=6,success=0;
/* oldw和oldh表示迷宮原有的大小 */
int oldw,oldh;
/* 隨機初始化 */
randomize();
/* trace記錄玩家在迷宮中走過的路線 */
TwoDimensionArray trace(mazewidth,mazeheight);
/* cur記錄玩家在迷宮中的位置 */
Point cur(0,0);
/* 新建一個迷宮 */
Maze m(mazewidth,mazeheight);
int i,j,key;
/* 設置玩家在迷宮的左上角(起點) */
trace.Set(0,0,1);
/* 繪制界面 */
Draw();
/* 繪制迷宮 */
DrawMaze(m);
/* 繪制迷宮的寬高 */
DrawSize(m.GetWidth(),m.GetHeight());
for(;;)
{
oldw=mazewidth; /* 記錄迷宮原來的寬度 */
oldh=mazeheight; /* 記錄迷宮原來的高度 */
while (bioskey(1)==0); /* 等待按鍵 */
key=bioskey(0); /* 獲取按鍵 */
switch(key)
{
case ESC: /* Escape 鍵退出游戲 */
goto exit;
case F1: /* F1 顯示迷宮路線 */
DrawPath(m);
break;
case F2: /* F2 鍵按當前寬、高生成新迷宮 */
m.SetSize(mazewidth,mazeheight);
case F3: /* F3 鍵繪制迷宮 */
DrawMaze(m);
/* 玩家走過的路線歸位 */
trace.SetSize(mazewidth,mazeheight);
/* 玩家回到迷宮左上角(起點) */
trace.Set(0,0,1);
/* 玩家位置回到迷宮左上角(起點) */
cur.x=0;
cur.y=0;
/* 標記玩家沒有到達迷宮終點 */
success=0;
break;
case HOME: /* HOME 鍵迷宮寬度減1 */
if (mazewidth>2) mazewidth--;
break;
case END: /* HOME 鍵迷宮寬度加1 */
if (mazewidth<MAZE_MAX_WIDTH) mazewidth++;
break;
case PAGEUP: /* PAGEUP 鍵迷宮高度減1 */
if (mazeheight>2) mazeheight--;
break;
case PGDOWN: /* PAGEDOWN 鍵迷宮高度加1 */
if (mazeheight<MAZE_MAX_HEIGHT) mazeheight++;
break;
case LEFTKEY: /* 玩家在迷宮中向左走一步 */
if (!success)
success=TraceMaze(trace,cur,m,west);
break;
case UPKEY: /* 玩家在迷宮中向上走一步 */
if (!success)
success=TraceMaze(trace,cur,m,north);
break;
case RIGHTKEY: /* 玩家在迷宮中向右走一步 */
if (!success)
success=TraceMaze(trace,cur,m,east);
break;
case DOWNKEY: /* 玩家在迷宮中向下走一步 */
if (!success)
success=TraceMaze(trace,cur,m,south);
break;
}
/* 如果迷宮大小被改變,重繪迷宮大小 */
if (oldw!=mazewidth||oldh!=mazeheight)
DrawSize(mazewidth,mazeheight);
}
exit:
return 0;
}
<未完>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -