C语言俄罗斯方块游戏源代码.docx

上传人:b****4 文档编号:1404987 上传时间:2022-10-22 格式:DOCX 页数:17 大小:57.86KB
下载 相关 举报
C语言俄罗斯方块游戏源代码.docx_第1页
第1页 / 共17页
C语言俄罗斯方块游戏源代码.docx_第2页
第2页 / 共17页
C语言俄罗斯方块游戏源代码.docx_第3页
第3页 / 共17页
C语言俄罗斯方块游戏源代码.docx_第4页
第4页 / 共17页
C语言俄罗斯方块游戏源代码.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言俄罗斯方块游戏源代码.docx

《C语言俄罗斯方块游戏源代码.docx》由会员分享,可在线阅读,更多相关《C语言俄罗斯方块游戏源代码.docx(17页珍藏版)》请在冰豆网上搜索。

C语言俄罗斯方块游戏源代码.docx

C语言俄罗斯方块游戏源代码

C语言俄罗斯方块游戏源代码

/*学无止境*/

 

#include

#include

#include

#defineESC27

#defineUP328

#defineDOWN336

#defineLEFT331

#defineRIGHT333

#defineBLANK32

#defineBOTTOM2

#defineCANNOT1

#defineCAN0

#defineMAX30

#defineF1315

#defineADD43

#defineEQUAL61

#defineDEC45

#defineSOUNDs115

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

intb[4][4];

main(intargc,char*argv[])

{

if(argc!

=1)

{

if(argv[1]!

="")

Heng=atoi(argv[1]);

if(argv[2]!

="")

Shu=atoi(argv[2]);

}

Init();/*初始化界面*/

PreAct=random(8);/*取得当前的方块*/

for(;;)/*以下是游戏流程*/

{

NextAct=random(8);/*取得下一个方块*/

DrawNext

(1);/*画出下一个方块*/

Act=PreAct;

if(Heng%2==0)ActH=Heng/2;

elseActH=(Heng-1)/2;

ActS=0;/*方块开始从游戏空间的中间下落*/

Staus=0;/*取开始的状态*/

NoPass=CAN;/*物体可以下落*/

Give();/*取得当前的方块*/

Display(Act+1);/*显示当前的方块,每种方块的颜色不同*/

GoOn();/*游戏的算法精髓所在*/

PreAct=NextAct;/*方块下落完毕,取得下一个方块*/

DrawNext(0);

}

}

voidInit()

{

intGraphDriver=DETECT,GraphMode;

registerbgidriver(EGAVGA_driver);

initgraph(&GraphDriver,&GraphMode,"");

if(kbhit())Sounds=CANNOT;

setcolor

(1);

OutTextXY(10,10,"Tetris");

OutTextXY(30,30,"Version2.0");

OutTextXY(10,120,"Help:

");

OutTextXY(20,140,"+:

Faster");

OutTextXY(20,160,"-:

Slower");

OutTextXY(20,180,"Esc:

Quit");

OutTextXY(20,200,"F1:

Help");

OutTextXY(10,310,"Copyright(c)1998.2.22");

OutTextXY(10,320,"ByMr.Unique");

outtextxy(10,250,"Score:

00000");

rectangle(BeginH-3,BeginS-3,BeginH+Heng*(Wid+2)+2,BeginS+Shu*(Wid+2)+2);

rectangle(BeginH-5,BeginS-5,BeginH+Heng*(Wid+2)+4,BeginS+Shu*(Wid+2)+4);

rectangle(BeginH+(Heng+4)*(Wid+2)-2,BeginS+10,BeginH+(Heng+8)*(Wid+2)+2,BeginS+12+4*(Wid+2));

for(i=0;i

for(j=0;j

{Position[i][j]=1;

middle[i][j]=-1;

}

for(i=0;i

for(j=0;j

Position[i][j]=0;

for(i=0;i

for(j=0;j

DrawBox(i,j,0);

randomize();

}

voidGoOn()

{

for(;;)

{

Seconds+=0.2;/*控制方块的下落速度*/

if(Seconds>=Delays)

{

Down();

Seconds=0;

if(NoPass==BOTTOM)

{

DetectFill();

middle[ActH][ActS]=Act;

if(ActS==0)

Fail();

return;

}

}

if(kbhit())

Select();

}

}

voidDown()/*方块下降*/

{

Display(0);

if(Touch(ActH,ActS,0,1)==CAN)

ActS++;

else

middle[ActH][ActS]=Act;

Display(Staus+1);

}

intTouch(intx,inty,intdx,intdy)

{

NoPass=CAN;

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

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

Position[x+dx+i][y+dy+j]+=b[i][j];

for(i=0;i

for(j=0;j

if(Position[i][j]>1)

NoPass=CANNOT;

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

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

{

Position[x+dx+i][y+dy+j]-=b[i][j];

middle[x+dx+i][y+dy+j]=Act;

}

if(NoPass==CANNOT&&dx==0&&dy==1)

{

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

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

Position[x+i][y+j]+=b[i][j];

NoPass=BOTTOM;

}

returnNoPass;

}

intGetKey(void)

{

intCh,Low,Hig;

Ch=bioskey(0);

Low=Ch&0x00ff;

Hig=(Ch&0xff00)>>8;

return(Low==0?

Hig+256:

Low);

}

voidSelect()

{

intOldStaus,acts=ActS;

switch(GetKey())

{

caseESC:

Quit();break;

caseDOWN:

Seconds+=14500;break;

caseLEFT:

Display(0);

if(ActH>0&&Touch(ActH,ActS,-1,0)==CAN)

{ActH--;}

Display(Act+1);break;

caseRIGHT:

Display(0);

if(ActH

{ActH++;}

Display(Act+1);break;

caseBLANK:

Display(0);

ksdown();

Display(Act+1);

break;

caseF1:

Help();break;

caseEQUAL:

caseADD:

if(Delays>300)Delays-=100;break;

caseDEC:

if(Delays<3000)Delays+=100;break;

casePAUSEP:

casePAUSEp:

getch();break;

caseSOUNDS:

caseSOUNDs:

if(Sounds==CAN)

Sounds=CANNOT;

else

Sounds=CAN;break;

caseUP:

if(Act==7)

{

while(acts

=1)

acts++;

Position[ActH][acts]=0;

DrawBox(ActH,acts,0);

acts=ActS;

break;

}

else

{

Display(0);

OldStaus=Staus;

switch(Act)

{

case0:

case3:

case4:

if(Staus==1)Staus=0;elseStaus=1;break;

case1:

break;

case2:

case5:

case6:

if(Staus==3)Staus=0;elseStaus+

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1