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

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

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

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

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

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

#include

#include

#include

#defineESC27

#defineUP328

#defineDOWN336

#defineLEFT331

#defineRIGHT333

#defineBLANK32

#defineBOTTOM2

#defineCANNOT1

#defineCAN0

#defineMAX30

#defineF1315

#defineADD43

#defineEQUAL61

#defineDEC45

#defineSOUNDs115

#defineSOUNDS83

#definePAUSEP80

#definePAUSEp112

voidInit();

voidDown();

voidGoOn();

voidksdown();

voidDisplay(intcolor);

voidGive();

intTouch(intx,inty,intdx,intdy);

intGeyKey();

voidSelect();

voidDetectFill();

voidGetScores();

voidFail();

voidHelp();

voidQuit();

voidDrawBox(intx,inty,intColor);

voidOutTextXY(intx,inty,char*String);

voidDispScore(intx,inty,charCh);

voidDrawNext(intColor);

intHeng=12,Shu=20;/*横竖*/

intPosition[MAX][MAX];

intmiddle[MAX][MAX];

intActH,ActS;

intAct,Staus;

inti,j,k;

intWid=10;

intNoPass=CAN;

floatDelays=15000;

intBeginH=250,BeginS=7;

floatSeconds=0;

intScores=0;

intflag=1;

intSounds=CAN;

intPreAct,NextAct;

inta[8][4][4][4]={{{1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0},

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

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

{1,1,1,1,0,0,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,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

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

当前位置:首页 > 考试认证 > IT认证

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

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