C语言打飞机发两颗子弹.docx
- 文档编号:15139001
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:15
- 大小:26.88KB
C语言打飞机发两颗子弹.docx
《C语言打飞机发两颗子弹.docx》由会员分享,可在线阅读,更多相关《C语言打飞机发两颗子弹.docx(15页珍藏版)》请在冰点文库上搜索。
C语言打飞机发两颗子弹
打飞机发两颗子弹的代码:
#include
#include
#include
#include
#include
#include
#defineWIDTH40/*Step1:
WidthofBox*/
#defineHEIGHT20/*Step1:
HeightofBox*/
#defineBLOCKS4/*Step2:
NumberofBlock*/
#definebeep()cout<<("\a")/*Step5:
DefineBeepfunction*/
usingnamespacestd;
/*DefineVariables*/
charbox[WIDTH+2][HEIGHT+1];/*Step1:
ArrayofBox*/
charblock[BLOCKS][4][4]={/*Step2:
7typesofblock*/
{{1,0,0,0},{1,0,0,0},{1,0,0,0},{1,0,0,0}},
{{0,1,0,0},{0,1,0,0},{0,1,0,0},{0,1,0,0}},
{{0,0,1,0},{0,0,1,0},{0,0,1,0},{0,0,1,0}},
{{0,0,0,1},{0,0,0,1},{0,0,0,1},{0,0,0,1}}
};
charcurrent_block[4][4];/*Step2:
Currentblock*/
intblockx,blocky,a=3000;/*Step2:
Positionofblock*/
charcurrent_blocknum;/*Step3:
Noofpresentblock*/
intdz[HEIGHT];/*if-1,notselected*/
intnextblock,bz=0,sc=0,bz2=0,bz3=0;/*Step3:
Nextblocknumber*/
intbkx,bky,fdx,fdy,fdx1,fdy1;
charc_block[2][2];
/*DefineFunction*/
voidgotoxy(intx,inty)//Step1:
Movethecursor
{
COORDPos={x-1,y-1};//COORDisStructuredatatype
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Pos);
}
voidinit_box(void)/*Step1:
Functionofsetupinitialscreen*/
{
intx,y;//x->width,y->height
for(y=0;y { box[0][y]=1;/*SetwalloftheBox#*/ box[WIDTH+1][y]=1;/*SetwalloftheBox#*/ for(x=1;x<=WIDTH;x++) box[x][y]=0;/*SpaceintheBox....*/ } for(x=0;x<=WIDTH+1;x++) box[x][HEIGHT]=1;/*BottomoftheBox#*/ } voiddraw_box(void)/*Step1: Drawscreen*/ { intx,y; gotoxy(1,1);//MoveCursor for(y=0;y<=HEIGHT-4;y++) { if(y! =fdy) { for(x=0;x { if(current_blocknum! =-1&&x>=blockx&&x y>=blocky&&y cout<<("%c",(current_block[x-blockx][y-blocky])? '@': //Step3 (box[x][y]==1)? '#': '.');//Step3 else cout<<("%c",(box[x][y]==1)? '#': '.'); /*ifbox[x][y]is1==>draw#,box[x][y]is0==>draw.*/ } } cout<<("\n\r"); } } voiddraw2_box(void)/*Step1: Drawscreen*/ { intx,y,x1; x1=0; gotoxy(1,HEIGHT-3);//MoveCursor for(y=HEIGHT-3;y<=HEIGHT;y++) { for(x=0;x { if(x>=bkx&&x y>bky&&y cout<<("%c",(c_block[x-bkx][y-bky])? '@': //Step3 (box[x][y]==1)? '#': '.');//Step3 else cout<<("%c",(box[x][y]==1)? '#': '.'); } cout<<("\n\r"); } } voiddraw3_box(void)/*Step1: Drawscreen*/ { intx; if(bz2==0) fdx=bkx+1; if(fdy>0&&bz2==1) { gotoxy(1,fdy);//MoveCursor for(x=0;x { if(x==fdx)//Step3 cout<<("%c",'$');//Step3 else cout<<("%c",(box[x][fdy]==1)? '#': '.'); } //cout<<("\n\r"); } } voiddraw4_box(void)/*Step1: Drawscreen*/ { intx; if(bz3==0) fdx1=bkx+1; if(fdy1>0&&bz3==1) { gotoxy(1,fdy1);//MoveCursor for(x=0;x { if(x==fdx1)//Step3 cout<<("%c",'$');//Step3 else cout<<("%c",(box[x][fdy1]==1)? '#': '.'); } //cout<<("\n\r"); } } intcheck_crash(void)/*Step5: Checkcrashwithbox*/ { intx,y; for(x=0;x<4;x++) for(y=0;y<4;y++) if(current_block[x][y]&&box[x+blockx][y+blocky]) return0;//crash return1;//nocrash } intcheck1_crash(void)/*Step5: Checkcrashwithbox*/ { intx,y; for(x=0;x<4;x++) for(y=0;y<4;y++) if(current_block[x][y]&&(x+blockx==fdx)&&(y+blocky==fdy) &&y==current_blocknum) return0;//crash return1;//nocrash } intcheck2_crash(void)/*Step5: Checkcrashwithbox*/ { intx,y; for(x=0;x<4;x++) for(y=0;y<4;y++) if(current_block[x][y]&&(x+blockx==fdx1)&&(y+blocky==fdy1) &&y==current_blocknum) return0;//crash return1;//nocrash } voidup_1() { intx; if(check1_crash()) { if(fdy>0&&bz2==1) fdy--; else { bz2=0; fdy=HEIGHT-3; } } else { for(x=1;x box[x][fdy]=0; bz2=0; fdy=HEIGHT-3; current_blocknum=-1; sc=sc+100; if(bz==0) bz=1; else bz=0; gotoxy(10,22); cout<<("total="); cout<<("%d",sc); } } voidup_2() { intx; if(check2_crash()) { if(fdy1>0&&bz3==1) fdy1--; else { bz3=0; fdy1=HEIGHT-3; } } else { for(x=1;x box[x][fdy1]=0; bz3=0; fdy1=HEIGHT-3; current_blocknum=-1; sc=sc+100; if(bz==0) bz=1; else bz=0; gotoxy(10,22); cout<<("total="); cout<<("%d",sc); } } voidrotate(void)/*Step4: Rotateblock*/ { if(bz2==1&&bz3==1)return; if(bz2==0&&bz3==0) bz2=1; else if(bz2==1&&bz3==0) bz3=1; } voidinit_cblk() { c_block[0][0]=0;c_block[1][0]=0;c_block[2][0]=0; c_block[0][1]=0;c_block[1][1]=1;c_block[2][1]=0; c_block[0][2]=1;c_block[1][2]=1;c_block[2][2]=1; } voiddown()//Step3: Dropblockoneline { intx,y;//Step5: x->w if(bz==1) blockx++;/*moveone*/ else blockx--; if(! check_crash())/*Step5: Checkcrashwithblockplacedinbottomandmakebottomarea*/ { if(bz==1) bz=0; else bz=1; for(x=0;x<4;x++) for(y=0;y<4;y++) if(current_block[x][y]) box[blockx+x][blocky+y]=0; box[0][current_blocknum+1]=1; box[WIDTH+1][current_blocknum+1]=1;//Makebottomarea(Fixblockinthebottom) current_blocknum=-1;//CallNextblock } } voidleft()/*Step4: moveleft*/ { bkx--; if(bkx<=0)bkx++; } voidright()/*Step4: Moveleft*/ { bkx++; if(bkx>=WIDTH-1)bkx--; } /*MainFunction*/ intmain() { intkey;//Step4: checkkey inttimer=0;//Step3 system("cls");//Step1 init_box();//Step1SetupinitializeSecreen init_cblk(); current_blocknum=-1;//Step3: PresentBlock srand((unsignedint)time(NULL));//Step3 nextblock=rand()%BLOCKS; bkx=(WIDTH+2)/2; bky=HEIGHT-3; fdy=HEIGHT-3; fdy1=HEIGHT-3; while (1)//Step3 { intx,y; if(current_blocknum==-1)/*Step3: ifblockisnotselsected*/ { //Step2 current_blocknum=nextblock;//Step3 nextblock=rand()%BLOCKS;//Step3 for(y=0;y<4;y++)//Step2Setthecurrentblock for(x=0;x<4;x++) current_block[x][y]=block[current_blocknum][x][y];//Step3 if(bz==1) blockx=1;//Step2setthestartingpositionofblock else blockx=(WIDTH-2); blocky=1;//Step2 } timer++;//Step3 if(timer>=a){/*//Step3: iftimer>=100,downblockoneline*/ draw_box();//Step1Drawscreen draw2_box(); draw3_box(); draw4_box(); timer=0; down(); if(bz2==1) up_1(); if(bz3==1) up_2(); continue; } if(kbhit())/*Checkkey,ifkeyispressed,returntrue*/ { key=getch(); switch(key) { case224: continue; case72: //Upkey if(bz2==0||bz3==0) rotate(); break; case75: /*LeftKey*/ left(); break; case77: /*RightKey*/ right(); break; case80: /*increasespeedKey*/ a-=50; if(a<=50)a=50; break; case27: /*Esc..EndofGame*/ return0; } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 飞机 发两颗 子弹
![提示](https://static.bingdoc.com/images/bang_tan.gif)