C語言寫個推箱子

2021-10-23 15:22:50 字數 3413 閱讀 5078

寫了乙個小小的推箱子,

大體過程是:

當按下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 哈哈哈,當然是初始化這個地圖咯,就是往這個...