C语言编程游戏代码.docx
- 文档编号:24099485
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:8
- 大小:15.64KB
C语言编程游戏代码.docx
《C语言编程游戏代码.docx》由会员分享,可在线阅读,更多相关《C语言编程游戏代码.docx(8页珍藏版)》请在冰豆网上搜索。
C语言编程游戏代码
#include
#include
#include
#include
#include
#defineL1
#defineLX15
#defineLY4
staticstructBLOCK{intx0,y0,x1,y1,x2,y2,x3,y3;
intcolor,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}};
staticintd[10]={33000,3000,1600,1200,900,800,600,400,300,200};
intLlevel,Lcurrent,Lnext,Lable,lx,ly,Lsum;
unsignedLpoint;
intLa[19][10],FLAG,sum;
unsignedldelay;
voidscrint(),datainit(),dispb(),eraseeb();
voidthrow(),judge(),delayp(),move(0,note(0,show();
intLdrop(),Ljudge(),nextb(),routejudge();}main(){charc;
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');
gotoxy(38,16);
cputs("again?
");
c=getch();
while(c!
='n'&&c!
='N')
clscr();}intnextb(){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);}eraseb(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);
textcolor
(7);
gotoxy(3,14);
printf("%#5d",Lsum);
gotoxy(3,17);
printf("%#5d",Lpoint);
return
(0);}voiddelayp(){charkey;
if(kbhit()!
=0){key=getch();
move(key);
if(key=='\\')
getch();}}
voidmove(funkey)
charfunkey;{inttempcode;
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[current].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;
case0x20;
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;
case0x1b;
clrscr();
exit
(0);break;
default:
break;}voidthrow(){inttempy;
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[ly+b[Lcurrent].y2)][lx+(b[current].x2)]=La[ly+b[Lcurrent].y3)][lx+(b[current].x3)]=b[Lcurrent].color;
Label=-1;}introutejudge(){inti,j;for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(La[ly+i][lx+j]!
=0)
return(-1);
elsereturn
(1);}intLdrop(){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[Lcurrent].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[current].x1)]=0B
La[ly+b[Lcurrent].y2)][lx+(b[current].x2)]=La[ly+b[Lcurrent].y3)][lx+(b[current].x3)]=b[Lcurrent].color){return(-1);
eraseb(L,lx,ly,Lcurrent);
dispb(L,lx,++ly,Lcurrent);
return
(0);}}
intLjudge(){inti,j,k,lines,f;
staticintp[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,LY,LX+19,LY+ly+k-1,LX,LY+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);}voidscrint(){inti;
charlft[20];
textbackground
(1);
clrscr();
gotoxy(30,9);
cputs("enteryourname");
scanf("%s",lft);
gotoxy(25,14);
scanf("%s",lft);
textbackground
(0);
clrscr();
gotoxy(17,1);
printf("%s",lft);
gotoxy(5,3);
puts("next");
gotoxy(4,13);
cputs("block");
gotoxy(4,16);
cputs("point");
for(i=0;i<19;i++){
gotoxy(LX-2,LY+1);
cputs("****");}gotoxy(LX-2,LY+19);
cputs("**********************");}voiddatainit(){inti,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);}}}voiddispb(LRflag,x,y,blockcode){intrealx,realy;
if(LRflag==L){realx=LX+x*2;realy=LY+y;}realx=x;
raly=y;
textcolor(b[blockcode].color);
gotoxy(realx+2*b[blockcode].x0,realy+b[blockcode].y0);
cputs("**");
gotoxy(realx+2*b[blockcode].x1,realy+b[blockcode].y1);
cputs("**");
gotoxy(realx+2*b[blockcode].x2,realy+b[blockcode].y2);
cputs("**");
gotoxy(realx+2*b[blockcode].x3,realy+b[blockcode].y3);
cputs("**");}voideraseb(LRflag,x,y,blockcode){}intLRflag,x,y,blockcode;
intrealx,realy;
if(LRflag==L)
{realx=LX+x*2;realy=LY+y;}
else
{realx=Lx+x*2;realy=LY+y;}
textcolor
(0);
gotoxy(realx+2*b[blockcode].x0,realy+b[blockcode].y0);
cputs("**");
gotoxy(realx+2*b[blockcode].x1,realy+b[blockcode].y1);
cputs("**");
gotoxy(realx+2*b[blockcode].x2,realy+b[blockcode].y2);
cputs("**");
gotoxy(realx+2*b[blockcode].x3,realy+b[blockcode].y3);
cputs("**");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 游戏 代码