c语言推箱子文字说明,c语言 推箱子(C language Sokoban).doc

c语言 推箱子(C language Sokoban)

c语言 推箱子(C language Sokoban)

推箱子游戏/ * * /

#包括<< DOS。”

#包括< stdio. h >

#包括<

#包括。H

#包括<< BIOS。”

#包括

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

其中:0表示什么都没有,B表示箱子,大片的表示墙壁,很表示目的地,我的表示箱子在目的地。* /

焦ghouse [ 20 ] [ 20 ];

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

焦远*屏幕=(char远*)0xb8000000;

无效putchxy(y,x,ch,焦焦FC,BC)

{

屏幕[(x * 160)+(y < 1)+ 0 ] = CH;

屏幕[(X×160)+(Y << 1)+ 1 ] =(公元前16)+ FC;

}

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

typedef struct Winer {

int,y;

struct Winer * P;

} Winer;

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

typedef struct盒{

int,y;

结构箱下;

}盒;

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

无效printwall(x,y)

{

putchxy(Y-1,x-1219、马真塔、黑);

ghouse [X] [Y] =’w';

}

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

无效printbox(x,y)

{

putchxy(Y-1,x-1,10,白色,黑色);

ghouse [X] [Y] = B;

}

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

无效printwhither1(x,y,Winer **赢,Winer××PW)

{

Winer *量子阱;

putchxy(Y-1,1,*,黄,黑);

ghouse [X] [Y] =是的;

如果(* = NULL)

{

*赢=×PW = QW =(Winer *)malloc(sizeof(Winer));

(×PW)-> x = x;(×PW)-> Y = y;(×PW)-> p = null;

}

其他的

{

QW =(Winer *)malloc(sizeof(Winer));

QW -> x = x;QW -> Y = y;(×PW)-> P =量子阱;(×PW)=量子阱;量子阱-> p = null;

}

}

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

无效printwhither(x,y)

{

putchxy(Y-1,1,*,黄,黑);

ghouse [X] [Y] =是的;

}

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

无效printman(x,y)

{

gotoxy(Y,X);

_al = 02;_cx = 01;_ah = 0xa;

geninterrupt(0x10);

}

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

无效printboxin(x,y)

{

putchxy(Y-1,x-1,10,黄,黑);

ghouse [X] [Y] =“我”;

}

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

无效()

{

int,j;

clrscr();

对于(i = 0;i < 20;i +)

对于(j=0;j<20;j + +)

ghouse [我] [ J ] = 0;

_al = 3;

_ah = 0;

geninterrupt(0x10);

gotoxy(40,6);

printf(“按上、下、左、右打。”);

gotoxy(40,8);

printf(“按ESC退出。”);

gotoxy(40,10);

printf(“新闻空间重置游戏。”);

}

第一关的图象初始化/ * * /

* inithouse1() Winer

{

int,y;

Winer *赢= null,×PW;

gotoxy(8,2);

printf(“一级”);

对于(x=1,y=5;y=9;y + +)

printwall(x + 4,

And + 10);

For (y = 5, X = 1; x < = 5, X + +)

Printwall (X + 4 and + 10);

For (y = 9, X = 1; x < = 5, X + +)

Printwall (X + 4 and + 10);

For (y = 1, X 3 = X; x < = 8; + +)

Printwall (X + 4 and + 10);

For (x = 3, y = 3; x < = 5, X + +)

Printwall (X + 4 and + 10);

For (x = 5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值