c语言课程设计经典例题推箱子(2)

2019-08-29 21:51

void img6() {

int map2[14][16]; int i,j,sum=0;

int map[14][16]={

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,1,3,2,3,2,3,1,0,0,0,0}, {0,0,0,0,0,1,2,4,4,4,2,1,0,0,0,0}, {0,0,0,0,0,1,3,4,6,4,3,1,0,0,0,0}, {0,0,0,0,0,1,2,4,4,4,2,1,0,0,0,0}, {0,0,0,0,0,1,3,2,3,2,3,1,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, };

for(i=0;i<14;i++)

for(j=0;j<16;j++){

map2[i][j]=map[i][j];

if(map[i][j] == 3 || map[i][j] == 5) sum++; }

insert(map,map2,sum); }

int insert(int map[][16],int map2[][16],int sum) {

int i,j;

int x,y; //人的位置

char op; //所按下的方向键

int num = 0; //还剩下几个箱子没有推向目的地

while(1){

for(i=0;i<14;i++){

for(j=0;j<16;j++)

if(map[i][j] == 6) goto found; found:

} x = i; y = j;

system(\

num = printMap(map); if(num == sum){

printf(\你通关了....\\n\ return 0; } else{

op = getch();

if((op == 'Q') || (op =='q')){ printf(\退出....\\n\ return 2; }

op = getch(); }

switch(op) {

case 72: //上箭头

moveBox(map,x,y,1,map2); break;

case 75: //左箭头

moveBox(map,x,y,2,map2); break;

case 77: //右箭头

moveBox(map,x,y,3,map2);

break;

case 80: //下箭头

moveBox(map,x,y,4,map2); break; default:

break; } } }

int printMap(int map[][16]) {

int i,j;

int count = 0;

for(i=0;i<14;i++){

for(j=0;j<16;j++){

switch(map[i][j]){

case 0: printf(\ \ break;

case 1: color(13); printf(\■\ break;

case 2: 地

printf(\ \ break;

case 3: color(11); printf(\×\ break;

case 4: color(8);

//空地 //墙 //内部空//目的地//箱子 printf(\◎\ break;

case 5: //箱子推到目的地后显示

count++; color(9); printf(\☆\ break;

case 6: //小人 color(10); printf(\♀\ break;

} }

printf(\ }

printf(\

printf(\按方向键操作游戏,按Q退出!\\n\ return count; }

void moveBox(int map[][16],int x,int y,int select,int map2[][16]) {

int x1,y1; //下个位置的坐标 int x2,y2; //下下个位置的坐标 switch(select) {

case 1: //向上移动 x1 = x - 1; y1 = y; x2 = x - 2; y2 = y; break;

case 2: //向左移动

x1 = x; y1 = y - 1; x2 = x; y2 = y - 2; break;

case 3: //向右移动 x1 = x; y1 = y + 1; x2 = x; y2 = y + 2; break;

case 4: //向下移动 x1 = x + 1; y1 = y; x2 = x + 2; y2 = y; break; default:

break; }

//operate map

switch(map[x1][y1]){

case 1: //墙,不动 break;

case 2: if(map2[x][y] == 3){//空格,分情况变换

map[x1][y1] = 6; map[x][y] = 3; } else{

map[x1][y1] = 6; map[x][y] = 2; } break;


c语言课程设计经典例题推箱子(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年201X年基层纳税服务工作总结-word范文(3页)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: