搜档网
当前位置:搜档网 › C语言编程游戏代码

C语言编程游戏代码

C语言编程游戏代码
C语言编程游戏代码

#include

#include

#include

#include

#include

#define L 1

#define LX 15

#define L Y 4

static struct BLOCK

{

int x0,y0,x1,y1,x2,y2,x3,y3;

int color,next;

intb[]={{0,1,1,1,2,1,3,1,4,1},{1,0,1,3,1,2,1,1,4,0},{1,1,2,2,1,2,2,1,1,2},{0,1,1,1,1,0,2,0,2,4}, {0,0,0,1,1,2,1,1,2,3},{0,0,1,0,1,1,2,1,3,8},{1,0,1,1,2,2,2,1,2,5},{0,2,1,2,1,1,2,1,2,6},{0,1,0,2,1,1,1 ,0,3,9},{0,1,1,1,1,2,2,2,3,10},{1,1,1,2,2,1,2,0,3,7},{ 1,0,1,1,1,2,2,2,7,12},{0,1,1,1,2,1,2,0,7,13},{0 ,0,1,2,1,1,1,0,7,14},{0,1,0,2,1,1,2,1,7,11},{0,2,1,2,1,1,1,0,5,16},{0,1,1,1,2,2,2,1,5,17},{1,0,1,1,1, 2,2,0,5,18},{0,0,0,1,1,11,2,1,5,15},{0,1,1,1,1,0,2,1,6,2,0},{0,1,1,2,1,1,1,0,6,21},{0,1,1,2,1,1,2,1,6 ,22},{1,0,1,1,1,2,2,1,6,19}};

static int d[10]={33000,3000,1600,1200,900,800,600,400,300,200};

int Llevel,Lcurrent,Lnext,Lable,lx,ly,Lsum;

unsigned Lpoint;

int La[19][10],FLAG,sum;

unsigned ldelay;

void scrint(),datainit(),dispb(),eraseeb();

void throw(),judge(),delayp(),move(0,note(0,show();

int Ldrop(),Ljudge(),nextb(),routejudge();

}

main()

{

char c;

datainit();

Label=nextb();

Label=Ldrop();

while(1){

delayp();

if(Label!=0)

{

Ljudge();

Lable=nextb();

}

ldelay--;

if(ldelay==0)

{

Label=Ldrop();

ldelay=d[0];

}

if(FLAG!=0) break;

while(getch()!='\r');

goto xy(38,16);

cputs("again?");

c=getch();

while(c!='n'&&c!='N')

c lscr();

}

int nextb()

{

if(La[(b[Lnext].y0)][(3+b[Lnext].x0)]!=0||La[(b[Lnext].y1)][(3+b[Lnext].x1)]!=0|| La[(b[Lnext].y2)][(3+b[Lnext].x2)]!=0||La[(b[Lnext].y3)][3+b[Lnext].x3)]!=0) {

FLAG=L;

return (-1);

}

erase b(0,3,5,Lnext);

Lcurrent=Lnext;

lx=3;ly=0;

Label=0;

ldelay=d[0];

Lsum ++;

Lpoint+=1;

Lnext=random(23);

dispb(0,3,5,Lnext);

text color(7);

goto xy(3,14);

printf("%#5d",Lsum);

goto xy(3,17);

printf("%#5d",Lpoint);

return(0);

}

void delayp()

{

char key;

if(kbhit()!=0)

{

key=getch();

move(key);

if(key=='\\')

getch();

}

}

void move(funkey)

char funkey;

{

int tempcode;

case 'k';

if(lx+b[current].x0>0)

{

if(La[ly+(b[Lcurrent].y0)][lx-1+(b[Lcurrent].x0)]==0&&La[(ly+b[current].y1)][(lx-1+b[curr ent].x1]==0&&La[ly+b[current].y2)][lx-1+b[Lcurrent].x2)]==0&&La[ly+(b[current].y3)][lx-1+(b [Lcurrent].x3)]==0)

{

eraseb(L,lx,lyLcurrent);

lx--;

dispb(L,lx,ly,Lcurrent);

}

}break;

case 0x20;

tempcode=b[Lcurrent].next;

if (lx+b[tempcode].x0>=0 && lx+b[tempcode].x3<=9 && ly+b[tempcode].y1<=19 && ly+b[tempcode].y2<=19)

{

if(routejudge()!+-1)

{

if(La+(b[tempcode].y0)][lx+(b[tempcode].x0)]==0 && La[ly+(b[tempcode].y1)][lx+(b[tempcode].x1)]==0 && La[ly+(b[tempcode].y2)][lx+(b[tempcode].x2)]==0 && La[ly+(b[tempcode].y3)][lx+(b[tempcode].x3)]==0)

eraseb(L,lx,ly,Lcurrent);

Lcurrent=tempcode;

dispb(L,lx,ly,Lcurrent);

}

}break;

case 'M';

if(lx+b[Lcurrent].x3<9)

{

if(La[ly+(b[Lcurrent].y0)][lx+(b[Lcurrent].x0)]==0 &&

La[ly+(b[Lcurrent].y1)][lx+(b[Lcurrent].x1)]==0 && La[ly+(b[Lcurrent].y2)][lx+(b[Lcurrent].x2)]==0 && La[ly+(b[Lcurrent].y3)][lx+(b[Lcurrent].x3)]==0)

{

eraseb(L,lx,ly,Lcurrent);

lx++;

disb(L,lx,ly,Lcurrent);

}

}break;

case 'p';

throw();break;

case 0x1b;

clrscr();

exit(0);break;

default:break;

}

void throw()

{

int tempy;

tempy=ly;

while(ly+b[Lcurrent].y1<19 && ly+b[current].y2<19&&La[ly+(b[Lcurrent].y0)][lx+(b[Lcurrent].x0)]==0 && La[ly+(b[Lcurrent].y1)][lx+(b[Lcurrent].x1)]==0 && La[ly+(b[Lcurrent].y2)][lx+(b[Lcurrent].x2)]==0 && La[ly+(b[Lcurrent].y3)][lx+(b[Lcurrent].x3)]==0)

ly++;

ly--;

eraseb(L,lx,tempy,Lcurrent);

dispb(L,lx,ly,Lcurrent);

La[ly+b[Lcurrent].y0)][lx+(b[current].x0)]=La[ly+b[Lcurrent].y1)][lx+(b[current].x1)]=La[l y+b[Lcurrent].y2)][lx+(b[current].x2)]=La[ly+b[Lcurrent].y3)][lx+(b[current].x3)]=b[Lcurrent].c olor;

Label=-1;

}

int routejudge()

{

int i,j;for(i=0;i<3;i++)

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

if(La[ly+i][lx+j]!=0)

return(-1);

else return(1);

}

int Ldrop()

{

if(ly+b[Lcurrent].y1>=18||ly+b[Lcurrent].y2>=18

{

La[ly+b[Lcurrent].y0)][lx+(b[current].x0)]=3;

La[ly+b[Lcurrent].y1)][lx+(b[current].x1)]=1;

La[ly+b[Lcurrent].y2)][lx+(b[current].x2)]=5;

La[ly+b[Lcurrent].y3)][lx+(b[current].x3)]=b[Lcurrent].color;

return(-1);

}

if(La(ly+1+(b[Lcurrent].y0)][lx+(b[Lcurrent].x0)]!=0||La(ly+1+(b[Lcurrent].y1)][lx+(b[Lcur rent].x1)]!=0||La(ly+1+(b[Lcurrent].y2)][lx+(b[Lcurrent].x2)]!=0||La(ly+1+(b[Lcurrent].y3)][lx+( b[Lcurrent].x3)]!=0){La[ly+b[Lcurrent].y0)][lx+(b[current].x0)]=La[ly+b[Lcurrent].y1)][lx+(b[cu rrent].x1)]=0B

La[ly+b[Lcurrent].y2)][lx+(b[current].x2)]=La[ly+b[Lcurrent].y3)][lx+(b[current].x3)]=b[Lcurren t].color)

{

return(-1);

eraseb(L,lx,ly,Lcurrent);

dispb(L,lx,++ly,Lcurrent);

return(0);

}

}

int Ljudge()

{

int i,j,k,lines,f;

static int p[5]={0,1,3,6,10};

lines=0;

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

{

f=0;

if((ly+k)>18)

continue;

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

{

if(La[ly+k]==0);i>0;i--)

{f++;break;}

if(f==0)

{

movetext(LX,L Y,LX+19,L Y+ly+k-1,LX,L Y+1);

for(i=(ly+k);i>0;i--){

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

La[j]=La[i-1][j];{

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

La[0][j]=0;

lines++;

}

}

}

}

}

Lpoint+=p[lines]*10;

return(0);

}

void scrint()

{

int i;

char lft[20];

textbackground(1);

clrscr();

goto xy(30,9);

cputs("enter your name");

scanf("%s",lft);

goto xy(25,14);

scanf("%s",lft);

textbackground(0);

clrscr();

goto xy(17,1);

printf("%s",lft);

goto xy(5,3);

puts("next");

goto xy(4,13);

cputs("block");

goto xy(4,16);

cputs("point");

for(i=0;i<19;i++){

goto xy(LX-2,L Y+1);

cputs("** **");

}

goto xy(LX-2,L Y+19);

cputs("**********************");

void datainit()

{

int i,j;)

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

{

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

{

La[j]=0;

Label=0;

FLAG=0;

ldelay=d[0];

Lsum=0;

Lpoint=0;

randomize();

Lnext=random(23);

}

}

}

void dispb(LRflag,x,y,blockcode)

{

int realx,realy;

if(LRflag==L)

{

realx=LX+x*2;realy=L Y+y;

}

realx=x;

raly=y;

textcolor(b[blockcode].color);

goto xy(realx+2*b[blockcode].x0,realy+b[blockcode].y0); cputs("**");

goto xy(realx+2*b[blockcode].x1,realy+b[blockcode].y1); cputs("**");

goto xy(realx+2*b[blockcode].x2,realy+b[blockcode].y2); cputs("**");

goto xy(realx+2*b[blockcode].x3,realy+b[blockcode].y3); cputs("**");

}

void eraseb(LRflag,x,y,blockcode)

int LRflag,x,y,blockcode;

int realx,realy;

if(LRflag==L)

{realx=LX+x*2;realy=L Y+y;}

else

{realx=Lx+x*2;realy=L Y+y;}

textcolor(0);

goto xy(realx+2*b[blockcode].x0,realy+b[blockcode].y0);

cputs("**");

goto xy(realx+2*b[blockcode].x1,realy+b[blockcode].y1);

cputs("**");

goto xy(realx+2*b[blockcode].x2,realy+b[blockcode].y2);

cputs("**");

goto xy(realx+2*b[blockcode].x3,realy+b[blockcode].y3);

cputs("**");

}

相关主题