資源簡介
推箱子 c語言代碼
代碼片段和文件信息
#include?
#include?
#define?WIDTH?8
#define?HEIGHT?8
/**
* 0 表示空
* 1 表示墻
* 2 表示人
* 3 表示箱子
* 4 表示球
* 5 表示推到目的地的箱子?
*/
int?map[HEIGHT][WIDTH]?=?{
{0?0?1?1?1?0?0?0}
{0?0?1?4?1?0?0?0}
{0?0?1?0?1?1?1?1}
{1?1?1?3?0?3?4?1}
{1?4?0?3?2?1?1?1}
{1?1?1?1?3?1?0?0}
{0?0?0?1?4?1?0?0}
{0?0?0?1?1?1?0?0}?
};
//人的位置?
int?x?y;
//箱子的個數?
int?boxs;?
//聲明方法?
void?initData();
void?drawMap();
void?moveUp();
void?moveLeft();
void?moveDown();
void?moveRight();
int?main(int?argc?char?*argv[])?{
char?direction; //存儲鍵盤按的方向?
initData();
while(1){
system(“cls“);
drawMap();?
if(!boxs){
break;
}
direction?=?getch();
switch(direction){
case?‘w‘:
moveUp();
break;
case?‘a‘:
moveLeft();?
break;
case?‘s‘:
moveDown();
break;
case?‘d‘:
moveRight();
break;?
}
}??
printf(“恭喜你完成游戲!※“);
return?0;
}
/**
* 初始化一些必須的數據?
*/
void?initData(){
int?i?j;
printf(“游戲加載中,請稍后.........“);?
//獲取人的位置
for(i?=?0;?i? for(j?=?0;?j? //遍歷到2時,記錄人的左邊?
if(map[i][j]?==?2){
x?=?j;
y?=?i;
}?
//遍歷到3時,箱子的數目增加?
if(map[i][j]?==?3){
boxs++;
}
}
}?
}
/**
* 用于在控制臺顯示地圖?
*/
void?drawMap(){
int?i?j;
for(i?=?0;?i? for(j?=?0;?j? switch(map[i][j]){
case?0:
printf(“??“);
break;
case?1:
printf(“■“);
break;
case?2:
printf(“♀“);
break;
case?3:
printf(“◆“);
break;
case?4:
printf(“●“);
break;
case?5:
printf(“★“);
break;?
}
}
printf(“\n“);
}
}
/**
* 人物向上移動?
*/
void?moveUp(){
//定義變量存放人物上方的坐標
int?ux?uy;?
//當上方沒有元素時,直接return
if(y?==?0){
return;
}
//記錄上方坐標
ux?=?x;
uy?=?y?-?1;?
//上方為已完成方塊
if(map[uy][ux]?==?5){
return;
}?
//假設上方為墻,直接return?
if(map[uy][ux]?==?1){
return;
}
//假設上方為箱子
if(map[uy][ux]?==?3){
//判斷箱子上方是否為墻?
if(map[uy?-?1][ux]?==?1){
return;
}
//判斷箱子上方是否
- 上一篇:cmake模板教程
- 下一篇:c++開發http服務端+客戶端
評論
共有 條評論