用C语言编写的玩砖游戏

这是一个用C语言编写的打砖块游戏的雏形。

在编译之前,在主目录中创建一个文本文件(xia.txt ),内容为:0 0 0 0 0。

# include & ltdos.h & gt

# include & ltstdio.h & gt

# include & ltgraphics.h & gt

# include & ltmath.h & gt

工会规章;

无符号int zhuan[5];

int Msinit();

void Setmouse(int left,int right,int top,int buttom);

int Msread(int *xp,int *yp,int * bup);

void Draw(int x,int y,int sizex,int sizey);

主()

{int mode=VGAHI,driver = VGA& ltbr/>;无符号整数l;& ltbr/>;int i,gi,gj,j,flag = 1;/*i,j是循环变量,flag是标记变量,-1:移动到X的负半轴,+1:移动到X的正半轴*/

init graph(& amp;司机& amp模式,“\ \ TC \ \ BGI”);

msinit();

set mouse((int)(pianx+1+bx/2),(int)((tx+JX)* 8+pianx-1-bx/2),(int)byy+piany,(int)byy+piany);

star:clear device();/*程序过载的干预点*/

sum = 0;

qx = 100.0+pianx-10;QY = 180.0+pianx-10;k = 0.33

set color(7);

矩形((int)(pianx-2),(int)(piany-2),(int)((tx+jx)*8+2+pianx),302+piany);

set color(1);

矩形((int)(pianx-1),(int)(piany-1),(int)((tx+jx)*8+1+pianx),301+piany);

/*读取磁盘*/

for(I = 0;我& lt5;i++)

fscanf(p," %x ",& ampzhuan[I]);

/*画砖*/

for(I = 0;我& lt5;i++)

{ l = 1;& ltbr/>;for(j = 0;j & lt16;j++)& lt;br/>;{if((转[I]& amp;l)= = 0)& lt;br/>;{ Draw((int)((JX+tx)*((16 * I+j)% 8)+pianx+JX),(int)((jy+ty)*((int)((16 * I+j)/8))+piany+jy),& ltbr/>;& ltbr/>;(int)tx,(int)ty);& ltbr/>;sum+= 1;& ltbr/>;}

l = l * 2;

}

}

for(;;)

{ setfillstyle(1,0);

bar(mx-bx/2,my,mx+bx/2,my+5);

msread(& amp;MX & amp;我的& ampMB);

Draw(mx-bx/2,my,bx,5);

set color(0);

circle(qx,qy,r);

/*判断是否反弹*/

if(qx-r & lt;= pianx+1 | | qx+r & gt;=(tx+JX)* 8+pianx-1){ flag =-flag;k =-k;}

if(QY-r & lt;= piany+1)k =-k;

for(gi = 0;gi & lt5;gi++)

{ l = 1;& ltbr/>;for(gj = 0;gj & lt16;gj++)& lt;br/>;{ & ltbr/>;if((转[gi]& amp;l)= = 0)& lt;br/>;{ j =(16 * gi+gj)/8;& ltbr/>;I =(16 * gi+gj)% 8;& ltbr/>;x =(JX+tx)* I+JX+tx/2+pianx;& ltbr/>;y =(jy+ty)* j+jy+ty/2+plany;& ltbr/>;/*边缘判断1 */< br/>if(QY & gt;y-ty/2 & amp;& ampqy & lty+ty/2 & amp;& amp(pow(qx+r-x+tx/2,2)& lt;1 || pow(qx-r-x-tx/2,2)& lt;1))& lt;br/>;{ flag =-flag;k =-k;& ltbr/>;zhuan[gi]= zhuan[gi]| l;& ltbr/>;sum-= 1;& ltbr/>;if(sum==0) {printf("Win!\ n ");getch();goto star}

setfillstyle(1,0);

bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)

* j+piany+jy+ty);

}

其他

/*边缘判断2*/

if(qx & gt;= x-tx/2 & amp;& ampqx & lt= x+tx/2 & amp;& amp(pow(qy+r-y+ty/2,2)& lt;1 || pow(qy-r-y-ty/2,2)& lt;1))

{ k =-k;& ltbr/>;zhuan[gi]= zhuan[gi]| l;& ltbr/>;sum-= 1;& ltbr/>;if(sum==0) {printf("Win!\ n ");getch();goto star}

setfillstyle(1,0);

bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)

* j+piany+jy+ty);

}

其他

/*角度判断*/

if(pow(qx-x+tx/2,2)+pow(qy-y+ty/2,int *bup)

{int xnew,ynew,ch;& ltbr/>;if(kbhit())返回getch();& ltbr/>;regs . x . ax = 3;& ltbr/>;int86(0x33,& amp规则,以及。regs);& ltbr/>;xnew = regs . x . CX;& ltbr/>;ynew = regs . x . dx;& ltbr/>;* bup = regs . x . bx;& ltbr/>;* xp = xnew& ltbr/>;* yp = ynew& ltbr/>;return-1;& ltbr/>;}