C语言实现推箱子小游戏
综合C语言基础语法练习之推箱子
#include <stdio.h>
#include <getch.h>
#include <stdlib.h>
int main(int argc,const char* argv[])
{
int maze[8][8] = {
{2,2,2,2,2,2,2,2},
{2,2,2,6,6,2,2,2},
{2,2,2,0,6,2,2,2},
{2,2,0,0,3,6,2,2},
{2,2,0,3,0,0,2,2},
{2,0,0,2,3,3,0,2},
{2,0,0,1,0,0,0,2},
{2,2,2,2,2,2,2,2}
};
int sum = 0;
int man_x = 6, man_y = 3;
int loc = 0
for(;;)
{
system("clear");
for(int i=0; i<8; i++)
{
for(int j=0; j<8; j++)
{
int k = maze[i][j];
switch(k)
{
case 0:
printf(" ");
break;
case 1:
printf("@ ");
break;
case 2:
printf("# ");
break;
case 3:
printf("$ ");
break;
case 6:
printf("o ");
break;
case 7:
printf("@ ");
break;
case 9:
printf("$ ");
sum +=1;
break;
}
}
printf("\n");
}
if(sum == 4)
{
printf("你赢了,共走了:%d\n", loc);
break;;
}
switch(getch())
{
case 183:
if(maze[man_x-1][man_y] == 0 || maze[man_x-1][man_y] == 6 )
{
maze[man_x][man_y] -= 1;
maze[--man_x][man_y] += 1;
loc++;
break;
}
if(maze[man_x-1][man_y] == 3)
{
if(maze[man_x-2][man_y] == 0 || maze[man_x-2][man_y] == 6)
{
maze[man_x][man_y] -= 1;
maze[--man_x][man_y] -= 2;
maze[man_x-1][man_y] += 3;
loc++;
}
break;
}
if(maze[man_x-1][man_y] == 9)
{
if(maze[man_x-2][man_y] == 0 || maze[man_x-2][man_y] == 6)
{
maze[man_x][man_y] -= 1;
maze[--man_x][man_y] -= 2;
maze[man_x-1][man_y] += 3;
loc++;
}
break;
}
break;
case 184:
if(maze[man_x+1][man_y] == 0 || maze[man_x+1][man_y] == 6)
{
maze[man_x][man_y] -= 1;
maze[++man_x][man_y] += 1;
loc++;
break;
}
if(maze[man_x+1][man_y] == 3)
{
if(maze[man_x+2][man_y] == 0 || maze[man_x+2][man_y] == 6)
{
maze[man_x][man_y] -= 1;
maze[++man_x][man_y] -= 2;
maze[man_x+1][man_y] += 3;
loc++;
}
break;
}
if(maze[man_x+1][man_y] == 9)
{
if(maze[man_x+2][man_y] == 0 || maze[man_x+2][man_y] == 6)
{
maze[man_x][man_y] -= 1;
maze[++man_x][man_y] -= 2;
maze[man_x+1][man_y] += 3;
loc++;
}
break;
}
break;
case 185:
if(maze[man_x][man_y+1] == 0 || maze[man_x][man_y+1] == 6)
{
maze[man_x][man_y] -= 1;
maze[man_x][++man_y] += 1;
loc++;
break;
}
if(maze[man_x][man_y+1] == 3)
{
if(maze[man_x][man_y+2] == 0 || maze[man_x][man_y+2] == 6)
{
maze[man_x][man_y] -= 1;
maze[man_x][++man_y] -= 2;
maze[man_x][man_y+1] += 3;
loc++;
}
break;
}
if(maze[man_x][man_y+1] == 9)
{
if(maze[man_x][man_y+2] == 0 || maze[man_x][man_y+2] == 6)
{
maze[man_x][man_y] -= 1;
maze[man_x][++man_y] -= 2;
maze[man_x][man_y+1] += 3;
loc++;
}
break;
}
break;
case 186:
if(maze[man_x][man_y-1] == 0 || maze[man_x][man_y-1] == 6)
{
maze[man_x][man_y] -= 1;
maze[man_x][--man_y] += 1;
loc++;
break;
}
if(maze[man_x][man_y-1] == 3)
{
if(maze[man_x][man_y-2] == 0 || maze[man_x][man_y-2] == 6)
{
maze[man_x][man_y] -= 1;
maze[man_x][--man_y] -= 2;
maze[man_x][man_y-1] += 3;
loc++;
}
break;
}
if(maze[man_x][man_y-1] == 9)
{
if(maze[man_x][man_y-2] == 0 || maze[man_x][man_y-2] == 6)
{
maze[man_x][man_y] -= 1;
maze[man_x][--man_y] -= 2;
maze[man_x][man_y-1] += 3;
loc++;
}
break;
}
break;
}
sum = 0;
}
return 0;
}