/*主要功能分析:使用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...