寫了乙個小小的推箱子,
大體過程是:
當按下asdw移動後開始計算,每乙個座標下對應的數字(相當於箱子,牆,人);然後用function_show顯示出來移動後的圖。
#include
#define width 10
//地圖(陣列x)寬
#define high 10
//地圖(陣列y)高
intpan
(int d[
][width]
,int b[
2]);
//判斷有多少箱子,這裡返回乙個數gong來判斷是否通關
void
function_show
(int mag[
][width]);
//顯示移動過後的圖
void
function_succ
(int succ,
int ***)
;//判斷是否推進所有箱子,並且用了多少步
intmain()
;//0為空白,1為牆,2為箱子,3為終點,4為人。
int ry,rx,***=
0,gong,i=
0,equiv;
//他們的意義在第一次出現我都寫在下面
int a[high][2
];//儲存終點座標
gong=
pan(mag1,a)
;//共計有多少終點,並且當其為0時指所有箱子都成功推進,過關
equiv=gong;
//相同
for(
int y=
0;y++y)
//ry為當前人物y座標
else
printf
(" ");
}printf
("\n");
}
到這裡地圖基本圖形與座標就出來了,
我就用乙個for來不斷獲取鍵盤的移動資訊asdw這種
我這只有個移動過程,當通關後退出還是下一關我就沒寫了,要寫也很簡單,用個判斷句就ok,
for(;
1;)else
if(mag1[ry]
[rx+1]
!=1&&mag1[ry]
[rx+1]
==2&&mag1[ry]
[rx+2]
!=1&&mag1[ry]
[rx+2]
!=2)for
(int x=
0;x++x)
//用於判斷箱子是否推進終點
i=i+1;
//終點個數,全部羅列出來並計算
} i=0;
//每移動一次都有重新計算,所以為0
function_show
(mag1);}
//右移
else
if(k_akex==
'a')
else
if(mag1[ry]
[rx-1]
!=1&&mag1[ry]
[rx-1]
==2&&mag1[ry]
[rx-2]
!=1&&mag1[ry]
[rx-2]
!=2)for
(int x=
0;x++x)
i=i+1;
} i=0;
function_show
(mag1);}
//左移
else
if(k_akex==
'a')
else
if(mag1[ry]
[rx-1]
!=1&&mag1[ry]
[rx-1]
==2&&mag1[ry]
[rx-2]
!=1&&mag1[ry]
[rx-2]
!=2)for
(int x=
0;x++x)
i=i+1;
} i=0;
function_show
(mag1);}
//左移
else
if(k_akex==
'w')
else
if(mag1[ry-1]
[rx]!=1
&&mag1[ry-1]
[rx]==2
&&mag1[ry-2]
[rx]!=1
&&mag1[ry-2]
[rx]!=2
)for
(int x=
0;x++x)
i=i+1;
} i=0;
function_show
(mag1);}
//上移
else
if(k_akex==
's')
else
if(mag1[ry+1]
[rx]!=1
&&mag1[ry+1]
[rx]==2
&&mag1[ry+2]
[rx]!=1
&&mag1[ry+2]
[rx]!=2
)for
(int x=
0;x++x)
i=i+1;
} i=0;
function_show
(mag1);}
//下移
function_succ
(gong,***)
; gong=equiv;
//前面gong已經被減了,但是要重新計算,所以又為終點個數
}}
主體基本完成。
接下來就是三個函式。
第一
判斷有多少箱子,這裡返回乙個數gong來判斷是否通關
int
pan(
int d[
][width]
,int b[
2])}
return i;
}
第二
顯示移動過後的圖
void
function_show
(int mag1[
][width]
)printf
("\n");
}}
第三
判斷所有箱子是否在終點,並且用了多少步
void
function_succ
(int succ,
int ***)
如果有什麼小問題可以說一下,感謝各位。 C語言 推箱子
這個小遊戲設計起來不難,之所以做他的目的是,一天老師給我了個他很早以前寫的2d庫,讓我去使用這個庫完成乙個小遊戲,這個過程的意義再去讓我乙個以前從未用過別人手寫庫的學生,了解到了庫的設計結構,和如果好的使用別人的庫去完成任務,雖然程式設計難度不大,但是意義深刻,至少知道了以後遇見別人的庫是怎麼使用,...
推箱子 C語言
主要功能分析 使用switch語句實現,上下左右移動 用棧實現返回上一步操作。include include include include int map1 9 9 0代表空地 1代表牆 3代表目的地 4代表箱子 5代表人 int map2 9 9 typedef char elementtype...
C語言推箱子分析
用乙個二維陣列來表示整個地圖,我們先網上找一張地圖來分析下。分析 地圖上有 牆 目的地 箱子 人 背景牆 目的地和箱子合起來的 紅箱子 我們用數字來在二維陣列中對應的標記這些東西,二維陣列的大小就是地圖的大小咯。定義地圖大小 8 8 int map 8 8 哈哈哈,當然是初始化這個地圖咯,就是往這個...