当前位置 博文首页 > 梁间呢楠的博客:推箱子C语言实现

    梁间呢楠的博客:推箱子C语言实现

    作者:[db:作者] 时间:2021-09-17 15:17

    C语言实现简易推箱子小游戏

    震惊——全网注释最详细的推箱子源代码竟是一名大一学生所做 ~~(来自UC震惊部)

    步入正题:主要为大家介绍了用C语言实现简单的推箱子小游戏,有兴趣的小伙伴可以参考一下。下面分块给出源代码,并附有详细注释。

    游戏流程(在主函数中实现)
    1.打印菜单界面
    2.初始化地图
    3.玩家进行操作
    4.判断游戏是否结束(若未结束,则循环2、3步骤)
    5.结束后询问玩家是否继续
    6.若玩家选择继续游戏,则循环2、3、4步骤,否则退出程序。

    程序中用到的头文件及自定义函数,功能已写出

    ?#include<stdio.h>
    #include<stdlib.h>
    #define LEVEL 3			//地图数量(关卡数量) 
    #define WIDTH 9			//定义地图宽度 
    #define HEIGHT 9		//定义地图高度 
     
    void moveUp();			//向上移动 
    void moveDown();		//向下移动 
    void moveLeft();		//向左移动 
    void moveRight();		//向右移动 
    void initialMap();		//初始化地图 
    void initialData();		//初始化数据 
    
    int boxs = 0;		//全局变量:箱子个数 
    int choice;			//全局变量:选择地图 
    int x, y;			//全局变量:表示人的坐标 
    

    用二维数组存储地图,根据数组中不同数字打印地图中不同元素,目前仅有三个地图,有兴趣的同学可自行设计地图,体验更多关卡的乐趣~

    int map[LEVEL][WIDTH][HEIGHT] = {
    	{
    		{0, 0, 0, 0, 0, 0, 0, 0},
    		{0, 1, 1, 1, 1, 1, 1, 0},
    		{0, 1, 4, 0, 0, 0, 1, 0},
    		{0, 1, 0, 2, 0, 0, 1, 0},
    		{0, 1, 0, 0, 3, 0, 1, 0},
    		{0, 1, 0, 0, 0, 0, 1, 0},
    		{0, 1, 1, 1, 1, 1, 1, 0},
    		{0, 0, 0, 0, 0, 0, 0, 0},
    	},
    	{
    		{0, 0, 1, 1, 1, 0, 0, 0, 0},
    		{0, 0, 1, 4, 1, 0, 0, 0, 0},
    		{0, 0, 1, 0, 1, 1, 1, 1, 0},
    		{1, 1, 1, 3, 0, 3, 4, 1, 0},
     		{1, 4, 0, 3, 2, 1, 1, 1, 0},
     		{1, 1, 1, 1, 3, 1, 0, 0, 0},
     		{0, 0, 0, 1, 4, 1, 0, 0, 0},
     		{0, 0, 0, 1, 1, 1, 0, 0, 0},
    	},
    	{
    		{1, 1, 1, 1, 1, 0, 0, 0, 0},
    		{1, 0, 0, 0, 1, 0, 0, 0, 0},
    		{1, 0, 3, 3, 1, 0, 1, 1, 1}, 
    		{1, 2, 3, 0, 1, 0, 1, 4, 1},
    		{1, 1, 1, 0, 1, 1, 1, 4, 1},
    		{0, 1, 1, 0, 0, 0, 0, 4, 1},
    		{0, 1, 0, 0, 0, 1, 0, 0, 1},
    		{0, 1, 0, 0, 0, 1, 1, 1, 1},
    		{0, 1, 1, 1, 1, 1, 0, 0, 0}, 
    	}
    };	
    

    初始化地图函数

    void initialMap()		//初始化地图 
    {
    	int i, j;
    	for(i=0;i<WIDTH;i++)
    	{
    		for(j=0;j<HEIGHT;j++)
    		{
    			switch(map[choice][i][j])
    			{
    				case 0:
    					printf("  ");	//0代表空地
    					break;
    				case 1:
    					printf("■");	//1代表墙体
    					break;
    				case 2:				
    					printf("♀");	//2代表玩家(人)
    					break;
    				case 3:
    					printf("◆");	//3代表箱子
    					break;
    				case 4:
    					printf("●");	//4代表目的地
    					break;
    				case 5:
    					printf("★");	//5代表已到达目的地的箱子
    					break;
    				case 6:
    					printf("♀");	//6代表站在目的地上的人
    					break; 
    			}
    		}
    		printf("\n");
    	}
    }
    

    初始化数据(箱子数量,人的坐标)

    
    void initialData()
    {
    	int i, j;	
      	printf("游戏加载中,请稍后........."); 
    
      	//遍历地图中的数据
    	for(i = 0; i < HEIGHT; i++)
    	{
     		for(j = 0; j < WIDTH; j++)
    		{
     		    //遍历到2(人)时,记录人的坐标。x, y是前面定义的全局变量
    			if(map[choice][i]
    
    下一篇:没有了