推箱子 C語言

2021-10-01 22:01:32 字數 3796 閱讀 5390

/*主要功能分析:使用switch語句實現,上下左右移動;用棧實現返回上一步操作。*/

#include

#include

#include

#include

int map1[9]

[9]=

,//0代表空地

,//1代表牆

,//3代表目的地

,//4代表箱子

,//5代表人 ,,

,};int map2[9]

[9]=

,,,,

,,,}

;typedef

char elementtype;

typedef

char position;

typedef

struct snode *ptrtosnode;

struct snode

;typedef ptrtosnode stack;

stack createstack

(int maxsize)

bool isfull

(stack s)

bool push

(stack s,elementtype x)

}bool isempty

(stack s)

elementtype pop

(stack s)

void

drawmap

(int map[

9],int x)

;elementtype playgame1

(stack s,

int map1[

9],int x)

;elementtype playgame2

(stack s,

int map1[

9],int x)

;int

main()

//主函式}if

(guan==2)

while(1

)}return0;

}void

drawmap

(int map[

9],int x)

//繪製地圖

}printf

("\n");

}}elementtype playgame1

(stack s,

int map1[

9],int x)

//移動 }}

char ch;

//字元變數

ch =

getch()

;//從鍵盤得到輸入

switch

(ch)

else

if(map1[r -1]

[c]==

4|| map1[r -1]

[c]==7)

//如果人的上面有箱子或者有箱子的目的地

}break

;case

's':

//enter按鍵的作用 確認 返回

case

's':

case80:

if(map1[r +1]

[c]==

0|| map1[r +1]

[c]==3)

//如果人的下面為空地或者目的地

else

if(map1[r +1]

[c]==

4|| map1[r+1]

[c]==7)

//如果人的下面有箱子或者有箱子的目的地

}break

;case

'a':

case

'a':

case75:

if(map1[r ]

[c -1]

==0|| map1[r ]

[c -1]

==3)//如果人的左面為空地或者目的地

else

if(map1[r]

[c -1]

==4|| map1[r]

[c -1]

==7)//如果人的左面有箱子或者有箱子的目的地

}break

;case

'd':

case

'd':

case77:

if(map1[r]

[c +1]

==0|| map1[r]

[c +1]

==3)//如果人的右面為空地或者目的地

else

if(map1[r]

[c +1]

==4|| map1[r]

[c +1]

==7)//如果人的右面有箱子或者有箱子的目的地

}break

;case27:

exit(0

);case

'z':

bushu=

playgame2

(s,map1,9)

;system

("cls");

}return bushu;

}elementtype playgame2

(stack s,

int map1[

9],int x)

//實現按鍵 z 撤回}}

char ch;

ch =

pop(s)

;//將鍵盤的輸入儲存到字元中

switch

(ch)

break

;case

'w':

case72:

if(map1[r -1]

[c]==

4|| map1[r -1]

[c]==7)

//如果人的上面有箱子或者有箱子的目的地

}break

;case

's':

//enter按鍵的作用 確認 返回

if(map1[r -1]

[c]==

0|| map1[r -1]

[c]==3)

//如果人的上面為空地或者目的地

break

;case

's':

case80:

if(map1[r +1]

[c]==

4|| map1[r+1]

[c]==7)

//如果人的下面有箱子或者有箱子的目的地

}break

;case

'a':

if(map1[r]

[c +1]

==0|| map1[r]

[c +1]

==3)//如果人的右面為空地或者目的地

break

;case

'a':

case75:

if(map1[r]

[c -1]

==4|| map1[r]

[c -1]

==7)//如果人的左面有箱子或者有箱子的目的地

}break

;case

'd':

if(map1[r ]

[c -1]

==0|| map1[r ]

[c -1]

==3)//如果人的左面為空地或者目的地

break

;case

'd':

case77:

if(map1[r]

[c +1]

==4|| map1[r]

[c +1]

==7)//如果人的右面有箱子或者有箱子的目的地

}break

;case27:

exit(0

);}return bushu;

}

C語言 推箱子

這個小遊戲設計起來不難,之所以做他的目的是,一天老師給我了個他很早以前寫的2d庫,讓我去使用這個庫完成乙個小遊戲,這個過程的意義再去讓我乙個以前從未用過別人手寫庫的學生,了解到了庫的設計結構,和如果好的使用別人的庫去完成任務,雖然程式設計難度不大,但是意義深刻,至少知道了以後遇見別人的庫是怎麼使用,...

C語言推箱子分析

用乙個二維陣列來表示整個地圖,我們先網上找一張地圖來分析下。分析 地圖上有 牆 目的地 箱子 人 背景牆 目的地和箱子合起來的 紅箱子 我們用數字來在二維陣列中對應的標記這些東西,二維陣列的大小就是地圖的大小咯。定義地圖大小 8 8 int map 8 8 哈哈哈,當然是初始化這個地圖咯,就是往這個...

手寫c語言推箱子

include include includeint life 1 判斷是否繼續 int map 10 10 圖域 0空地,1圍牆,2人,3箱子,4目的地 image img 6 圖組 int arr 10 10 int level 0 void init void drawmap endbatch...