资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

使用C语言怎么制作一个推箱子游戏-创新互联

这篇文章将为大家详细讲解有关使用C语言怎么制作一个推箱子游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联公司10多年成都企业网站定制服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站定制及推广,对成都服务器托管等多个行业拥有丰富的网站营销经验的网站建设公司。

具体的数字与字符含义转换如下:


        0 printf(" "); 路

        2 printf("@"); 人

        3 printf("#"); 墙

        4 printf("$"); 箱子

        5 printf("O"); 目标点

        7 printf("@"); 人

        9 printf("$"); 箱子

代码如下:

#include 
#include 
#include 
#include 
 
int mx = 0;
int my = 0;
int step = 0;
char map[8][8] = {
 {0,0,3,3,3,3,0,0},
 {0,0,3,5,5,3,0,0},
 {0,3,3,0,5,3,3,0},
 {0,3,0,0,4,5,3,0},
 {3,3,0,4,0,0,3,3},
 {3,0,0,3,4,4,0,3},
 {3,0,0,2,0,0,0,3},
 {3,3,3,3,3,3,3,3}
 };
 
void show_map(void)
{
 for(int i=0;i<8;i++)
 {
 for(int j=0;j<8;j++)
 {
 if(0 == map[i][j])
 {
 printf(" ");
 }
 else if(2 == map[i][j])
 {
 printf("@ ");
 }
 else if(3 == map[i][j])
 {
 printf("# ");
 }
 else if(4 == map[i][j])
 {
 printf("$ ");
 }
 else if(5 == map[i][j])
 {
 printf("O ");
 }
 else if(7 == map[i][j])
 {
 printf("@ ");
 }
 else if(9 == map[i][j])
 {
 printf("$ ");
 }
 }
 printf("\n");
 }
 
}
 
 
void up(void)
{
 for(int i=0; i<8;i++)
 {
 for(int j=0; j<8;j++)
 {
 if(2 == map[i][j] || 7 == map[i][j])
 {
 mx =i;
 my =j;
 } 
 }
 }
 if(3 == map[mx-1][my])
 {
 return;
 }
 else if(0 == map[mx-1][my] || 5 == map[mx-1][my])
 {
 map[mx-1][my] += 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(4 == map[mx-1][my] || 9 == map[mx-1][my])
 {
 if(0 == map[mx-2][my])
 {
 map[mx-2][my] += 4;
 map[mx-1][my] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(5 == map[mx-2][my])
 {
 map[mx-2][my] += 4;
 map[mx-1][my] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else
 {
 return;
 }
 }
}
 
void down(void)
{
 for(int i=0; i<8;i++)
 {
 for(int j=0; j<8;j++)
 {
 if(2 == map[i][j] || 7 == map[i][j])
 {
 mx =i;
 my =j;
 } 
 }
 }
 if(3 == map[mx+1][my])
 {
 return;
 }
 else if(0 == map[mx+1][my] || 5 == map[mx+1][my])
 {
 map[mx+1][my] += 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(4 == map[mx+1][my] || 9 == map[mx+1][my])
 {
 if(0 == map[mx+2][my])
 {
 map[mx+2][my] += 4;
 map[mx+1][my] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(5 == map[mx+2][my])
 {
 map[mx+2][my] += 4;
 map[mx+1][my] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else
 {
 return;
 }
 }
}
 
void left(void)
{
 for(int i=0; i<8;i++)
 {
 for(int j=0; j<8;j++)
 {
 if(2 == map[i][j] || 7 == map[i][j])
 {
 mx =i;
 my =j;
 } 
 }
 }
 if(3 == map[mx][my-1])
 {
 return;
 }
 else if(0 == map[mx][my-1] || 5 == map[mx][my-1])
 {
 map[mx][my-1] += 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(4 == map[mx][my-1] || 9 == map[mx][my-1])
 {
 if(0 == map[mx][my-2])
 {
 map[mx][my-2] += 4;
 map[mx][my-1] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(5 == map[mx][my-2])
 {
 map[mx][my-2] += 4;
 map[mx][my-1] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else
 {
 return;
 }
 }
}
 
void right(void)
{
 for(int i=0; i<8;i++)
 {
 for(int j=0; j<8;j++)
 {
 if(2 == map[i][j] || 7 == map[i][j])
 {
 mx =i;
 my =j;
 } 
 }
 }
 if(3 == map[mx][my+1])
 {
 return;
 }
 else if(0 == map[mx][my+1] || 5 == map[mx][my+1])
 {
 map[mx][my+1] += 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(4 == map[mx][my+1] || 9 == map[mx][my+1])
 {
 if(0 == map[mx][my+2])
 {
 map[mx][my+2] += 4;
 map[mx][my+1] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else if(5 == map[mx][my+2])
 {
 map[mx][my+2] += 4;
 map[mx][my+1] -= 2;
 map[mx][my] -= 2;
 step++;
 }
 else
 {
 return;
 }
 }
}
 
void start_soko(void)
{
 FILE* frp = fopen("soko.bin","r");
 if(NULL == frp)
 {
 printf("数据加载错误!\n");
 return;
 }
 
 fread(map,1,64,frp);
 
 fclose(frp);
}
 
void exit_soko(void)
{
 FILE* fwp = fopen("soko.bin","w");
 printf("____");
 if(NULL == fwp)
 {
 printf("数据保存错误!\n");
 }
 
 fwrite(map,1,64,fwp);
 fclose(fwp);
}
 
int main()
{
 start_soko();
 while(true)
 {
 system("clear");
 
 //显示地图
 show_map();
 
 //判定是否游戏结束
 int cnt = 0;
 for(int i=0; i<8; i++)
 {
 for(int j=0; j<8;j++)
 {
 if(9 == map[i][j])
 {
  cnt++;
 }
 }
 }
 if(4 == cnt)
 {
 printf("游戏结束,共使用%d步!\n",step);
 return 0;
 }
 printf("%d\n",cnt);
 
 //获取方向键
 switch(getch())
 {
 case 'w':up();break;
 case 's':down();break;
 case 'a':left();break;
 case 'd':right();break;
 case 'q':exit_soko();return 0;
 default:
  puts("输入指令有误!");
 
 }
 }
 exit_soko();
}

关于使用C语言怎么制作一个推箱子游戏就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网页标题:使用C语言怎么制作一个推箱子游戏-创新互联
本文网址:http://www.cdkjz.cn/article/dgihdi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220