精华内容
下载资源
问答
  • /* 一个C语言编写的推箱子游戏源代码 */#include #include #include #include #include #include /* 定义二维数组ghouse来记录屏幕上各点的状态,其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,...

    /* 一个C语言编写的推箱子游戏源代码 */

    #include

    #include

    #include

    #include

    #include

    #include

    /* 定义二维数组ghouse来记录屏幕上各点的状态,

    其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。 */

    char ghouse[20][20];

    /* 以下函数为直接写屏函数,很酷的函数哦!是我朋友告诉我的。 */

    char far *screen=(char far* )0xb8000000;

    void putchxy(int y,int x,char ch,char fc,char bc)

    {

    screen[(x*160)+(y<<1)+0]=ch;

    screen[(x*160)+(y<<1)+1]=(bc*16)+fc;

    }

    /* 定义判断是否胜利的数据结构 */

    typedef struct winer {

    int x,y;

    struct winer *p;

    }winer;

    /* 箱子位置的数据结构 */

    typedef struct boxs {

    int x,y;

    struct boxs *next;

    }boxs;

    /* 在特定的坐标上画墙壁并用数组记录状态的函数 */

    void printwall(int x,int y)

    {

    putchxy(y-1,x-1,219,GREEN,BLACK);

    ghouse[x][y]='w';

    }

    /* 在特定的坐标上画箱子并用数组记录状态的函数 */

    void printbox(int x,int y)

    {

    putchxy(y-1,x-1,10,WHITE,BLACK);

    ghouse[x][y]='b';

    }

    /* 在特定的坐标上画目的地并用数组记录状态的函数 */

    void printwhither1(int x,int y,winer **win,winer **pw)

    {

    winer *qw;

    putchxy(y-1,x-1,'*',YELLOW,BLACK);

    ghouse[x][y]='m';

    if(*win==NULL)

    {

    *win=*pw=qw=(winer* )malloc(sizeof(winer));

    (*pw)->x=x;(*pw)->y=y;(*pw)->p=NULL;

    }

    else

    {

    qw=(winer* )malloc(sizeof(winer));

    qw->x=x;qw->y=y;(*pw)->p=qw;(*pw)=qw;qw->p=NULL;

    }

    }

    /* 在特定的坐标上画目的地并用数组记录状态的函数 */

    void printwhither(int x,int y)

    {

    putchxy(y-1,x-1,'*',YELLOW,BLACK);

    ghouse[x][y]='m';

    }

    /* 在特定的坐标上画人的函数 */

    void printman(int x,int y)

    {

    gotoxy(y,x);

    _AL=02;_CX=01;_AH=0xa;

    geninterrupt(0x10);

    }

    /* 在特定的坐标上画箱子在目的地上并用数组记录状态的函数 */

    void printboxin(int x,int y)

    {

    putchxy(y-1,x-1,10,YELLOW,BLACK);

    ghouse[x][y]='i';

    }

    /* 初始化函数,初始化数组和屏幕 */

    void init()

    {

    int i,j;

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

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

    ghouse[i][j]=0;

    _AL=3;

    _AH=0;

    geninterrupt(0x10);

    gotoxy(40,4);

    printf("Welcome to come box world!");

    gotoxy(40,6);

    printf("Press up,down,left,right to play.");

    gotoxy(40,8);

    printf("Press Esc to quit it.");

    gotoxy(40,10);

    printf("Press space to reset the game.");

    gotoxy(40

    展开全文
  • 推箱子C语言代码

    2010-04-07 00:38:08
    此程序是本人大一刚学C时用win-tc做的一个推箱子游戏,希望大家喜欢的就下下来看看。额 需要积分 便上传了。一共只有一百多行代码,主要是希望初学者能够更好的了解C语言的结构和基本语法,并没有多少技术含量。谢谢...
  • 游戏推箱子c语言

    2021-09-28 22:08:57
    游戏推箱子c语言)一、项目背景二、设计目的三、项目功能需求1、屏幕绘图输出2、移动箱子3、移动小人4、游戏功能控制5、关口选择四、系统的功能结构图五、功能模块介绍1、绘制地图模块2、移动控制模块3、关口选择...

    一、项目背景

    ​ 游戏推箱子既能锻炼思维的严密性,又有很多乐趣。本章将用C语言实现一个简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。

    二、设计目的

    • 如何实现二维数组定义,操作等功能
    • 如何从键盘输入中获取键值信息
    • 如何在图形方式下实现光标的显示和定位
    • 如何对图像函数进行使用
    • 如何通过C语言实现游戏的基本控制操作和相关设置

    三、项目功能需求

    1、屏幕绘图输出

    能够实现绘制城墙,在空地上绘制箱子,在目的地绘制箱子,绘制小人和绘制目的地等功能

    2、移动箱子

    能够实现箱子的移动,包括目的地之间,空地之间和目的地与空地之间的箱子移动等功能

    3、移动小人

    能够实现小人的移动,从而推动箱子到目的地

    4、游戏功能控制

    能够实现根据用户的键盘输入,指定位置状态判断功能和游戏操作等功能

    5、关口选择

    能够实现游戏关卡的选择,游戏共分为4关,以便用户选择所需要的关卡数

    四、系统的功能结构图

    在这里插入图片描述

    五、功能模块介绍

    1、绘制地图模块

    • 绘制出每一关卡的基本地图,包括绘制城墙,在空地上绘制箱子,在目的地绘制箱子,绘制小人和绘制目的地。
    • 根据用户的每次操作绘制出操作后变化的地图信息**。**

    2、移动控制模块

    • 根据用户的输入信息来实现对小人的控制
    • 根据用户的输入信息来判断箱子的移动状态

    3、关口选择模块

    • 根据用户的输入的关卡选择相应的关数,并且在用户过关后自动进入下一关
    • 每关对应不同的地图形状,共分为四关,每关的难度依次增大

    4、游戏操作模块

    • 判断用户游戏是否过关,以及捕获用户的键盘输入信息

    六、详细设计

    1、主函数

    功能设计

    • 用于实现主界面的显示,并响应用户对菜单项的选择。
    • 主菜单为用户提供了3种不同的操作选项,当用户在界面上输入需要的操作选项时,系统会自动执行该选项对应的功能。
    • 个功能执行完之后,还能自动回到主菜单,便于用户进行其他操作。

    主函数程序流程图
    在这里插入图片描述

    2、绘制地图模块

    功能设计

    • 绘制出每一关卡的基本地图。
    • 地图的绘制包括绘制城墙,在空地上绘制箱子,在目的地绘制箱子,绘制小人和绘制目的地等操作。
    • 根据用户的每次操作绘制出操作后变化的地图信息。
    • 模块也包含了对文字颜色的具体设置

    3、移动控制模块

    功能设计

    • 根据用户的键盘输入信息来实现对小人的控制。
    • 需要分情况判断小人的状态,判断用户输入的操作能否被执行**。**
    • 根据用户输入信息来判断箱子的移动状态。

    模块流程图

    在这里插入图片描述

    4、关口选择模块

    功能设计

    • 根据用户的输入的关卡选择相应的关数。
    • 每关对应不同的地图形状,地图由二维数组表示,共分为四关,每关的难度依次增大。
    • 在用户过关后自动进入下一关**。**

    模块流程图

    在这里插入图片描述

    5、游戏操作模块

    功能设计

    • 判断用户游戏是否过关,即与箱子匹配的目的地数目是否等于目的地个数。
    • 捕获用户的键盘输入信息:如用户输入N表示进入下一关,用户输入Q表示返回主界面。
    • 用户输入键盘上下左右键实现控制信息。

    游戏操作模块流程图

    在这里插入图片描述

    七、代码

    /*****推箱子游戏*****/
    #include	<stdio.h>
    #include	<stdlib.h>
    #include	<conio.h>
    #include	<windows.h>
    #define KEY_UP 72
    #define KEY_DOWN 80
    #define KEY_LEFT 75
    #define KEY_RIGHT 77
    
    #define KEY_RETURN 2
    #define KEY_NEXT 4
    
    #define SPACE_OUT 0
    #define WALL 1
    #define SPACE 2
    #define TARGET 3
    #define BOX 4
    #define TARGET_IN 5
    #define PERSON 6
    
    
    /*函数声明*/
    void SelectColor(int iColor);
    void DesignUI();
    int WelcomePage();/*初始界面,每次通关后跳回*/
    void GetLevel1();
    void GetLevel2();
    void GetLevel3();
    void GetLevel4();
    int PlayGame(int aiMap[][16], int aiMap2[][16], int iSum, int iImp);
    int PrintMap(int aiMap[][16], int iImp);
    void MoveBox(int aiMap[][16], int iPlayerX, int iPlayerY, int iSelect, int aiMap2[][16]);
    
    /*主函数*/
    int main() {
    	while (1)
    		DesignUI();
    }
    
    /*文字颜色函数*/
    void  SelectColor(int iColor)                  //颜色函数
    {
    	HANDLE  hConsole =
    		GetStdHandle((STD_OUTPUT_HANDLE));//得到控制台输出设备的句柄
    	SetConsoleTextAttribute(hConsole, iColor);//设置控制台设备的属性
    }
    
    /*主界面函数*/
    void DesignUI()
    {
    	int iCh;
    	char cNum;
    	iCh = WelcomePage();
    	if (iCh == 49)/*键盘输入1,开始第一关游戏*/
    		GetLevel1();
    	else if (iCh == 50){/*键盘输入2,选择1到4关的游戏*/
    		printf("\n\t\t Please input level!(From 1 to 4):");
    		getchar();
    		cNum = getchar();
    		switch (cNum){
    		case '1':
    			GetLevel1();
    			break;
    		case '2':
    			GetLevel2();
    			break;
    		case '3':
    			GetLevel3();
    			break;
    		case '4':
    			GetLevel4();
    			break;
    		default:
    			printf("Enter error!\n");
    			Sleep(1000);
    			exit(0);
    			break;
    		}
    	}
    	else if (iCh == 51){/*键盘输入3,退出游戏*/
    		system("cls");
    		exit(0);
    	}
    }
    
    /*初始欢迎界面*/
    int WelcomePage()
    {
    	int i = 0;
    	system("cls");/*清屏*/
    	system("color 0E");/*设置颜色*/
    	printf("\n\n\t\t Welcome to play box!\n\n");
    	printf("\t\t Person:♀  Wall:▓ Box: ●  Target:○  Reach target:☆\n");
    	printf("\t\t Up:↑\n\t\t Down:↓\n\t\t Left:← \n\t\t Right:→\n\n");
    	printf("\t\t Press number 1 to start new game\n\t\t\n");
    	printf("\t\t Press number 2 to choose level\n\t\t\n");
    	printf("\t\t Press number 3 to quit from game\n\t\t\n");
    	printf("\t\t Press right number to continue:");
    	while (1)
    	{
    		i = getchar();
    		if (i >= 49 && i <= 51)
    			return i;
    	}
    }
    
    /*打印地图函数*/
    int PrintMap(int aiMap[][16], int iImp) {/*参数iImp代表游戏关卡*/
    	int i, j;
    	int iCount = 0;
    	for (i = 0; i<14; i++){
    		for (j = 0; j<16; j++)
    		{
    			switch (aiMap[i][j])
    			{
    			case 0:                /*空地*/
    				printf("  ");
    				break;
    			case 1:
    				SelectColor(14);    /*墙*/
    				printf("▓");
    				break;
    			case 2:                /*内部空地*/
    				printf("  ");
    				break;
    			case 3:
    				SelectColor(11);    /*目的地*/
    				printf("○");
    				break;
    			case 4:                /*箱子*/
    				SelectColor(11);
    				printf("●");
    				break;
    			case 5:                /*箱子推到目的地后显示*/
    				iCount++;
    				SelectColor(9);
    				printf("☆");
    				break;
    			case 6:                /*小人*/
    				SelectColor(10);
    				printf("♀");
    				break;
    			}
    		}
    		printf("\n");
    	}
    	SelectColor(14);
    	printf("\n");
    	printf("\tYou are in Level %d!\t\t\n", iImp);
    	printf("\tPress arrow keys to play the game!\t\n");
    	printf("\tpress N to the next level!\t\n");
    	printf("\tpress Q to return the home page!\t\n");
    	return iCount; /*返回值表示以正确放入的箱子数*/
    }
    
    /*第一关*/
    void  GetLevel1()  {
    	int  aiMap2[14][16];/*表示原始地图*/
    	int  i, j, iSum = 0; /*iSum表示箱子的数量*/
    
    	/*地图形状
    	1代表墙,2代表空地,3代表未放箱子的目标,4代表箱子,5代表以放箱子的目标,6代表小人
    	*/
    	int aiMap[14][16] = {
    		{ 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, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 1, 1, 3, 4, 2, 1, 1, 2, 1, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 3, 4, 6, 4, 2, 2, 3, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 3, 2, 4, 2, 4, 3, 1, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 0, 0, 0, 0, 0, 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 },
    	};
    	for (i = 0; i<14; i++)
    	for (j = 0; j<16; j++){
    		aiMap2[i][j] = aiMap[i][j];
    		if (aiMap[i][j] == TARGET || aiMap[i][j] == TARGET_IN)/*记录箱子个数*/
    			iSum++;
    	}
    
    	/*PlayGame函数返回值为4的情况代表键盘输入Q返回到主界面,
    	其他情况(过关,进入下一关)执行GetLevel2函数,进入第二关
    	*/
    	if (PlayGame(aiMap, aiMap2, iSum, 1) != KEY_RETURN)
    		GetLevel2();
    }
    
    /*第二关*/
    void  GetLevel2()  {
    	int  aiMap2[14][16];/*表示原始地图*/
    	int  i, j, iSum = 0; /*iSum表示箱子的数量*/
    
    	/*地图形状
    	1代表墙,2代表空地,3代表未放箱子的目标,4代表箱子,5代表以放箱子的目标,6代表小人
    	*/
    	int aiMap[14][16] = {
    		{ 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 2, 1, 1, 2, 2, 2, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 2, 2, 4, 2, 2, 2, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 2, 1, 1, 1, 2, 4, 1, 0, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 1, 3, 3, 3, 1, 2, 1, 0, 0, 0, 0 },
    		{ 0, 0, 1, 1, 2, 1, 3, 3, 1, 1, 2, 1, 1, 0, 0, 0 },
    		{ 0, 0, 1, 2, 4, 2, 2, 4, 2, 2, 4, 2, 1, 0, 0, 0 },
    		{ 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 6, 2, 1, 0, 0, 0 },
    		{ 0, 0, 1, 1, 1, 1, 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 },
    	};
    
    	for (i = 0; i<14; i++)
    	for (j = 0; j<16; j++){
    		aiMap2[i][j] = aiMap[i][j];
    		if (aiMap[i][j] == TARGET || aiMap[i][j] == TARGET_IN)/*记录箱子个数*/
    			iSum++;
    	}
    
    	/*PlayGame函数返回值为4的情况代表键盘输入Q返回到主界面,
    	其他情况(过关,进入下一关)执行GetLevel3函数,进入第三关
    	*/
    	if (PlayGame(aiMap, aiMap2, iSum, 2) != KEY_RETURN)
    		GetLevel3();
    }
    
    /*第三关*/
    void  GetLevel3()  {
    	int  aiMap2[14][16];/*表示原始地图*/
    	int  i, j, iSum = 0;/*iSum表示箱子的数量*/
    
    	/*地图形状
    	1代表墙,2代表空地,3代表未放箱子的目标,4代表箱子,5代表以放箱子的目标,6代表小人
    	*/
    	int aiMap[14][16] = {
    		{ 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, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0 },
    		{ 0, 0, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 0, 0 },
    		{ 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 4, 2, 2, 1, 0, 0 },
    		{ 0, 0, 1, 2, 2, 4, 3, 3, 3, 3, 2, 4, 2, 1, 0, 0 },
    		{ 0, 0, 1, 1, 2, 2, 2, 2, 1, 2, 6, 2, 1, 1, 0, 0 },
    		{ 0, 0, 0, 1, 1, 1, 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 },
    	};
    
    	for (i = 0; i<14; i++)
    	for (j = 0; j<16; j++){
    		aiMap2[i][j] = aiMap[i][j];
    		if (aiMap[i][j] == TARGET || aiMap[i][j] == TARGET_IN)/*记录箱子个数*/
    			iSum++;
    	}
    
    	/*PlayGame函数返回值为4的情况代表键盘输入Q返回到主界面,
    	其他情况(过关,进入下一关)执行GetLevel5函数,进入第五关
    	*/
    	if (PlayGame(aiMap, aiMap2, iSum, 3) != KEY_RETURN)
    		GetLevel4();
    }
    
    /*第四关*/
    void  GetLevel4()  {
    	int  aiMap2[14][16];/*表示原始地图*/
    	int  i, j, iSum = 0;/*iSum表示箱子的数量*/
    
    	/*地图形状
    	1代表墙,2代表空地,3代表未放箱子的目标,4代表箱子,5代表以放箱子的目标,6代表小人
    	*/
    	int aiMap[14][16] = {
    		{ 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, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 },
    		{ 0, 0, 0, 0, 0, 1, 2, 2, 2, 1, 3, 2, 1, 0, 0, 0 },
    		{ 0, 0, 0, 0, 1, 1, 2, 2, 4, 3, 3, 3, 1, 0, 0, 0 },
    		{ 0, 0, 0, 0, 1, 2, 2, 4, 2, 1, 5, 3, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 1, 2, 1, 1, 4, 1, 2, 1, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 2, 2, 4, 2, 2, 4, 2, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 0, 0, 0 },
    		{ 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 6, 2, 1, 0, 0, 0 },
    		{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 },
    	};
    	for (i = 0; i<14; i++)
    	for (j = 0; j<16; j++){
    		aiMap2[i][j] = aiMap[i][j];
    		if (aiMap[i][j] == TARGET || aiMap[i][j] == TARGET_IN)/*记录箱子个数*/
    			iSum++;
    	}
    	/*PlayGame函数返回值为4的情况代表键盘输入Q返回到主界面,
    	其他情况(过关,进入下一关)执行GetLevel7函数,进入第七关
    	*/
    	PlayGame(aiMap, aiMap2, iSum, 4);
    }
    
    /*游戏操作函数*/
    int PlayGame(int aiMap[][16], int aiMap2[][16], int iSum, int iImp)/*iSum代表箱子个数*/
    {
    	int i, j;
    	int iPlayerX, iPlayerY;        /*人的位置x,y坐标*/
    	char cOp;                    /*所按下的方向键*/
    	int iNum = 0;               /*箱子推到目的地的个数*/
    
    	while (1)
    	{
    		for (i = 0; i < 14; i++)
    		{
    			for (j = 0; j < 16; j++) /*循环遍历寻找人的位置*/
    			{
    				if (aiMap[i][j] == PERSON)    /*6代表人的位置*/
    					break;
    			}
    			if (j < 16)
    				break;
    		}
    
    		iPlayerX = i;           /*将二维数组中的人的x,y坐标赋值给iPlayerX和iPlayerY*/
    		iPlayerY = j;
    		system("cls");
    		iNum = PrintMap(aiMap, iImp);
    		if (iNum == iSum)
    		{           /*将所有箱子都推到目的地*/
    			printf(" Congratulations!\n");
    			Sleep(3000);
    			return 0;
    		}
    		else
    		{                       /*还有箱子没有推到目的地*/
    			cOp = getch();          /*捕获用户键盘输入*/
    			if ((cOp == 'n') || (cOp == 'N'))/*输入N进入下一关*/
    				return KEY_NEXT;
    			else if ((cOp == 'q') || (cOp == 'Q'))/*输入Q返回主界面*/
    				return KEY_RETURN;
    		}
    		switch (cOp)
    		{          /*用户输入方向键*/
    		case KEY_UP:        /*上箭头*/
    			MoveBox(aiMap, iPlayerX, iPlayerY, 1, aiMap2);
    			break;
    		case KEY_LEFT:        /*左箭头*/
    			MoveBox(aiMap, iPlayerX, iPlayerY, 2, aiMap2);
    			break;
    		case KEY_RIGHT:        /*右箭头*/
    			MoveBox(aiMap, iPlayerX, iPlayerY, 3, aiMap2);
    			break;
    		case KEY_DOWN:        /*下箭头*/
    			MoveBox(aiMap, iPlayerX, iPlayerY, 4, aiMap2);
    			break;
    		default:
    			break;
    		}
    	}
    }
    
    /*方向移动函数*/
    void MoveBox(int aiMap[][16], int iPlayerX, int iPlayerY, int iSelect, int aiMap2[][16]) {
    	int iPlayerX1, iPlayerY1;        /*小人下一个要走的位置坐标*/
    	int iPlayerX2, iPlayerY2;        /*小人下下一个要走的位置坐标*/
    	switch (iSelect) {
    	case 1:        /*向上移动*/
    		iPlayerX1 = iPlayerX - 1;
    		iPlayerY1 = iPlayerY;
    		iPlayerX2 = iPlayerX - 2;
    		iPlayerY2 = iPlayerY;
    		break;
    	case 2:        /*向左移动*/
    		iPlayerX1 = iPlayerX;
    		iPlayerY1 = iPlayerY - 1;
    		iPlayerX2 = iPlayerX;
    		iPlayerY2 = iPlayerY - 2;
    		break;
    
    	case 3:        /*向右移动*/
    		iPlayerX1 = iPlayerX;
    		iPlayerY1 = iPlayerY + 1;
    		iPlayerX2 = iPlayerX;
    		iPlayerY2 = iPlayerY + 2;
    		break;
    
    	case 4:        /*向下移动*/
    		iPlayerX1 = iPlayerX + 1;
    		iPlayerY1 = iPlayerY;
    		iPlayerX2 = iPlayerX + 2;
    		iPlayerY2 = iPlayerY;
    		break;
    	default:
    		break;
    	}
    
    	/*对地图的操作*/
    	switch (aiMap[iPlayerX1][iPlayerY1])/*判断小人下一步要走的位置*/
    	{
    	case WALL:      /*下一位置是墙,不能移动*/
    		break;
    	case SPACE:     /*下一位置为墙内空地和下一位置为空目的地的情况相同处理*/
    	case TARGET: 
    		aiMap[iPlayerX1][iPlayerY1] = PERSON;/*小人移动到下一位置*/
    		if (aiMap2[iPlayerX][iPlayerY] == TARGET || aiMap2[iPlayerX][iPlayerY] == TARGET_IN)
    			/*小人所在位置初始为空目的地或满目的地,小人移动后此处恢复为空目的地*/
    			aiMap[iPlayerX][iPlayerY] = TARGET;
    		else
    			/*小人所在位置初始为墙内空地、箱子或者小人,小人移动后此处恢复为墙内空地*/
    			aiMap[iPlayerX][iPlayerY] = SPACE;
    		break;
    	case BOX: /*下一位置是箱子和下一位置是已放箱子目的地的情况相同处理*/		
    	case TARGET_IN:
    		if (aiMap[iPlayerX2][iPlayerY2] == TARGET)
    		{
    			/*下下位置为空目的地,箱子和小人一起移动,箱子落入目的地*/
    			aiMap[iPlayerX2][iPlayerY2] = TARGET_IN;
    			aiMap[iPlayerX1][iPlayerY1] = PERSON;
    		}
    		else if (aiMap[iPlayerX2][iPlayerY2] == SPACE)
    		{
    			/*下下位置为空地,箱子和小人一起移动,箱子落入空地*/
    			aiMap[iPlayerX2][iPlayerY2] = BOX;
    			aiMap[iPlayerX1][iPlayerY1] = PERSON;
    		}
    		else/*下下位置为墙、箱子或者满目的地,不能移动,直接退出*/
    			break;
    		if (aiMap2[iPlayerX][iPlayerY] == TARGET || aiMap2[iPlayerX][iPlayerY] == TARGET_IN)
    			/*小人所在位置初始为空目的地或满目的地,小人移动后此处恢复为空目的地*/
    			aiMap[iPlayerX][iPlayerY] = TARGET;
    		else/*小人所在位置初始为墙内空地、箱子或者小人,小人移动后此处恢复为墙内空地*/
    			aiMap[iPlayerX][iPlayerY] = SPACE;
    		break;
    	}
    }
    
    展开全文
  • 下面把纯C推箱子代码解释并分享给大家,希望大家一起学习,代码已分享到我的CSDN上传中,大家也可以在我的百度网盘中免费下载。 由于开发时间比较短,我这里没有加载图片,关卡也就一关,大家可以根据以前玩的推...

    很老的一款单机小游戏推箱子,使用纯C语言实现并不是很容易,在编写调试过程中遇到了很多问题。下面把纯C推箱子代码解释并分享给大家,希望大家一起学习,代码已分享到我的CSDN上传中,大家也可以在我的百度网盘中免费下载。

    由于开发时间比较短,我这里没有加载图片,关卡也就一关,大家可以根据以前玩的推箱子关卡,自己修改界面数组来创造新的推箱子小游戏。

    游戏源码下载地址

    运行游戏界面如下:

    定义游戏界面存储数组,并对数组初始化赋值:

    /*推箱子小游戏的桌面数组,其中 0 代表着空白的地方;
    1 代表着墙;2 代表着人;3 代表着箱子;4 代表着箱子的中点位置。*/
    int push_box[9][11]={
    	{0,1,1,1,1,1,1,1,1,1,0},
    	{0,1,0,0,0,1,0,0,0,1,0},
    	{0,1,0,3,3,3,3,3,0,1,0},
    	{0,1,0,3,0,3,0,3,0,1,1},
    	{0,1,0,0,0,2,0,0,3,0,1},
    	{1,1,0,1,1,1,1,0,3,0,1},
    	{1,0,4,4,4,4,4,1,0,0,1},
    	{1,0,4,4,4,4,4,0,0,1,1},
    	{1,1,1,1,1,1,1,1,1,1,0}
    	};

    判断游戏是否结束,当判断箱子全部进入到规定取与,则判定为赢,显示Win界面:

    int win_loss()//判断游戏结果
    {
    	int k=0;
    	for(int i=0;i<9;i++)
    	{
    		for (int j=0;j<11;j++)
    		{
    			 if(push_box[i][j]==3)
    			     k++;
    		}
    	}
    	if(k==0)//箱子全部进入规定区域则判断为赢
        {
            system("cls");//清屏
            printf("\n\n\n");
    		printf("        Congratulation!\n");
    		printf("       You win the game!\n");
    		exit(0);
        }
    }

    相应键盘事件,当按下键盘后,移动小人位置,改变数组:

    int move_position()//小人位置的变化,当有键盘事件时,改变游戏界面数组
    {
    	int count,caw;//行和列
    	for(int i=0;i<9;i++)//确定人的位置
    	{
    		for (int j=0;j<11;j++)
    		{
    			if(push_box[i][j]==2||push_box[i][j]==6)
    			{
    				count=i;
    				caw=j;
    			}
    		}
    	 }
    	int tui=getch();//getchar()输入一个字符后需要回车来进行下一个字符的输入,getch()则不需要回车就能连续输入多个字符。
        switch(tui)
    	{
    		case 'w':
    		case 'W':
    		case 72://上
    		 if(push_box[count-1][caw]==0||push_box[count-1][caw]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count-1][caw]+=2;
    			}
    		 else if(push_box[count-1][caw]==3||push_box[count-1][caw]==7)
    			{
    				if(push_box[count-2][caw]==0||push_box[count-2][caw]==4)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count-1][caw]-=1;
    				  push_box[count-2][caw]+=3;
    				}
    			}
    		break;
    
    	    case 's':
    	    case 'S':
    	    case 80://下
    	    	 if(push_box[count+1][caw]==0||push_box[count+1][caw]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count+1][caw]+=2;
    			}
    
    			 else if(push_box[count+2][caw]==0||push_box[count+2][caw]==4)
    			{
    			   	if(push_box[count+1][caw]==3||push_box[count+1][caw]==7)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count+1][caw]-=1;
    				  push_box[count+2][caw]+=3;
    				}
    			}
    			break;
    
    	    case 'a':
    	    case 'A':
    	    case 75://左
    	    		 if(push_box[count][caw-1]==0||push_box[count][caw-1]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count][caw-1]+=2;
    			}
    
    			  else if(push_box[count][caw-2]==0||push_box[count][caw-2]==4)
    			{
    			   	if(push_box[count][caw-1]==3||push_box[count][caw-1]==7)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count][caw-1]-=1;
    				  push_box[count][caw-2]+=3;
    				}
    			}
            	break;
    
    	    case 'd':
    	    case 'D':
    		case 77://右
    		    	 if(push_box[count][caw+1]==0||push_box[count][caw+1]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count][caw+1]+=2;
    			}
    
    			  else if(push_box[count][caw+2]==0||push_box[count][caw+2]==4)
    			{
    			     if(push_box[count][caw+1]==3||push_box[count][caw+1]==7)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count][caw+1]-=1;
    				  push_box[count][caw+2]+=3;
    				}
    			}
    		    break;
        }
    }

    通过printf绘制界面,将数组打印到窗口中:

    int newinterface()//绘制游戏界面
    {
        int i,j;
    	for(i=0;i<9;i++)
    	{
    	   for(j=0;j<11;j++)
    	   	   {
    	   	   	   switch(push_box[i][j])
    	   	   	   {
    	   	   	   	    case 0:
    	   	   	   	    	printf("  ");
    	   	   	   	    	break;
    	   	   	   	    case 1:
    	   	   	   	    	printf("■"); //墙
    	   	   	   	    	break;
    	   	   	   	    case 2:
    	   	   	   	    	printf("♀"); //小人
    					    break;
    					case 3:
    						printf("☆"); //箱子
    					    break;
    				    case 4:
    				    	printf("◎"); //终点地方
    					     break;
    					case 6:
    						printf("♂");//人加终点位置
    						break;
    				    case 7:
    					    printf("★") ;//箱子加终点位置
    						break;
    					 }
    			  }
    	   printf("\n");
    	}
    }
    

    主函数,调用上述函数:

    int newinterface()//绘制游戏界面
    {
        int i,j;
    	for(i=0;i<9;i++)
    	{
    	   for(j=0;j<11;j++)
    	   	   {
    	   	   	   switch(push_box[i][j])
    	   	   	   {
    	   	   	   	    case 0:
    	   	   	   	    	printf("  ");
    	   	   	   	    	break;
    	   	   	   	    case 1:
    	   	   	   	    	printf("■"); //墙
    	   	   	   	    	break;
    	   	   	   	    case 2:
    	   	   	   	    	printf("♀"); //小人
    					    break;
    					case 3:
    						printf("☆"); //箱子
    					    break;
    				    case 4:
    				    	printf("◎"); //终点地方
    					     break;
    					case 6:
    						printf("♂");//人加终点位置
    						break;
    				    case 7:
    					    printf("★") ;//箱子加终点位置
    						break;
    					 }
    			  }
    	   printf("\n");
    	}
    }
    

    推箱子小游戏源码:

    main.c

    /** \推箱子小游戏
     *
     * \作者:Dog语言
     * \文件:main.h
     * \日期:2020-8-20
     * \版本:V1.0.0
     *
     */
    #include<stdio.h>
    #include<conio.h>
    #include<windows.h>
    /*推箱子小游戏的桌面数组,其中 0 代表着空白的地方;
    1 代表着墙;2 代表着人;3 代表着箱子;4 代表着箱子的中点位置。*/
    int push_box[9][11]={
    	{0,1,1,1,1,1,1,1,1,1,0},
    	{0,1,0,0,0,1,0,0,0,1,0},
    	{0,1,0,3,3,3,3,3,0,1,0},
    	{0,1,0,3,0,3,0,3,0,1,1},
    	{0,1,0,0,0,2,0,0,3,0,1},
    	{1,1,0,1,1,1,1,0,3,0,1},
    	{1,0,4,4,4,4,4,1,0,0,1},
    	{1,0,4,4,4,4,4,0,0,1,1},
    	{1,1,1,1,1,1,1,1,1,1,0}
    	};
    
    int win_loss()//判断游戏结果
    {
    	int k=0;
    	for(int i=0;i<9;i++)
    	{
    		for (int j=0;j<11;j++)
    		{
    			 if(push_box[i][j]==3)
    			     k++;
    		}
    	}
    	if(k==0)//箱子全部进入规定区域则判断为赢
        {
            system("cls");//清屏
            printf("\n\n\n");
    		printf("        Congratulation!\n");
    		printf("       You win the game!\n");
    		exit(0);
        }
    }
    
    int move_position()//小人位置的变化,当有键盘事件时,改变游戏界面数组
    {
    	int count,caw;//行和列
    	for(int i=0;i<9;i++)//确定人的位置
    	{
    		for (int j=0;j<11;j++)
    		{
    			if(push_box[i][j]==2||push_box[i][j]==6)
    			{
    				count=i;
    				caw=j;
    			}
    		}
    	 }
    	int tui=getch();//getchar()输入一个字符后需要回车来进行下一个字符的输入,getch()则不需要回车就能连续输入多个字符。
        switch(tui)
    	{
    		case 'w':
    		case 'W':
    		case 72://上
    		 if(push_box[count-1][caw]==0||push_box[count-1][caw]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count-1][caw]+=2;
    			}
    		 else if(push_box[count-1][caw]==3||push_box[count-1][caw]==7)
    			{
    				if(push_box[count-2][caw]==0||push_box[count-2][caw]==4)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count-1][caw]-=1;
    				  push_box[count-2][caw]+=3;
    				}
    			}
    		break;
    
    	    case 's':
    	    case 'S':
    	    case 80://下
    	    	 if(push_box[count+1][caw]==0||push_box[count+1][caw]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count+1][caw]+=2;
    			}
    
    			 else if(push_box[count+2][caw]==0||push_box[count+2][caw]==4)
    			{
    			   	if(push_box[count+1][caw]==3||push_box[count+1][caw]==7)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count+1][caw]-=1;
    				  push_box[count+2][caw]+=3;
    				}
    			}
    			break;
    
    	    case 'a':
    	    case 'A':
    	    case 75://左
    	    		 if(push_box[count][caw-1]==0||push_box[count][caw-1]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count][caw-1]+=2;
    			}
    
    			  else if(push_box[count][caw-2]==0||push_box[count][caw-2]==4)
    			{
    			   	if(push_box[count][caw-1]==3||push_box[count][caw-1]==7)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count][caw-1]-=1;
    				  push_box[count][caw-2]+=3;
    				}
    			}
            	break;
    
    	    case 'd':
    	    case 'D':
    		case 77://右
    		    	 if(push_box[count][caw+1]==0||push_box[count][caw+1]==4)
    			{
    				push_box[count][caw]-=2;
    				push_box[count][caw+1]+=2;
    			}
    
    			  else if(push_box[count][caw+2]==0||push_box[count][caw+2]==4)
    			{
    			     if(push_box[count][caw+1]==3||push_box[count][caw+1]==7)
    				{
    			      push_box[count][caw]-=2;
    				  push_box[count][caw+1]-=1;
    				  push_box[count][caw+2]+=3;
    				}
    			}
    		    break;
        }
    }
    
    
    int newinterface()//绘制游戏界面
    {
        int i,j;
    	for(i=0;i<9;i++)
    	{
    	   for(j=0;j<11;j++)
    	   	   {
    	   	   	   switch(push_box[i][j])
    	   	   	   {
    	   	   	   	    case 0:
    	   	   	   	    	printf("  ");
    	   	   	   	    	break;
    	   	   	   	    case 1:
    	   	   	   	    	printf("■"); //墙
    	   	   	   	    	break;
    	   	   	   	    case 2:
    	   	   	   	    	printf("♀"); //小人
    					    break;
    					case 3:
    						printf("☆"); //箱子
    					    break;
    				    case 4:
    				    	printf("◎"); //终点地方
    					     break;
    					case 6:
    						printf("♂");//人加终点位置
    						break;
    				    case 7:
    					    printf("★") ;//箱子加终点位置
    						break;
    					 }
    			  }
    	   printf("\n");
    	}
    }
    
    int main()//主函数
    {
    	while(1)
        {
            system("cls");//对其进行清屏
            newinterface();
            move_position();
            win_loss();
        }
        exit(0);
     }
    

     

     

    展开全文
  • 1、完成推箱子简易地图绘制(参照如图网络游戏地图) 2、确定数字与字符的对应关系 (人、箱子、得分点、墙壁、空路的关系) 3、人和箱子可以行走在空路和得分点上不能穿过墙壁;但是箱子和人移开,得分点依然还在;...

    一、设计目标

    1、完成推箱子简易地图绘制(参照如图网络游戏地图)

    在这里插入图片描述
    2、确定数字与字符的对应关系
    (人、箱子、得分点、墙壁、空路的关系)

    3、人和箱子可以行走在空路和得分点上不能穿过墙壁;但是箱子和人移开,得分点依然还在;

    4、所有箱子移到得分点上游戏结束,并显示总的步数;

    二、设计思路与分析

    1、定义二维数组地图
    2、定义人的坐标
    3、确定数字与字符的对应关系
    (人、箱子、得分点、墙壁、空路的关系)
    4、进入死循环
    1)清空屏幕
    2)确定游戏有没有结束
    3)获取按键值,记录步数

    三、代码部分

    #include <stdio.h>
    #include <stdlib.h> //清屏指令system所需头文件
    #include <getch.h> //获取方向键头文件
    
    int main(int argc,const char* argv[])
    {
    	//用二维矩阵绘制地图
    	int map[8][8] = {
    		{0,0,1,1,1,1,0,0},
    		{0,0,1,4,4,1,0,0},
    		{0,1,1,0,4,1,1,0},
    		{0,1,0,0,3,4,1,0},
    		{1,1,0,3,0,0,1,1},
    		{1,0,0,1,3,3,0,1},
    		{1,0,0,2,0,0,0,1},
    		{1,1,1,1,1,1,1,1},
    		};
    	
    	int m_x = 6,m_y = 3;
    	int cnt =0;
    	int i = 0,j = 0;
    	
    	//进入死循环
    	for(;;)
    	{
    		//先进行清屏
    		system("clear");
    
    		//重新打印地图
    		for(i=0; i<8; i++)
    		{
    			for(j=0; j<8; j++)
    			{
    				switch(map[i][j])
    				{
    					case 0: printf("  "); break;
    					case 1: printf("# "); break;
    					case 2: printf("@ "); break;
    					case 3: printf("$ "); break;
    					case 4: printf("0 "); break;
    					case 6: printf("@ "); break;
    					case 7: printf("$ "); break;
    				}
    			}
    				printf("\n");
    		}
    		
    		//判断游戏是否结束
    		if(map[1][3] == 7 && map[1][4] == 7 && map[2][4] == 7 && map[3][5] == 7)
    		{
    			printf("\n游戏结束,总步数为%d步\n",cnt);
    			return 0;
    		}
    		int nx = 0,ny = 0;
    		
    		//获取方向键
    		switch(getch())
    		{
    			case 183: nx--; break;
    			case 184: nx++; break;
    			case 185: ny++; break;
    			case 186: ny--; break;
    		}
    		
    		//核心部分,判断人物和箱子的移动
    		if(map[m_x+nx][m_y+ny] == 0 || map[m_x+nx][m_y+ny] == 4)
    		{
    			map[m_x][m_y] -= 2;
    			map[m_x+nx][m_y+ny] += 2;
    			m_x += nx;
    			m_y += ny;
    			cnt++;
    		}
    		else if(map[m_x+nx][m_y+ny] == 3 || map[m_x+nx][m_y+ny] == 7)
    		{
    			if(map[m_x+2*nx][m_y+2*ny] == 0 || map[m_x+2*nx][m_y+2*ny] == 4)
    			{
    				map[m_x][m_y] -= 2;
    				map[m_x+nx][m_y+ny] -=1;
    				map[m_x+2*nx][m_y+2*ny] += 3;
    				m_x += nx;
    				m_y += ny;
    				cnt++;
    			}
    		}
    	}
    
    }
    
    
    
    
    

    四、最终效果

    编译结果:
    在这里插入图片描述
    游戏结束时效果:
    在这里插入图片描述

    • 小人代表的@上下右左移动功能完好
    • 不会有越过墙壁现象
    • 推箱子以及到达得分点功能无bug
    • 游戏结束打印步数准确

    学无止境,无限进步!

    展开全文
  • 本源码是C语言版游戏编程推箱子代码,仅供大家面向过程思维的锻炼和互相学习,请勿用于商业手段,给学习留一份净土,其中的不足之处请各位热爱学习的小伙伴留言告知。
  • C语言推箱子完整代码

    万次阅读 多人点赞 2019-09-07 16:50:06
    C语言推箱子完整代码 #include #include<conio.h> #include int map[9][11]={ {0,1,1,1,1,1,1,1,1,1,0}, {0,1,0,0,0,1,0,0,0,1,0}, {0,1,0,0,3,0,0,0,0,1,0}, {0,1,0,3,0,3,3,3,0,1,1}, {0,1,0,0,0,2,0,0,...
  • C语言编程 - 推箱子小游戏源码分享 (含过关)

    万次阅读 多人点赞 2017-10-08 16:38:45
    以下代码利用三维数组画地图的方法实现了简易版推箱子小游戏,内含2个关卡。 #include #include #include #include //0 空地,1 墙, 3 箱子, 4 箱子目的地, 6 人, 7 箱子与目的地重合, 9 人与目的地重合 ...
  • C语言推箱子游戏代码

    万次阅读 多人点赞 2017-06-14 22:56:27
    每天学习一点点,每天容易一点点。一个简单的C语言程序,用来复习c语言代码通俗易懂。...用最简单的C语言语句写个推箱子的程序。 ********************************************/ #include <stdio.h> #include <coni
  • 本次介绍推箱子游戏,通过编写推箱子来学习C语言 游戏操作说明和功能说明: 按wasd控制小人的上下左右移动。 按 r 重新开始游戏 游戏开始有操作介绍 游戏结束有胜利提示 游戏原理分析 游戏开始时的星星个
  • C语言实现推箱子游戏完整代码

    千次阅读 多人点赞 2020-12-17 17:28:43
    C语言实现推箱子游戏完整代码 前言 自己做的,可能有些代码不够工整,或者有些小问题,但游戏的基本操作是可以实现的 代码效果 代码一共分为8个部分,4个控制上下左右移动,2个判断输赢,1个统计归为的个数,一个...
  • 本人c语言初学者,求推向资源代码。我已写了部分,但不会将其联系起来,将其显示出来,刷屏出来。。。就是将地图呈现出。希望看到大神的源代码有所感悟 #ifndef _DITEM #define _DITEM #define X 8 #define Y 8 ...
  • V6.2.3.6是简单的版本,因为V6.2.3.4相对而言...并且现在新的解密器解密不了以前的数据代码。 . 且增加了再次确认方可登录功能。如果忘记密码,没办法,把数据文件放在别的文件夹下,然后运行,只能注册一个新用户...
  • 个人学习的比较的项目推荐,一步步的教你则么写,还有详细的注释,对于学习c语言有很大的帮助, 代码行数不多,但是里面的编程思想值得我们去学习
  • 啊哈c的推箱子游戏(C语言

    千次阅读 多人点赞 2019-01-03 15:44:38
    啊哈c的推箱子游戏 ...说实话,网上信息对新人极不友好,我查推箱子代码,很多csdn博客连界面都写好了,对刚刚学c的我们打击好大啊。总之,我觉得有必要像啊哈c的作者啊哈磊那样写点对新生友好的内容,不然书上...
  • 推箱子游戏(C语言版)

    万次阅读 多人点赞 2019-04-02 16:42:33
    ebyh 备注:【如下这一步主要是看你的电脑安装那个编译器版本的工具就直接点击安装就可以】 三、【推箱子游戏源代码】 // PenguinPushBoxGameDemo.cpp : 定义控制台应用程序的入口点。 // #include “stdafx.h” #...
  • 代码 #include<stdio.h> #include<conio.h> #include<windows.h> //定义地图信息 #define row 8 #define col 8 int map[row][col]={ {0,0,1,1,1,0,0,0}, {0,0,1,4,1,0,0,0}, {0,0,1,0,1,1,...
  • C语言推箱子源码

    2018-08-09 16:45:04
    代码在WIN10 VS2013上写的,虽然能运行,但是还有很多可以改进的地方,这是初学的时候写的,有瑕疵还请督促改正,也是提高我的能力嘛!嘿咻~
  • C语言实现推箱子游戏

    2021-02-08 13:20:29
    Hello,编程小白的我又回来了,继上次的C语言迷宫文章,我沉寂了两天,这次带来的是用C语言实现小时候的推箱子游戏,中间挺难的,条件写了删,删了写,没头绪的时候都想放弃了,但我坚信写的出迷宫的我也能写出这个...
  • 内容索引:VC/C++源码,游戏编程,推箱子游戏 用纯C语言写的一个推箱子游戏,运行于CMD环境(DOS)下,通过这个游戏你可以学到很多汇编底层的东西,涉及到软中断、二维数组、键盘操作以及图形化函数等方面的知识,还...
  • 今天我来分享一道对于初学C语言的同学非常有启发作用的编程例题,是用C语言实现单张地图推箱子的小游戏。 这个游戏是基于Linux环境下编程的,所用工具为ubuntu、和gcc编译器。 首先推箱子的地图,我们根据经典...
  • C语言 推箱子游戏

    2021-02-06 00:40:44
    C语言做一个推箱子游戏 #include <stdio.h> #include <conio.h> #include<stdlib.h> #include<windows.h> int map0[9][11] = { {1,1,1,1,1,1,1,1,1,1,1}, //0代表空地 {1,5,4,3,0,0,0,...
  • C语言编写的推箱子小游戏

    千次阅读 多人点赞 2019-06-17 18:28:26
    大一时候的期末大作业,一直没找到,...1.编写推箱子小游戏 2.使用C语言 3.使用Dev C++编程程序 4.实现小人移动判定 5.实现通关判定 实验分析 1.首先了解推箱子游戏的规则 2.使用代码完成基本的功能 3.判...
  • C语言编写的推箱子游戏程序,文件可以运行,再加课程设计报告。超值哦。
  • 简单的程序小游戏-推箱子代码

    千次阅读 2019-01-16 17:20:11
    简单的程序小游戏,推箱子代码 C语言 /* 推葙子练习 */ #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;time.h&amp;gt; int main() { int arr...
  • 设计思路 用一个二维数组来表示整个地图,我们先网上找一张地图来分析下。...分析:地图上有 墙、目的地、箱子、人。可以用数字来在二维数组中对应的标记这些东西,二维数组的大小就是地图的大小。 ...
  • 根据J2ME版推箱子游戏改编,现改版为VC++版,功能上一模一样,不过现在可以在Windows上运行了,而非限制于手机。游戏界面看上去还不错。 源码结构截图: 代码截图: 原来测试效果: 这个推箱子是...
  • 今天来介绍如何用C语言写一个简单的小游戏,叫做“小老鼠推箱子”。虽然游戏的编写过程不复杂,但是我觉得能够从中找到自己对于编程的不足和完善自己的编程思维是最重要的。游戏代码不多,所以直接写在一个c文件中。...
  • C语言实现『推箱子

    2021-03-05 14:50:07
    推箱子 是我们小时候在电视机上常见的经典电子游戏,游戏要求玩家在一个狭小的仓库中,把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排...
  • C语言实现的推箱子代码 ,彩用了图形界面,非常的经典,值得去好好研究下。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 533
精华内容 213
关键字:

推箱子代码c语言编程

c语言 订阅