精华内容
下载资源
问答
  • c语言推箱子源代码.pdf
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include"stdio.h"#include"bios.h"#define LEFT 75#define RIGHT 77#define UPPER 72#define DOWN 80#define ESC 27struct Boxss /*定义箱子结构体,其中包含坐标属性*/{...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    #include"stdio.h"

    #include"bios.h"

    #define LEFT 75

    #define RIGHT 77

    #define UPPER 72

    #define DOWN 80

    #define ESC 27

    struct Boxss /*定义箱子结构体,其中包含坐标属性*/

    {

    int x,y;

    };

    union keyboard /*定义读取键盘码的共用体类型*/

    {

    unsigned int iKeyInfo;

    char chKeyBit[2];

    };

    int fnGetKey(void) /*定义读取键盘码的函数*/

    {

    union keyboard uniKey1; /*定义读取键盘码的共用体变量*/

    while(bioskey(1)==0)

    {

    ;

    } /*检测用户是否按键*/

    uniKey1.iKeyInfo=bioskey(0); /*读取按键信息*/

    return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]); /*返回ASCII码或扩充码*/

    }

    void main()

    {

    int iKey,x=11,y=6,tx=11,ty=6; /*x,y为人物移动后坐标,tx,ty为人物移动前坐标*/

    struct Boxss Box[4]; /*定义箱子数量*/

    int chMap[10][10]={ /*用二维数组定义地图*/

    {0,0,0,0,0,0,0,0,0,0}, /*0表示墙1表示路2表示目标*/

    {0,1,0,0,0,0,1,1,1,0},

    {0,1,0,2,0,0,1,0,1,0},

    {0,1,0,1,0,0,1,0,1,0},

    {0,1,1,1,0,0,1,0,1,0},

    {0,1,0,0,0,0,1,0,1,0},

    {0,1,1,1,1,1,1,0,1,0},

    {0,1,0,1,0,0,0,0,2,0},

    {0,2,0,1,1,1,1,2,0,0},

    {0,0,0,0,0,0,0,0,0,0},

    };

    int i,j;

    Box[0].x=13; /*定义箱子的坐标属性*/

    Box[1].x=11;

    Box[2].x=14;

    Box[3].x=18;

    Box[0].y=8;

    Box[1].y=7;

    Box[2].y=13;

    Box[3].y=7;

    while(1) /*反复进行求移动的坐标运算*/

    {

    for(i=0;i<10;i++) /*输出新地图(刷新地图)*/

    {

    gotoxy(10,5+i);

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

    {

    if(chMap[i][j]==0)

    {

    printf("#");

    }

    if(chMap[i][j]==1)

    {

    printf(" ");

    }

    if(chMap[i][j]==2)

    {

    printf("X");

    }

    }

    }

    j=0; /*判断是否所有箱子都在目标坐标上*/

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

    {

    if(chMap.y-5].x-10]==2)

    {

    j++;

    }

    }

    if(j==4) /*如果所有箱子都就位输出"YOU WIN!"退出*/

    {

    clrscr();

    printf("You Win!");

    break;

    }

    for(i=0;i<4;i++) /*在起始(或移动后)的坐标输出箱子*/

    {

    gotoxy(Box[i].x,Box[i].y);

    printf("0");

    }

    gotoxy(x,y); /*在起始(或移动后)的坐标输出人*/

    printf("*\b");

    tx=x; /*记录本次移动前的坐标*/

    ty=y;

    iKey=fnGetKey();

    if(iKey==LEFT&&chMap[y-5][x-1-10]!=0) /*按读取的按键信息改变坐标如果改变的坐标和墙(0)重合则不改变*/

    {

    x--;

    }

    if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)

    {

    x++;

    }

    if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)

    {

    y--;

    }

    if(iKey==DOWN&&chMap[y+1-5][x-10]!=0)

    {

    y++; /*输入ESC退出并输出"YOU LOST"*/

    }

    if(iKey==ESC)

    {

    clrscr();

    printf("You Lost");

    break;

    }

    for(i=0;i<4;i++) /*如果移动后的人的坐标与箱子坐标重合,则改变箱子坐标向前一格*/

    {

    if(Box[i].x==x&&Box[i].y==y)

    {

    Box[i].x+=(x-tx);

    Box[i].y+=(y-ty);

    if(chMap.y-5].x-10]==0) /*如果移动后的箱子坐标会出现在墙上,则使箱子坐标和人坐标都返回移动前的值*/

    {

    Box[i].x-=(x-tx);

    Box[i].y-=(y-ty);

    x=tx;

    y=ty;

    }

    break;

    }

    }

    clrscr();

    }

    getch();

    }

    展开全文
  • C语言_推箱子源码#include #include //用到system()#include //因为需要用到getch()函数//推箱子_C语言版//写了一下午,第一个C语言游戏终于写好了,想想有点小激动....//蔚蓝之链编写//分享给大家参考下(在看得懂的...

    C语言_推箱子源码

    #include #include //用到system()#include //因为需要用到getch()函数//推箱子_C语言版//写了一下午,第一个C语言游戏终于写好了,想想有点小激动....//蔚蓝之链编写//分享给大家参考下(在看得懂的情况下...),代码写得很凌乱.....,勿喷#define X 20#define Y 20#define REN 2#define XIANGZI 3#define WEIZHI 4#define KONG 0#define QIANG 1#define RW 6#define XW 5#define bool short#define false 0#define true 1

    //数组内部数值表示内容:0表示空位,1表示墙体,2表示人,3表示箱子,4表示箱子要推到的位置,5表示既有箱子又有又位置,6表示既有位置又有人//01,2,3,4符号表示://0 :" " 1:■2:♀3:回4:◎void create_map_arr(int _x,int _y,int (*map_arr)[Y]);//创建地图数组

    void creata_map(int _x,int _y, int (*map)[Y]);//创建地图,重绘游戏画面

    void amend_map(int _x,int _y,char key , int (* arr_map)[Y]);//接收输入,修改游戏画面bool is_finish(int _x, int _y,int _total ,int (*arr_map)[Y]);//判断是否完成推箱子(地图x,地图y,总箱子数,地图数组)

    int main(void){

    int map_arr[X][Y];//存储地图的二维数组create_map_arr(X,Y,map_arr);//创建数组printf("C语言_推箱子v1.0 蔚蓝之链编写\n\n");printf("控制键:W↑,A←,S↓,D→\n");printf("提示:玩本游戏前请先关闭输入法\n");system("pause");system("cls");while(1){creata_map(X,Y,map_arr);//创建地图,重绘游戏画面if(is_finish(X,Y,2,map_arr) == true){printf("恭喜哦,推箱子完成!\n");system("pause");return 0;}

    amend_map(X,Y,getch(),map_arr);//接收输入,修改画面system("cls");//清空画面}getchar();return 0;}

    void create_map_arr (int _x,int _y,int (*map_arr)[Y])//创建地图数组{int x,y;for(x=0;x<_x x="=0" y="=_y-1){*(*(map_arr+x)+y)" qiang kong>

    }//printf("\n");

    }//这里可以修改箱子创建的位置,人创建的位置及箱子要达到的位置,默认两个箱子*(*(map_arr+3)+7)=REN;//人*(*(map_arr+5)+6)=XIANGZI;//箱子*(*(map_arr+5)+7)=XIANGZI;//箱子*(*(map_arr+1)+8)=WEIZHI;//箱子要推到的位置*(*(map_arr+2)+8)=WEIZHI;//箱子要推到的位置}

    void creata_map(int _x,int _y, int (*map)[Y])//创建地图(地图数组[][]){int x,y;for(x = 0; x < _x; x++){for (y = 0; y < _y; y++){if (*(*(map + x) + y) == QIANG){printf ("■");}else if(*(*(map + x) + y) == KONG)

    展开全文
  • 简单C语言游戏代码,这是一个推箱子游戏的源代码
  • 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语言推箱子完整代码

    #include<stdio.h>
    #include<conio.h> 
    #include<windows.h>
     
    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,0,0,1},
    	{1,1,0,0,1,1,1,0,3,0,1},
    	{1,0,4,4,0,4,0,0,0,0,1},
    	{1,0,4,4,0,4,4,3,0,1,1},
    	{1,1,1,1,1,1,1,1,1,1,0}
    	};//原始的图表,五行六列,其中 0 代表着空白的地方; 1 代表着墙;2 代表着人;
    	              //3 代表着箱子;4 代表着箱子的终点位置。 
     
                          //图的变化要靠自己来编写数组,通过数字来进行图的构造。
    int drawmain();
    int tuidong();
    int winshu();
     
    int main()//主函数 
    {
    	while(1)
        {
        	system("cls");//对其进行清屏 
             drawmain();
             tuidong();
           
        }
        printf("shuchu \n");
    	return 0;
     } 
    //把图形刻画出来
     
    int drawmain()
    {	
      int i,j;
        winshu();//调用输赢的函数 
    	for(i=0;i<9;i++)
    	{
    	   for(j=0;j<11;j++)
    	   	   {
    	   	   	   switch(map[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 tuidong()
    {
    	int count,caw=0;//行和列 
    	int i,j,tui;
    	for(i=0;i<9;i++){
    		for (j=0;j<11;j++)
    		{
    			if(map[i][j]==2||map[i][j]==6)
    			{
    				count=i;
    				caw=j;
    			}
    		}	   
    	}
    
    	tui=getch();//与getchar()有区别的是:getchar()输入一个字符后需要回车来进行下一个字符的输入,
    	                //比较麻烦 ,getch()则不需要回车就能连续输入多个字符。 
        switch(tui)
    	{//上
    		case 'W':
    		case 72:
    			// 1.人的前面是空地;
    		    // 2.人的前面是终点位置;
    			// 3.人的前面是箱子
    		    //3.1.箱子的前面是空地;
    			//3.2.箱子的前面是终点位置。
    		 if(map[count-1][caw]==0||map[count-1][caw]==4)
    			{
    				map[count][caw]-=2;
    				map[count-1][caw]+=2;
    			} 
    		 else if(map[count-1][caw]==3||map[count-1][caw]==7)
    			{
    				if(map[count-2][caw]==0||map[count-2][caw]==4)
    				{
    			      map[count][caw]-=2;
    				  map[count-1][caw]-=1;
    				  map[count-2][caw]+=3;
    				}
    			}
    		break;
    	
    //下 
    	    case 'S':
    	    case 80://键值 
    	    	 if(map[count+1][caw]==0||map[count+1][caw]==4)
    			{
    				map[count][caw]-=2;
    				map[count+1][caw]+=2;
    			}
    		
    			 else if(map[count+2][caw]==0||map[count+2][caw]==4)
    			{
    			   	if(map[count+1][caw]==3||map[count+1][caw]==7)
    				{
    			      map[count][caw]-=2;
    				  map[count+1][caw]-=1;
    				  map[count+2][caw]+=3;
    				}
    			}
    			break;
    //左 
    	    case 'A':
    	    case 75:
    	    		 if(map[count][caw-1]==0||map[count][caw-1]==4)
    			{
    				map[count][caw]-=2;
    				map[count][caw-1]+=2;
    			}
    		
    			  else if(map[count][caw-2]==0||map[count][caw-2]==4)
    			{
    			   	if(map[count][caw-1]==3||map[count][caw-1]==7)
    				{
    			      map[count][caw]-=2;
    				  map[count][caw-1]-=1;
    				  map[count][caw-2]+=3;
    				}
    			}
            	break;
    //右 
    	    case 'D':
    		case 77:
    		    	 if(map[count][caw+1]==0||map[count][caw+1]==4)
    			{
    				map[count][caw]-=2;
    				map[count][caw+1]+=2;
    			}
    		
    			  else if(map[count][caw+2]==0||map[count][caw+2]==4)
    			{
    			     if(map[count][caw+1]==3||map[count][caw+1]==7)
    				{
    			      map[count][caw]-=2;
    				  map[count][caw+1]-=1;
    				  map[count][caw+2]+=3;
    				}
    			}
    		    break;
    		     
    }
    } 
    
    int winshu() 
    {
    	int k = 0;//初始化
    	int j,i;
    	for(i=0;i<9;i++)
    	{
    		for (j=0;j<11;j++)
    		{
    			 if(map[i][j]==3)
    			     k++;
    		}
    	}
    	if(k==0)
    		printf("恭喜你,你赢了!\n");
    }
     
    
    展开全文
  • C语言推箱子源程序TXT

    2009-08-22 21:45:43
    C语言推箱子源程序,测试过,可用,可在TC环境下运行
  • vcfv数字滤波器源代码C语言推箱子 hunj程序教程vcfv数字滤波器源代码C语言推箱子 hunj程序教程vcfv数字滤波器源代码C语言推箱子 hunj程序教程
  • 推箱子C语言源代码

    2014-05-07 23:06:32
    推箱子游戏推箱子C语言源代码推箱子C语言源代码
  • 单片机游戏源代码c语言 推箱子 单片机游戏源代码c语言 推箱子 单片机游戏源代码c语言 推箱子
  • /* 一个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

    展开全文
  • 推箱子源代码··超级好的说···有什么意见 留言
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼该推箱子拥有对成绩的记录功能,因此,请挑战自己的最少步数吧!源代码如下:#include #include int main(){system("color 0a");char a[9][11]={" ###### "," # ###"," # ...
  • 推箱子游戏报告+修改建议+源代码+课程设计报告(C语言程序课程设计)
  • 推箱子C语言源代码,,,经典游戏哟。推箱子,很好玩。
  • C语言推箱子源码

    2017-10-16 23:59:57
    C语言推箱子源码,简单的实现推箱子,新手推荐哦,绝对简单
  • c语言 推箱子

    2013-11-29 15:05:44
    简单的c语言推箱子游戏,感兴趣的朋友可以下载参考学习
  • 推箱子C语言实现源代码以及图片
  • C语言课程设计 推箱子游戏源代码 C语言课程设计推箱子 源代码 #include“stdio.h“ #include“bios.h“ #define LEFT 75 #define RIGHT 77 #define UPPER 72 #define DOWN 80 #define ESC 27 struct Boxss { int x,y...
  • 这是运行在TC环境下的C语言推箱子源代码,附带生成的程序,可在windos下运行。
  • 推箱子游戏的运行规则:在街道上上小人推动箱子移动,直到把箱子移动到目的地。思路分析:小人及箱子的移动就是小人或者箱子和路的交换;1 定义二维字符数组,存储地图2 显示地图,提示游戏玩法3 记录小人及箱子位置...
  • 推箱子c语言源代码,小游戏c语言源代码,适合初学者的c语言小游戏源代码 推箱子c语言源代码,小游戏c语言源代码,适合初学者的c语言小游戏源代码
  • 经典小游戏 C语言 源代码 推箱子 经典小游戏 C语言 源代码 推箱子
  • 文章目录C语言推箱子实战控制台版,简单易懂开发环境需要的头文件特殊字符测试主体逻辑地图人的坐标各个子函数的实现画图的函数找人位置的函数按键的函数人物移动的函数上下左右判断游戏是否结束的函数整体源代码...
  • 这是一个用C语言实现的推箱子游戏的程序,和大家分享一下啊
  • V6.2.3.6是简单的版本,因为V6.2.3.4相对而言...并且现在新的解密器解密不了以前的数据代码。 . 且增加了再次确认方可登录功能。如果忘记密码,没办法,把数据文件放在别的文件夹下,然后运行,只能注册一个新用户...
  • 推箱子C语言源代码

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

    2019-04-01 14:49:06
    自己用c语言写的推箱子小游戏,供大家一起交流学习,或者想写小游戏的可以进行参考

空空如也

空空如也

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

c语言推箱子源代码

c语言 订阅