www.pudn.com > eluosifangkuancyuyan.rar > RUSSIA.C
#include#include #include #include #include #include #include int i,j,x,y,m,n,u,v,index,getkey; /*i,j is desimion points;x,y is russia condiate;m,n is draw russia; u,u is clear russia full*/ int grid[14][21]={0},gridfull=0; /*grid is desimion;gridfull is or not desimion second points is full*/ int next,score=0; char sco[5]="0000"; void Tiao_ver(),Tiao_hor(),Dis_block(),Cycling(),Z_shape(),N_shape(); void Z_reverse_shape(),N_reverse_shape(),Inspect_sinkage_next(); void L_shape(),Digger(),Sling(),Truck(); void Tine_up(),Tine_left(),Tine_down(),Tine_right(); void Window_3d(int left,int up,int right,int down,int high); void islost(),Dis_next(),Dis_score(); void Dis_score() { score+=1; sprintf(sco,"%04d",score); Window_3d(400,300,450,320,-1); outtextxy(405,300,sco); } void islost() { for(index=0;index<12;index++) if(grid[index][0]==1) { Window_3d(60,70,300,150,1); settextstyle(TRIPLEX_FONT,HORIZ_DIR,2); setcolor(RED); outtextxy(80,80,"Game Over!"); setcolor(BLUE); outtextxy(80,100,"If replay press R key."); outtextxy(80,120,"If exit press Q key."); do{ getkey=getch(); if(getkey=='q'||getkey=='Q') exit(1); else if(getkey=='r'||getkey=='R') { for(i=0;i<13;i++) for(j=0;j<19;j++) grid[i][j]=0; Cycling(); } }while(1); } } void Window_3d(int left,int up,int right,int down,int high) { setfillstyle(SOLID_FILL,LIGHTGRAY); bar(left,up,right,down); if(high==2) { setcolor(WHITE); line(left,up,left,down); line(left+1,up+1,left+1,down-1); line(left,up,right,up); line(left+1,up+1,right-1,up+1); setcolor(DARKGRAY); line(right,down,right,up); line(right-1,down-1,right-1,up+1); line(right,down,left,down); line(right-1,down-1,left+1,down-1); } else if(high==-1) { setcolor(DARKGRAY); line(left,up,left,down); line(left,up,right,up); setcolor(WHITE); line(right,down,right,up); line(right,down,left,down); } else { setcolor(WHITE); line(left,up,left,down); line(left,up,right,up); setcolor(DARKGRAY); line(right,down,right,up); line(right,down,left,down); } } void Inspect_sinkage_next() { for(n=0;n<19;n++) { gridfull=1; for(m=0;m<13;m++) if(grid[m][n]==0) { gridfull=0; break; } if(gridfull==1) { for(v=n;v>0;v--) for(u=0;u<13;u++) grid[u][v]=grid[u][v-1]; Dis_score(); } } Cycling(); } /*========delay for some sec===========================*/ Delay(float sec) { long t1,t2; float t3=0; t1=clock(); while(t3 >8; if(getkey==27) exit(0); if(i>0&&i<12) switch(getkey) { case 75: if(grid[i-1][j]==0&&grid[i-1][j+1]==0&& grid[i-1][j+2]==0&&grid[i-1][j+3]==0) { i--; for(index=0;index<4;index++) { grid[i][j+index]=1; grid[i+1][j+index]=0; } } break; case 77: if(grid[i+1][j]==0&&grid[i+1][j+1]==0&& grid[i+1][j+2]==0&&grid[i+1][j+3]==0) { i++; for(index=0;index<4;index++) { grid[i][j+index]=1; grid[i-1][j+index]=0; } } break; case 72:Tiao_hor(); } Dis_block(); } else { j++; if(j+4>19||grid[i][j+3]==1) { islost(); Inspect_sinkage_next(); islost(); } for(index=0;index<4;index++) grid[i][j+index]=1; grid[i][j-1]=0; Dis_block(); } } } /* oooo */ void Tiao_hor() { /*Init Tiao_hor*/ for(index=0;index<4;index++) { grid[i+index][j]=1; grid[i][j+index]=0; } while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<9) switch(getkey) { case 75: if(grid[i-1][j]==0) { i--; grid[i][j]=1; grid[i+4][j]=0; } break; case 77: if(grid[i+4][j]==0) { i++; grid[i+3][j]=1; grid[i-1][j]=0; } break; case 72:Tiao_ver(); } Dis_block(); } else { j++; if(j>18||grid[i][j]==1||grid[i][j]==1|| grid[i+2][j]==1||grid[i+3][j]==1) { islost(); Inspect_sinkage_next(); islost(); } for(index=0;index<4;index++) { grid[i+index][j]=1; grid[i+index][j-1]=0; } Dis_block(); } } } /* oo oo */ void Farmland() { while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<11) switch(getkey) { case 75: if(grid[i-1][j]==0&&grid[i-1][j+1]==0) { i--; grid[i][j]=1; grid[i][j+1]=1; grid[i+2][j]=0; grid[i+2][j+1]=0; } break; case 77: if(grid[i+2][j]==0&&grid[i+2][j]==0) { i++; grid[i+1][j]=1; grid[i+1][j+1]=1; grid[i-1][j]=0; grid[i-1][j+1]=0; } break; } Dis_block(); } else { j++; if(j>17||grid[i][j+1]==1||grid[i+1][j+1]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i][j-1]=0; grid[i+1][j-1]=0; grid[i][j+1]=1; grid[i+1][j+1]=1; Dis_block(); } } } /* oo oo */ void Z_shape() { grid[i+1][j]=0; grid[i+1][j-1]=0; grid[i][j]=1; grid[i-1][j]=1; grid[i][j+1]=1; grid[i+1][j+1]=1; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>1&&i<11) switch(getkey) { case 75: if(grid[i-2][j]==0&&grid[i-1][j+1]==0) { i--; grid[i-1][j]=1; grid[i][j+1]=1; grid[i+1][j]=0; grid[i+2][j+1]=0; } break; case 77: if(grid[i+1][j]==0&&grid[i+2][j+1]==0) { i++; grid[i][j]=1; grid[i+1][j+1]=1; grid[i-2][j]=0; grid[i-1][j+1]=0; } break; case 72: N_shape(); } Dis_block(); } else { j++; if(j>17||grid[i-1][j]==1||grid[i][j+1]==1||grid[i+1][j+1]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i-1][j-1]=0; grid[i][j-1]=0; grid[i+1][j]=0; grid[i-1][j]=1; grid[i][j+1]=1; grid[i+1][j+1]=1; Dis_block(); } } } /* o oo o */ void N_shape() { grid[i+1][j-1]=1; grid[i+1][j]=1; grid[i-1][j]=0; grid[i+1][j+1]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<11) switch(getkey) { case 75: if(grid[i-1][j]==0&&grid[i-1][j+1]==0&& grid[i][j-1]==0) { i--; grid[i+1][j-1]=1; grid[i][j]=1; grid[i][j+1]=1; grid[i+1][j+1]=0; grid[i+2][j]=0; grid[i+2][j-1]=0; } break; case 77: if(grid[i+2][j-1]==0&&grid[i+2][j+1]==0&& grid[i+1][j+1]==0) { i++; grid[i+1][j-1]=1; grid[i+1][j]=1; grid[i][j+1]=1; grid[i-1][j]=0; grid[i-1][j+1]=0; grid[i][j-1]=0; } break; case 72: Z_shape(); } Dis_block(); } else { j++; if(j>17||grid[i+1][j]==1||grid[i][j+1]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i+1][j-2]=0; grid[i][j-1]=0; grid[i][j+1]=1; grid[i+1][j]=1; Dis_block(); } } } /* oo oo */ void Z_reverse_shape() { grid[i][j]=1; grid[i-1][j+1]=1; grid[i][j+1]=1; grid[i+1][j]=1; grid[i][j-1]=0; grid[i+1][j+1]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>1&&i<11) switch(getkey) { case 75: if(grid[i-1][j]==0&&grid[i-2][j+1]==0) { i--; grid[i][j]=1; grid[i-1][j+1]=1; grid[i+1][j+1]=0; grid[i+2][j]=0; } break; case 77: if(grid[i+1][j+1]==0&&grid[i+2][j]==0) { i++; grid[i+1][j]=1; grid[i][j+1]=1; grid[i-2][j+1]=0; grid[i-1][j]=0; } break; case 72: N_reverse_shape(); } Dis_block(); } else { j++; if(j>17||grid[i-1][j+1]==1||grid[i][j+1]==1||grid[i+1][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i+1][j-1]=0; grid[i][j-1]=0; grid[i-1][j]=0; grid[i-1][j+1]=1; grid[i][j+1]=1; grid[i+1][j]=1; Dis_block(); } } } /* o oo o */ void N_reverse_shape() { grid[i][j-1]=1; grid[i+1][j+1]=1; grid[i-1][j+1]=0; grid[i][j+1]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<11) switch(getkey) { case 75: if(grid[i-1][j-1]==0&&grid[i-1][j]==0&& grid[i][j+1]==0) { i--; grid[i][j-1]=1; grid[i][j]=1; grid[i+1][j+1]=1; grid[i+1][j-1]=0; grid[i+2][j]=0; grid[i+2][j+1]=0; } break; case 77: if(grid[i+1][j-1]==0&&grid[i+2][j]==0&& grid[i+2][j+1]==0) { i++; grid[i][j-1]=1; grid[i+1][j]=1; grid[i+1][j+1]=1; grid[i-1][j-1]=0; grid[i-1][j]=0; grid[i][j+1]=0; } break; case 72: Z_reverse_shape(); } Dis_block(); } else { j++; if(j>17||grid[i+1][j+1]==1||grid[i][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i][j-2]=0; grid[i+1][j-1]=0; grid[i][j]=1; grid[i+1][j+1]=1; Dis_block(); } } } /* o o oo */ void L_shape() { grid[i][j-2]=1; grid[i][j-1]=1; grid[i][j]=1; grid[i+1][j]=1; grid[i][j+1]=0; grid[i+2][j]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<11) switch(getkey) { case 75: if(grid[i-1][j-2]==0&&grid[i-1][j-1]==0&& grid[i-1][j]==0) { i--; grid[i][j-2]=1; grid[i][j-1]=1; grid[i][j]=1; grid[i+1][j-2]=0; grid[i+1][j-1]=0; grid[i+2][j]=0; } break; case 77: if(grid[i+2][j]==0&&grid[i+1][j-1]==0&& grid[i+1][j-2]==0) { i++; grid[i][j-2]=1; grid[i][j-1]=1; grid[i+1][j]=1; grid[i-1][j-2]=0; grid[i-1][j-1]=0; grid[i-1][j]=0; } break; case 72: Truck(); } Dis_block(); } else { j++; if(j>18||grid[i][j]==1||grid[i+1][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i+1][j]=1; grid[i][j]=1; grid[i][j-3]=0; grid[i+1][j-1]=0; Dis_block(); } } } /* o ooo */ void Truck() { grid[i-2][j]=1; grid[i-1][j]=1; grid[i][j-2]=0; grid[i+1][j]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>2&&i<12) switch(getkey) { case 75: if(grid[i-3][j]==0&&grid[i-1][j-1]==0) { i--; grid[i-2][j]=1; grid[i][j-1]=1; grid[i+1][j]=0; grid[i+1][j-1]=0; } break; case 77: if(grid[i+1][j]==0&&grid[i+1][j-1]==0) { i++; grid[i][j]=1; grid[i][j-1]=1; grid[i-3][j]=0; grid[i-1][j-1]=0; } break; case 72: Sling(); } Dis_block(); } else { j++; if(j>18||grid[i][j]==1||grid[i-1][j]==1||grid[i-2][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i][j]=1; grid[i-1][j]=1; grid[i-2][j]=1; grid[i][j-2]=0; grid[i-1][j-1]=0; grid[i-2][j-1]=0; Dis_block(); } } } /* oo o o */ void Sling() { grid[i][j-1]=0; grid[i-2][j]=0; grid[i][j+1]=1; grid[i][j+2]=1; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>1&&i<12) switch(getkey) { case 75: if(grid[i-2][j]==0&&grid[i-1][j+1]==0&& grid[i-1][j+2]==0) { i--; grid[i-1][j]=1; grid[i][j+1]=1; grid[i][j+2]=1; grid[i+1][j+2]=0; grid[i+1][j+1]=0; grid[i+1][j]=0; } break; case 77: if(grid[i+1][j]==0&&grid[i+1][j+1]==0&& grid[i+1][j+2]==0) { i++; grid[i][j+2]=1; grid[i][j+1]=1; grid[i][j]=1; grid[i-1][j+2]=0; grid[i-1][j+1]=0; grid[i-2][j]=0; } break; case 72: Digger(); } Dis_block(); } else { j++; if(j>16||grid[i][j+2]==1||grid[i-1][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i-1][j]=1; grid[i][j+2]=1; grid[i][j-1]=0; grid[i-1][j-1]=0; Dis_block(); } } } /* ooo o */ void Digger() { grid[i+2][j]=1; grid[i+1][j]=1; grid[i-1][j]=0; grid[i][j+2]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<10) switch(getkey) { case 75: if(grid[i-1][j]==0&&grid[i-1][j+1]==0) { i--; grid[i][j]=1; grid[i][j+1]=1; grid[i+3][j]=0; grid[i+1][j+1]=0; } break; case 77: if(grid[i+3][j]==0&&grid[i+1][j+1]==0) { i++; grid[i+2][j]=1; grid[i][j+1]=1; grid[i-1][j]=0; grid[i-1][j+1]=0; } break; case 72: L_shape(); } Dis_block(); } else { j++; if(j>17||grid[i][j+1]==1||grid[i+1][j]==1||grid[i+2][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i][j+1]=1; grid[i+1][j]=1; grid[i+2][j]=1; grid[i][j-1]=0; grid[i+1][j-1]=0; grid[i+2][j-1]=0; Dis_block(); } } } /* o ooo */ void Tine_up() { grid[i][j]=1; grid[i-1][j]=1; grid[i][j-1]=1; grid[i+1][j]=1; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>1&&i<11) switch(getkey) { case 75: if(grid[i-2][j]==0&&grid[i-1][j-1]==0) { i--; grid[i][j-1]=1; grid[i-1][j]=1; grid[i+2][j]=0; grid[i+1][j-1]=0; } break; case 77: if(grid[i+2][j]==0&&grid[i+1][j-1]==0) { i++; grid[i+1][j]=1; grid[i][j-1]=1; grid[i-2][j]=0; grid[i-1][j-1]=0; } break; case 72: Tine_left(); } Dis_block(); } else { j++; if(j>18||grid[i][j]==1||grid[i+1][j]==1||grid[i-1][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i][j]=1; grid[i+1][j]=1; grid[i-1][j]=1; grid[i][j-2]=0; grid[i+1][j-1]=0; grid[i-1][j-1]=0; Dis_block(); } } } /* o oo o */ void Tine_left() { grid[i][j+1]=1; grid[i+1][j]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>1&&i<12) switch(getkey) { case 75: if(grid[i-2][j]==0&&grid[i-1][j-1]==0&& grid[i-1][j+1]==0) { i--; grid[i][j-1]=1; grid[i][j+1]=1; grid[i-1][j]=1; grid[i+1][j-1]=0; grid[i+1][j]=0; grid[i+1][j+1]=0; } break; case 77: if(grid[i+1][j]==0&&grid[i+1][j-1]==0&& grid[i+1][j+1]==0) { i++; grid[i][j]=1; grid[i][j-1]=1; grid[i][j+1]=1; grid[i-2][j]=0; grid[i-1][j-1]=0; grid[i-1][j+1]=0; } break; case 72: Tine_down(); } Dis_block(); } else { j++; if(j>17||grid[i-1][j]==1||grid[i][j+1]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i-1][j]=1; grid[i][j+1]=1; grid[i][j-2]=0; grid[i-1][j-1]=0; Dis_block(); } } } /* ooo o */ void Tine_down() { grid[i][j-1]=0; grid[i+1][j]=1; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>1&&i<11) switch(getkey) { case 75: if(grid[i-2][j]==0&&grid[i-1][j+1]==0) { i--; grid[i][j+1]=1; grid[i-1][j]=1; grid[i+2][j]=0; grid[i+1][j+1]=0; } break; case 77: if(grid[i+2][j]==0&&grid[i+1][j+1]==0) { i++; grid[i+1][j]=1; grid[i][j+1]=1; grid[i-2][j]=0; grid[i-1][j+1]=0; } break; case 72: Tine_right(); } Dis_block(); } else { j++; if(j>17||grid[i][j+1]==1||grid[i+1][j]==1||grid[i-1][j]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i][j+1]=1; grid[i+1][j]=1; grid[i-1][j]=1; grid[i+1][j-1]=0; grid[i][j-1]=0; grid[i-1][j-1]=0; Dis_block(); } } } /* o oo o */ void Tine_right() { grid[i][j-1]=1; grid[i-1][j]=0; while(1) { if(bioskey(1)) { getkey=bioskey(0); getkey=getkey&0xff?getkey&0xff:getkey>>8; if(getkey==27) exit(0); if(i>0&&i<11) switch(getkey) { case 75: if(grid[i-1][j]==0&&grid[i-1][j-1]==0&& grid[i-1][j+1]==0) { i--; grid[i][j-1]=1; grid[i][j+1]=1; grid[i][j]=1; grid[i+1][j-1]=0; grid[i+2][j]=0; grid[i+1][j+1]=0; } break; case 77: if(grid[i+2][j]==0&&grid[i+1][j-1]==0&& grid[i+1][j+1]==0) { i++; grid[i+1][j]=1; grid[i][j-1]=1; grid[i][j+1]=1; grid[i-1][j]=0; grid[i-1][j-1]=0; grid[i-1][j+1]=0; } break; case 72: Tine_up(); } Dis_block(); } else { j++; if(j>17||grid[i+1][j]==1||grid[i][j+1]==1) { islost(); Inspect_sinkage_next(); islost(); } grid[i+1][j]=1; grid[i][j+1]=1; grid[i][j-2]=0; grid[i+1][j-1]=0; Dis_block(); } } } void Dis_next() { next=random(6); Window_3d(400,100,500,220,1); /* setfillstyle(SOLID_FILL,YELLOW); bar(400,100,500,200); */ setfillstyle(SOLID_FILL,RED); switch(next) { case 0: bar(420,120,440,200); break; case 1: bar(420,120,460,160); break; case 2: bar(420,120,460,140); bar(440,140,480,160); break; case 5: bar(440,120,480,140); bar(420,140,460,160); break; case 4: bar(420,120,440,180); bar(440,160,460,180); break; case 3: bar(440,120,460,140); bar(420,140,480,160); break; } } /* main cycle */ void Cycling() { for(i=2;i<6;i++) for(j=0;j<3;j++) grid[i][j]=0; i=6; switch(next) { case 0: j=-1; Dis_next(); Tiao_ver(); break; case 1: j=-2; Dis_next(); Farmland(); break; case 2: j=-1; Dis_next(); Z_shape(); break; case 3: j=0; Dis_next(); Tine_up(); break; case 4: j=1; Dis_next(); L_shape(); break; case 5: j=-1; Dis_next(); Z_reverse_shape(); break; } } main() { int driver=VGA,mode=VGAHI; initgraph(&driver,&mode,"H:\\TURBOC2"); setbkcolor(CYAN); setcolor(GREEN); for(i=0;i<14;i++) for(j=0;j<5;j++) grid[i][j]=0; for(i=0;i<14;i++) line(50+i*20,50,50+i*20,50+19*20); for(i=0;i<20;i++) line(50,50+i*20,50+13*20,50+i*20); setcolor(BLUE); rectangle(50,50,50+13*20,50+19*20); Window_3d(60,70,300,150,1); settextstyle(TRIPLEX_FONT,HORIZ_DIR,1); setcolor(RED); outtextxy(70,80,"Press Space key to start,"); setcolor(YELLOW); outtextxy(70,120,"Press Esc key to quit !"); do{ getkey=getch(); }while(getkey!=32); settextstyle(TRIPLEX_FONT,HORIZ_DIR,1); setcolor(YELLOW); outtextxy(400,80,"NEXT:"); outtextxy(400,280,"SCORE:"); Window_3d(400,300,450,320,-1); setcolor(WHITE); outtextxy(405,300,"0000"); randomize(); next=random(6); Cycling(); getch(); closegraph(); }