• 大小: 4.76KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-04-12
  • 语言: C/C++
  • 标签: 推箱子  

资源简介

推箱子 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 < HEIGHT; i++){
for(j = 0; j < WIDTH; 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 < WIDTH; i++){
for(j = 0; j < HEIGHT; 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;
}

//判断箱子上方是否

评论

共有 条评论