俄罗斯方块和贪吃蛇的C语言源程序.docx

上传人:b****2 文档编号:1988367 上传时间:2023-05-02 格式:DOCX 页数:43 大小:21.38KB
下载 相关 举报
俄罗斯方块和贪吃蛇的C语言源程序.docx_第1页
第1页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第2页
第2页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第3页
第3页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第4页
第4页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第5页
第5页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第6页
第6页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第7页
第7页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第8页
第8页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第9页
第9页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第10页
第10页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第11页
第11页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第12页
第12页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第13页
第13页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第14页
第14页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第15页
第15页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第16页
第16页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第17页
第17页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第18页
第18页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第19页
第19页 / 共43页
俄罗斯方块和贪吃蛇的C语言源程序.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

俄罗斯方块和贪吃蛇的C语言源程序.docx

《俄罗斯方块和贪吃蛇的C语言源程序.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块和贪吃蛇的C语言源程序.docx(43页珍藏版)》请在冰点文库上搜索。

俄罗斯方块和贪吃蛇的C语言源程序.docx

俄罗斯方块和贪吃蛇的C语言源程序

俄罗斯方块和贪吃蛇的C语言源程序

刚刚在群里听某些人说发上来可以拿奖金,于是我就发了~~~

脸皮比较厚,大家见笑了~~

虽然写的没有网上现成的那些好,但是这些100%是自己写的,

因为是写着玩的,所以就没有优化,也没有用什么复杂的技术,

但是这样的程序反而更容易看懂~

编译环境是古老的turboc2.0,喜欢dos编程的朋友可以拿来消遣一下。

嘿嘿嘿嘿~

附件是源文件和编译好的文件~

俄罗斯方块

-------------------------

#include"graphics.h"

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"bios.h"

#include"time.h"

#include"stdlib.h"

#include"dos.h"

#defineVK_ESC0x11b

#defineVK_UP0x4800

#defineVK_DOWN0x5000

#defineVK_LEFT0x4b00

#defineVK_RIGHT0x4d00

#defineTIMER0x1c

#defineSEC(N)N*18.8

typedefbox[4][4];

FILE*fp;

intspace[26][18];

boxbar1[2],bar2[1],bar3[4],bar4[2],bar5[2],bar6[4],bar7[4];

floatcount;

intnexttype,nextvalue;

intovered;

intscore,higher;

charscoretext[50],highscore[50];

struct

{

inti;

intj;

box*t;

intv;

}cur_bar;

voidSetScreen();

voidSetValue();

voidDraw();

voidSetBox();

voidDrawBack();

voidDrawBox();

voidCreateBar(inti,intj,box*type,intvalue);

voidSetTimer(voidinterrupt(*theProc)());

voidKillTimer();

voidinterruptProc();

voidinterrupt(*oldtimer)();

voidOneStep();

intIsFall();

voidCheckState();

voidClearLine(intLine);

voidMoveLeft();

voidMoveRight();

voidChangeBar();

voidShowScore();

voidShowNextWindow();

voidReadHigh();

voidWriteHigh();

intmain()

{

intkey;

count=0;

overed=0;

score=0;

ReadHigh();

randomize();

oldtimer=getvect(TIMER);

SetBox();

SetScreen();

DrawBack();

Draw();

CreateBar(0,5,bar3,2);

nexttype=random(7)+1;

nextvalue=0;

ShowNextWindow();

SetTimer(Proc);

setcolor(BLUE);

outtextxy(520,60,"YOURSCORE");

outtextxy(520,80,"0");

outtextxy(520,100,"HIGHSCORE");

outtextxy(520,120,highscore);

while

(1)

{

if(count>SEC(0.5))

{

count=0;

OneStep();

}

if(bioskey

(1))

{

key=bioskey(0);

if(key==VK_ESC)

{

break;

}

if(!

overed)switch(key)

{

caseVK_LEFT:

MoveLeft();

break;

caseVK_RIGHT:

MoveRight();

break;

caseVK_UP:

ChangeBar();

break;

caseVK_DOWN:

OneStep();

CheckState();

break;

}

else

{

break;

}

}

}

closegraph();

KillTimer();

if(score>higher)higher=score;

WriteHigh();

return0;

}

voidSetScreen()

{

intGraphDriver=DETECT;

intGraphMode=VGAHI;

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

setbkcolor(LIGHTMAGENTA);

}

voidSetValue()

{

inti,j;

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

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

space[j]=0;

}

voidDraw()

{

inti,j;

setfillstyle(SOLID_FILL,LIGHTBLUE);

setcolor(BLACK);

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

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

{

if(space[j])

{

bar(160+j*20,i*20,160+j*20+20,i*20+20);

rectangle(160+j*20,i*20,160+j*20+20,i*20+20);

}

}

}

voidSetBox()

{

inti,j,k;

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

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

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

bar1[j][k]=0;

bar1[0][0][1]=1;

bar1[0][1][1]=1;

bar1[0][2][1]=1;

bar1[0][3][1]=1;

bar1[1][2][0]=1;

bar1[1][2][1]=1;

bar1[1][2][2]=1;

bar1[1][2][3]=1;

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

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

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

bar2[j][k]=0;

bar2[0][1][1]=1;

bar2[0][1][2]=1;

bar2[0][2][1]=1;

bar2[0][2][2]=1;

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

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

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

bar3[j][k]=0;

bar3[0][1][1]=1;

bar3[0][2][0]=1;

bar3[0][2][1]=1;

bar3[0][3][1]=1;

bar3[1][1][1]=1;

bar3[1][2][0]=1;

bar3[1][2][1]=1;

bar3[1][2][2]=1;

bar3[2][1][1]=1;

bar3[2][2][1]=1;

bar3[2][2][2]=1;

bar3[2][3][1]=1;

bar3[3][2][0]=1;

bar3[3][2][1]=1;

bar3[3][2][2]=1;

bar3[3][3][1]=1;

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

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

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

bar4[j][k]=0;

bar4[0][1][2]=1;

bar4[0][2][1]=1;

bar4[0][2][2]=1;

bar4[0][3][1]=1;

bar4[1][2][1]=1;

bar4[1][2][2]=1;

bar4[1][3][2]=1;

bar4[1][3][3]=1;

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

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

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

bar5[j][k]=0;

bar5[0][1][1]=1;

bar5[0][2][1]=1;

bar5[0][2][2]=1;

bar5[0][3][2]=1;

bar5[1][3][1]=1;

bar5[1][2][2]=1;

bar5[1][2][3]=1;

bar5[1][3][2]=1;

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

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

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

bar6[j][k]=0;

bar6[0][1][1]=1;

bar6[0][1][2]=1;

bar6[0][2][2]=1;

bar6[0][3][2]=1;

bar6[1][2][1]=1;

bar6[1][2][2]=1;

bar6[1][2][3]=1;

bar6[1][3][1]=1;

bar6[2][1][1]=1;

bar6[2][2][1]=1;

bar6[2][3][1]=1;

bar6[2][3][2]=1;

bar6[3][3][0]=1;

bar6[3][3][1]=1;

bar6[3][3][2]=1;

bar6[3][2][2]=1;

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

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

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

bar7[j][k]=0;

bar7[0][1][1]=1;

bar7[0][1][2]=1;

bar7[0][2][1]=1;

bar7[0][3][1]=1;

bar7[1][2][1]=1;

bar7[1][3][1]=1;

bar7[1][3][2]=1;

bar7[1][3][3]=1;

bar7[2][1][2]=1;

bar7[2][2][2]=1;

bar7[2][3][2]=1;

bar7[2][3][1]=1;

bar7[3][2][0]=1;

bar7[3][2][1]=1;

bar7[3][2][2]=1;

bar7[3][3][2]=1;

}

voidCreateBar(inti,intj,box*type,intvalue)

{

while(bioskey

(1))bioskey(0);

cur_bar.i=i;

cur_bar.j=j;

cur_bar.t=type;

cur_bar.v=value;

DrawBox();

}

voidDrawBox()

{

inti,j;

setfillstyle(SOLID_FILL,LIGHTBLUE);

setcolor(BLACK);

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

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

{

if((cur_bar.t)[cur_bar.v][j])

{

bar(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+i*20+20);

rectangle(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+i*20+20);

}

}

setfillstyle(SOLID_FILL,YELLOW);

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

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

{

if((cur_bar.t[cur_bar.v][j])&&(cur_bar.i>0)&&(!

(cur_bar.t)[cur_bar.v][i-1][j])&&(!

space[cur_bar.i+i-1][cur_bar.j+j]))

{

if(j+cur_bar.j<0||j+cur_bar.j>15)setfillstyle(SOLID_FILL,LIGHTMAGENTA);

bar(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20);

rectangle(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20);

if(j+cur_bar.j<0||j+cur_bar.j>15)setfillstyle(SOLID_FILL,YELLOW);

}

}

i=0;

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

{

if((cur_bar.t[cur_bar.v][j])&&(cur_bar.i>0)&&(!

space[cur_bar.i+i-1][cur_bar.j+j]))

{

if(j+cur_bar.j<0||j+cur_bar.j>15)setfillstyle(SOLID_FILL,LIGHTMAGENTA);

bar(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20);

rectangle(160+(cur_bar.j*20)+j*20,(cur_bar.i*20)+(i-1)*20,160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+(i-1)*20+20);

if(j+cur_bar.j<0||j+cur_bar.j>15)setfillstyle(SOLID_FILL,YELLOW);

}

}

}

voidSetTimer(voidinterrupt(*theProc)())

{

disable();

setvect(TIMER,theProc);

enable();

}

voidKillTimer()

{

disable();

setvect(TIMER,oldtimer);

enable();

}

voidinterruptProc()

{

count++;

oldtimer();

}

voidOneStep()

{

inti,j;

cur_bar.i++;

Draw();

DrawBox();

CheckState();

if(IsFall())

{

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

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

{

space[cur_bar.i+i][cur_bar.j+j]=cur_bar.t[cur_bar.v][j]||space[cur_bar.i+i][cur_bar.j+j];

}

switch(nexttype)

{

case1:

CreateBar(0,7,bar1,nextvalue);

break;

case2:

CreateBar(0,7,bar2,nextvalue);

break;

case3:

CreateBar(0,7,bar3,nextvalue);

break;

case4:

CreateBar(0,7,bar4,nextvalue);

break;

case5:

CreateBar(0,7,bar5,nextvalue);

break;

case6:

CreateBar(0,7,bar6,nextvalue);

break;

case7:

CreateBar(0,7,bar7,nextvalue);

break;

}

nexttype=random(7)+1;

switch(nexttype)

{

case1:

nextvalue=random

(2);

break;

case2:

nextvalue=random

(1);

break;

case3:

nextvalue=random(4);

break;

case4:

nextvalue=random

(2);

break;

case5:

nextvalue=random

(2);

break;

case6:

nextvalue=random(4);

break;

case7:

nextvalue=random(4);

break;

}

ShowNextWindow();

}

}

intIsFall()

{

intres=0;

inti,j;

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

{

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

{

if(cur_bar.t[cur_bar.v][j]==1)

{

if((space[cur_bar.i+i+1][cur_bar.j+j])||(cur_bar.i+i>22))

{

res=1;

}

}

}

}

returnres;

}

voidClearLine(intLine)

{

inti,j,col;

i=0;

col=0;

while

(1)

{

if(count>SEC(0.2))

{

count=0;

col=!

col;

if(col==1)setcolor(RED);

elsesetcolor(GREEN);

rectangle(160,Line*20,480,Line*20+20);

i++;

}

if(i>6)break;

}

for(i=Line;i>0;i--)

{

for(j=0;j<16;j++)space[j]=space[i-1][j];

}

DrawBack();

Draw();

DrawBox();

score+=100;

ShowScore();

while(bioskey

(1))bioskey(0);

}

voidCheckState()

{

inti,j,ept;

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

{

if(space[2])

{

/*GameOver!

!

*/

KillTimer();

overed=1;

printf("GameOver!

\n");

break;

}

}

for(i=23;i>=0;i--)

{

ept=0;

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

{

if(space[j]==0)ept=1;

}

if(!

ept)ClearLine(i);

}

}

voidMoveLeft()

{

intcan=1;

inti,j;

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

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

{

if(cur_bar.t[cur_bar.v][j])

if((cur_bar.j+j-1<0)||(space[cur_bar.i+i][cur_bar.j+j-1]))can=0;

}

if(can)

{

cur_bar.j--;

DrawBox();

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

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

{

if((cur_bar.t[cur_bar.v][j])&&!

cur_bar.t[cur_bar.v][j+1])

{

bar(160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+40,(cur_bar.i*20)+i*20+20);

rectangle(160+(cur_bar.j*20)+j*20+20,(cur_bar.i*20)+i*20,160+(cur_bar.j*20)+j*20+40,(cur_bar.i*20)+i*20+20);

}

}

}

if(IsFall())

{

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

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

{

space[cur_bar.i+i][cur_bar.j+j]=cur_bar.t[cur_bar.v][j]||space[cur_bar.i+i][cur_bar.j+j];

}

CheckState();

switch(nexttype)

{

case1:

CreateBar(0,7,bar1,nextvalue);

break;

case2:

CreateBar(0,7,bar2,nextvalue);

break;

case3:

CreateBar(0,7,bar3,nextvalue);

break;

case4:

CreateBar(0,7,bar4,nextvalue);

break;

case5:

CreateBar(0,7,bar5,nextvalue);

break;

case6:

CreateBar(0,7,bar6,nextvalue);

break;

case7:

CreateBar(0,7,bar7,nextvalue);

break;

}

nexttype=random(7)+1;

switch(nexttype)

{

case1:

nextvalue=random

(2);

break;

case2:

nextvalue=random

(1);

break;

case3:

nextvalue=random(4);

break;

case4:

nextvalue=random

(2);

break;

case5:

nextvalue=random

(2);

break;

case6:

nextvalue=random(4);

break;

case7:

nextvalue=random(4);

break;

}

ShowNextWindow();

}

}

voidMoveRight()

{

intcan=1;

inti,j;

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

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

{

if(cur_bar.t[cur_bar.v][j])

if((cur_bar.j+j+1>15)||(space[cur_bar.i+i][cur_bar.j+j+1]))ca

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2