c语言保存推箱子游戏进度,我的推箱子游戏(请高手指点c语言内存申请的问题。)...

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

程序演示下载:http://gfgame.diy.myrice.com/down/tuixiangzi.htm

/*作者:logicman(逻辑人)

2005年7月27日 编写绘图代码。将图片保存到文件里。推箱子程序只要调用文件就可以了。

2005年7月29日 有于对c不太了解中途遇到太多内存声请上的问题,中断。

2005年8月24日 一个内存申请的问题终于被解决。解决代码标记①

2005年8月25日 游戏完成,但是中间出现了很多漏洞。

2005年8月26日 漏洞被解决。漏洞出现地方的标记②

心得体会:编写程序,程序的顺序也是很重要的。而漏洞也常常出现在顺序的上。

*/

/* 地图可以自己绘制,但要在程序中说明地图的个数 (标记在③),并规定了命名的方式为level数字.dat(数字的取值在0-9999)。地图中的主要含义:

N:表示不可人不可走到的空白地方;

B:表示人可以走的空白地方;

W:表示墙;

A:表示箱子;

L:表示目标;(箱子和目标的个数必须相等)

U:表示人。

*/

#include 

#include 

#include 

#define filemax 5/* ③ */

char *Pup,*Park,*Pwall,*Plocus,*Pblank,loca[20][20],chb[5];

int locusum,mainx,mainy,level,geshu,bushu;

main()

{

int size;

FILE *filebuf;

int playkey=0,keyshu=1,keyl=0;

initgraph(9,2,"");

/*  载入图片到内存中 本来想用一个函数的,可是我还是对c语言的申请内存不太了解 */

/*载入小人*/

filebuf=fopen("up.pic","rb+");

size=getw(filebuf);

Pup=calloc(5,size);/* 申请了,4块长度为size的内存*/

/*    ①    */

Park=Pup+size;/* 对c语言的内存申请不太了解,只有使用这个方法了。*/

Pwall=Park+size;

Plocus=Pwall+size;

Pblank=Plocus+size;

fread(Pup,size,1,filebuf);

/*载入箱子*/

filebuf=fopen("ark.pic","rb+");

size=getw(filebuf);

fread(Park,size,1,filebuf);

/*载入墙*/

filebuf=fopen("wall.pic","rb+");

size=getw(filebuf);

fread(Pwall,size,1,filebuf);

/*载入目的*/

filebuf=fopen("locus.pic","rb+");

size=getw(filebuf);

fread(Plocus,size,1,filebuf);

filebuf=fopen("blank.pic","rb+");

size=getw(filebuf);

fread(Pblank,size,1,filebuf);

/*载入完毕!!!!!!!!!!!!!*/

/*绘制menu*/

setcolor(4);

settextstyle(0,0,4);

outtextxy(200,100,"Bunt Ark");

settextstyle(0,0,1);

outtextxy(380,140,"V1.0");

do{

switch(keyshu){

case 1: gamemenu(15,7,7);break;

case 2: gamemenu(7,15,7);break;

case 3: gamemenu(7,7,15);break;

}

playkey=getch();

switch(playkey){

case 72: keyshu-=1;if(keyshu<1) keyshu=3;break;

case 80: keyshu+=1;if(keyshu>3) keyshu=1;break;

case 13: keyl=keyshu;break;

}

if (keyl==2){

settextstyle(0,0,2);

setcolor(15);

outtextxy(300,400,"Email:cigol@126.com");

bioskey(0);

setcolor(0);

outtextxy(300,400,"Email:cigol@126.com");

settextstyle(1,0,1);

}

else if (keyl==3) return;

else if (keyl==1) break;

keyl=0;

}while(1);

cleardevice();

setcolor(4);

outtextxy(450,400,"Page Up");

outtextxy(450,410,"Page Down");

outtextxy(450,420,"R");

outtextxy(450,430,"Esc");

setcolor(15);

outtextxy(510,400,":previous level");

outtextxy(520,410,": next level");

outtextxy(460,420,": restart level");

outtextxy(475,430,": quit game");

setcolor(4);

outtextxy(450,470,"logicman V. 0.1");

outtextxy(500,170,"bushu:");

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值