189 8069 5689

使用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://jkwzsj.com/article/dgihdi.html

其他资讯