返回列表 发帖

用 tc写的俄罗斯方块源代码,有兴趣的就留下

#include #include #include #include #include #define getmax(a,b) (a)>(b)?(a):(b) #define bkclr LIGHTBLUE #define element_clr YELLOW #define virtual -1 #define top 20 #define bottom 460 #define left 200 #define right 440 #define width 20 #define wait 50 #define count 6000 #define row 23 #define col 13 int a[row+1][col+1]={0}; int posn_i=1,posn_j=1,v_posn_i=1,v_posn_j=1; int formerposn_i,formerposn_j; int border[4][2]={0},Temp=0; /*border里记录的是每个part相对于(posn_i,posn_j)的每个element的坐标*/ int nxt_border[4][2]={0}; /*nxt_border中记录着当前part转换后的每个element的坐标*/ int shape,formershape=0,nxtshape; /*nxtshape记录着相对于当前的part的下个或上个shape的值*/ unsigned chain=0,delline=0,level=0,score=0; void putelement(int clr,int i,int j) /*所有形参的i,j表示个;x,y表示坐标*/ { /*此函数功能:用来输出(擦除)画面上的某个单元格*/ int x,y; /*输出或擦除根据参量clr来控制*/ if(clr!=-1){ /*putelement经过这样修改后功能比设计时定义的功能强得多*/ x=left+(j-1)*width; y=top+(i-1)*width; setlinestyle(0,0,1); setcolor(RED); setfillstyle(1,BLUE); rectangle(x+1,y+1,x+width-1,y+width-1); floodfill(x+5,y+5,RED); setcolor(clr); setfillstyle(1,clr); rectangle(x+1,y+1,x+width-1,y+width-1);/*sleep(1);*/ floodfill(x+5,y+5,clr); if(clr==bkclr) a[j]=0; /*画图的同时对数组赋值*/ else if(clr==element_clr){ /*a[j]=0是数组空,=1是已固定,=2是活动的*/ a[j]=2; border[Temp][0]=i; border[Temp][1]=j; Temp=(Temp+1)%4; } } else if(clr==-1){ /*clr==-1是用于计算当前位置的下个位置,从而利用nxt_border的值判断变形后是否合法*/ nxt_border[Temp][0]=i; nxt_border[Temp][1]=j; Temp=(Temp+1)%4; } }

用 tc写的俄罗斯方块源代码,有兴趣的就留下

void putpart0()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                                                                                /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/                        
        if(formershape==0 || formershape==2){                                        /*擦掉以前的东西*/
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j+1);
                putelement(bkclr,formerposn_i,formerposn_j+2);
        }
        else if(formershape==1 || formershape==3){
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-2,formerposn_j);
                putelement(bkclr,formerposn_i-3,formerposn_j);
        }
        if(shape==0 || shape==2){                                                /*写入新的东西*/
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i,posn_j+1);
                putelement(element_clr,posn_i,posn_j+2);
        }
        else if(shape==1 || shape==3){
                Temp=0;
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-2,posn_j);
                putelement(element_clr,posn_i-3,posn_j);
        }
}
void v_putpart0()
{
        if(nxtshape==0 || nxtshape==2){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j+1);
                putelement(virtual,v_posn_i,v_posn_j+2);
        }
        else if(nxtshape==1 || nxtshape==3){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-2,v_posn_j);
                putelement(virtual,v_posn_i-3,v_posn_j);
        }
}

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

void putpart1()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                Temp=0;                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                putelement(bkclr,formerposn_i,formerposn_j);                        /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j+1);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
                Temp=0;
                putelement(element_clr,posn_i,posn_j);                                /*写入新的东西*/
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i,posn_j+1);
                putelement(element_clr,posn_i-1,posn_j+1);
}
void v_putpart1()
{
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j+1);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
}
void putpart2()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                                                                                /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/                        
        if(formershape==0){                                                        /*擦掉以前的东西*/
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j+1);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
        }
        else if(formershape==1){
                Temp=0;
                putelement(bkclr,formerposn_i-2,formerposn_j);
                putelement(bkclr,formerposn_i-2,formerposn_j+1);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
                putelement(bkclr,formerposn_i,formerposn_j+1);
        }
        else if(formershape==2){
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
        }
        else if(formershape==3){
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-2,formerposn_j-1);
        }
        if(shape==0){                                                                /*写入新的东西*/
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i,posn_j+1);
                putelement(element_clr,posn_i-1,posn_j+1);
        }
        else if(shape==1){
                Temp=0;
                putelement(element_clr,posn_i-2,posn_j);
                putelement(element_clr,posn_i-2,posn_j+1);
                putelement(element_clr,posn_i-1,posn_j+1);
                putelement(element_clr,posn_i,posn_j+1);
        }
        else if(shape==2){
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-1,posn_j+1);
        }
        else if(shape==3){
                Temp=0;
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-2,posn_j-1);
        }
}

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

void v_putpart2()
{
        if(nxtshape==0){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j+1);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
        }
        else if(nxtshape==1){
                Temp=0;
                putelement(virtual,v_posn_i-2,v_posn_j);
                putelement(virtual,v_posn_i-2,v_posn_j+1);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
                putelement(virtual,v_posn_i,v_posn_j+1);
        }
        else if(nxtshape==2){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i-1,v_posn_j-1);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
        }
        else if(nxtshape==3){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i-1,v_posn_j-1);
                putelement(virtual,v_posn_i-2,v_posn_j-1);
        }
}
void putpart3()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                                                                                /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/                        
        if(formershape==0){                                                        /*擦掉以前的东西*/
                Temp=0;
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
                putelement(bkclr,formerposn_i,formerposn_j+1);
        }
        else if(formershape==1){
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);        
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-2,formerposn_j-1);
                putelement(bkclr,formerposn_i-2,formerposn_j);
        }
        else if(formershape==2){
                Temp=0;
                putelement(bkclr,formerposn_i-1,formerposn_j-1);               
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j+1);
        }
        else if(formershape==3){
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-2,formerposn_j);
        }
        if(shape==0){                                                                /*写入新的东西*/
                Temp=0;
                putelement(element_clr,posn_i-1,posn_j-1);        
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-1,posn_j+1);
                putelement(element_clr,posn_i,posn_j+1);
        }
        else if(shape==1){
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);                        
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-2,posn_j-1);
                putelement(element_clr,posn_i-2,posn_j);
        }
        else if(shape==2){
                Temp=0;
                putelement(element_clr,posn_i-1,posn_j-1);                                
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i,posn_j+1);
        }
        else if(shape==3){
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);                        
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-2,posn_j);
        }
}

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

void v_putpart3()
{
        if(nxtshape==0){
                Temp=0;
                putelement(virtual,v_posn_i-1,v_posn_j-1);        
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
                putelement(virtual,v_posn_i,v_posn_j+1);
        }
        else if(nxtshape==1){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);                        
                putelement(virtual,v_posn_i-1,v_posn_j-1);
                putelement(virtual,v_posn_i-2,v_posn_j-1);
                putelement(virtual,v_posn_i-2,v_posn_j);
        }
        else if(nxtshape==2){
                Temp=0;
                putelement(virtual,v_posn_i-1,v_posn_j-1);                                
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j+1);
        }
        else if(nxtshape==3){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);                        
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-2,v_posn_j);
        }
}
void putpart4()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                                                                                /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/                        
        if(formershape==0 || formershape==2){                                        /*擦掉以前的东西*/
                Temp=0;
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j+1);
        }
        else if(formershape==1 || formershape==3){
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-2,formerposn_j);
        }
        if(shape==0 || shape==2){                                                /*写入新的东西*/
                Temp=0;
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i,posn_j+1);
        }
        else if(shape==1 || shape==3){
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-2,posn_j);
        }
}
void v_putpart4()
{
        if(nxtshape==0 || nxtshape==2){
                Temp=0;
                putelement(virtual,v_posn_i-1,v_posn_j-1);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i,v_posn_j+1);
        }
        else if(nxtshape==1 || nxtshape==3){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i-1,v_posn_j-1);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-2,v_posn_j);
        }
}
void putpart5()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                                                                                /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/                        
        if(formershape==0 || formershape==2){                                        /*擦掉以前的东西*/
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
        }
        else if(formershape==1 || formershape==3){
                Temp=0;
                putelement(bkclr,formerposn_i-2,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
                putelement(bkclr,formerposn_i,formerposn_j+1);
        }
        if(shape==0 || shape==2){                                                /*写入新的东西*/
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-1,posn_j+1);
        }
        else if(shape==1 || shape==3){
                Temp=0;
                putelement(element_clr,posn_i-2,posn_j);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-1,posn_j+1);
                putelement(element_clr,posn_i,posn_j+1);
        }
}

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

void v_putpart5()
{
        if(nxtshape==0 || nxtshape==2){
                Temp=0;
                putelement(virtual,v_posn_i,v_posn_j-1);
                putelement(virtual,v_posn_i,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
        }
        else if(nxtshape==1 || nxtshape==3){
                Temp=0;
                putelement(virtual,v_posn_i-2,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j);
                putelement(virtual,v_posn_i-1,v_posn_j+1);
                putelement(virtual,v_posn_i,v_posn_j+1);
        }
}
void putpart6()                                                                        /*此函数功能:根据全局变量shape的值画出相应的形状*/
{                                                                                /*此函数并不对移动后的合法性做判断,这个在调用的时候判断*/
                                                                                /*参量ischange的值仅仅是1或0,用于判断是否改变形状*/
        Temp=0;                        
        if(formershape==0){                                                        /*擦掉以前的东西*/
                Temp=0;
                putelement(bkclr,formerposn_i,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j+1);
        }
        else if(formershape==1){
                Temp=0;
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-2,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i,formerposn_j);
        }
        else if(formershape==2){
                Temp=0;
                putelement(bkclr,formerposn_i-1,formerposn_j-1);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
                putelement(bkclr,formerposn_i,formerposn_j);
        }
        else if(formershape==3){
                Temp=0;
                putelement(bkclr,formerposn_i-2,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j);
                putelement(bkclr,formerposn_i-1,formerposn_j+1);
                putelement(bkclr,formerposn_i,formerposn_j);
        }
        if(shape==0){                                                                /*写入新的东西*/
                Temp=0;
                putelement(element_clr,posn_i,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i,posn_j);
                putelement(element_clr,posn_i,posn_j+1);
        }
        else if(shape==1){
                Temp=0;
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-2,posn_j);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i,posn_j);
        }
        else if(shape==2){
                Temp=0;
                putelement(element_clr,posn_i-1,posn_j-1);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-1,posn_j+1);
                putelement(element_clr,posn_i,posn_j);
        }
        else if(shape==3){
                Temp=0;
                putelement(element_clr,posn_i-2,posn_j);
                putelement(element_clr,posn_i-1,posn_j);
                putelement(element_clr,posn_i-1,posn_j+1);
                putelement(element_clr,posn_i,posn_j);
        }
}

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

void v_putpart6() { if(nxtshape==0){ Temp=0; putelement(virtual,v_posn_i,v_posn_j-1); putelement(virtual,v_posn_i-1,v_posn_j); putelement(virtual,v_posn_i,v_posn_j); putelement(virtual,v_posn_i,v_posn_j+1); } else if(nxtshape==1){ Temp=0; putelement(virtual,v_posn_i-1,v_posn_j-1); putelement(virtual,v_posn_i-2,v_posn_j); putelement(virtual,v_posn_i-1,v_posn_j); putelement(virtual,v_posn_i,v_posn_j); } else if(nxtshape==2){ Temp=0; putelement(virtual,v_posn_i-1,v_posn_j-1); putelement(virtual,v_posn_i-1,v_posn_j); putelement(virtual,v_posn_i-1,v_posn_j+1); putelement(virtual,v_posn_i,v_posn_j); } else if(nxtshape==3){ Temp=0; putelement(virtual,v_posn_i-2,v_posn_j); putelement(virtual,v_posn_i-1,v_posn_j); putelement(virtual,v_posn_i-1,v_posn_j+1); putelement(virtual,v_posn_i,v_posn_j); } } void putpart(int part) { switch(part){ case 0:putpart0();break; case 1:putpart1();break; case 2:putpart2();break; case 3:putpart3();break; case 4:putpart4();break; case 5:putpart5();break; case 6:putpart6();break; } } void v_putpart(int part) { switch(part){ case 0:v_putpart0();break; case 1:v_putpart1();break; case 2:v_putpart2();break; case 3:v_putpart3();break; case 4:v_putpart4();break; case 5:v_putpart5();break; case 6:v_putpart6();break; } } void givebk() { int i; setbkcolor(bkclr); setcolor(LIGHTGREEN); line(left,top-width,right,top-width); line(right,top-width,right,bottom); line(right,bottom,left,bottom); line(left,bottom,left,top-width); setlinestyle(1,0,1); for(i=top+width;i=0;i--){ flag=1; for(j=1;j[j]==1) flag=0; if(flag) {empty_row=i;break;} } for(i=r;i>empty_row;i--){ for(j=1;j[j]=a[i-1][j]; if(a[j]==1){ putelement(element_clr,i,j); a[j]=1; } else putelement(bkclr,i,j); } } } void getscore(int n) /*实现记分,并显示分数*/ { int t; int lvlup[9]={30,60,100,150,210,280,360,450,550}; switch(n){ case 1:chain=getmax(chain-2,0);break; case 2:chain=getmax(chain-1,0);break; case 3:break; case 4:chain++;break; } if(/*chain1==0 && */chain==0){ switch(n){ case 1:score=/*score+*/level+1;break; case 2:score=/*score+*/level+3;break; case 3:score=/*score+*/level+5;break; case 4:score=/*score+*/level+7;break; } } else{ if(chain==1) t=2; else t=1; score/*+*/=(int)(n+0.7*chain*chain+3/t+level); } delline+=n; puttextxy(20,20,score,RED); puttextxy(50,50,delline,RED); if(delline-n=lvlup[level]) {level++;levelup(level);} } int levelup(int level) { printf("Level=%d\r",level); } void isfull() { int i,j,fullrow,flag; fullrow=0; for(i=0;i[j]!=1) {flag=0;break;} if(flag){ remove_row(i); fullrow++; } } if(flag) getscore(fullrow); } int isend() { int i; for(i=0;i==0) return 0; return 1; } int puttextxy(int x,int y,unsigned n,int clr) { unsigned t,i=0,a; char ch[6],c; t=n; while(t>0){ ch=t%10+48; t=(int)(t/10); i++; } ch='\0'; a=i-1; t=(int)(i/2); for(i=0;i;ch=ch[a-i];ch[a-i]=c;} setcolor(clr); outtextxy(x,y,ch); }

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

main() { int levelup(int level); void putelement(int clr,int i,int j); void givebk(void); int remove_row(int r); void isfull(); int isend(); int puttextxy(int x,int y,unsigned n,int clr); void getscore(int n); void putpart0(void); void putpart1(void); void putpart2(void); void putpart3(void); void putpart4(void); void putpart5(void); void putpart6(void); void v_putpart0(void); void v_putpart1(void); void v_putpart2(void); void v_putpart3(void); void v_putpart4(void); void v_putpart5(void); void v_putpart6(void); int gdriver=DETECT,gmode; int i,j; int key=0; int counter=1,counter_s=1; int part,nxtpart; int flag; initgraph(&gdriver,&gmode,"\\tc\\bgi"); for(i=0;i=1; for(i=0;i[0]=1;a[col]=1;} givebk(); randomize(); part=random(8); shape=random(4); nxtpart=random(4); formershape=shape; if(shape==0||shape==2) posn_i=2;else posn_i=3; if(part==0 && (shape==0 || shape==2)) posn_i=1; formerposn_j=posn_j=6; putpart(part); while(key!=4209){ /*4209==Q*/ if(bioskey(1)) key=bioskey(0); /*下面3个语句实现了移动*/ flag=1; /*flag=1表示移动合法,flag=0表示移动非法*/ if(key==8292){ /*8292==D*/ for(i=0;i<4;i++) if(a[(border[0])][(border[1]+1)]==1) {flag=0;key=0;break;} if(flag){ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; posn_j++; putpart(part); key=0; } } flag=1; if(key==7777){ /*7777==A*/ for(i=0;i<4;i++) if(a[(border[0])][(border[1]-1)]==1) {flag=0;key=0;break;} if(flag){ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; posn_j--; putpart(part); key=0; } } flag=1; if(key==8051 && counter_s>=1000){ /*8051==S*/ for(i=0;i<4;i++) if(a[(border[0]+1)][(border[1])]==1) {flag=0;key=0;break;} if(flag){ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; posn_i++; putpart(part); key=0; } else{ for(i=0;i<4;i++) a[(border[0])][(border[1])]=1; /*使part固定*/ isfull(); if(!isend()){ shape=random(4); if(shape==0||shape==2) posn_i=2;else posn_i=3; if(part==0 && (shape==0 || shape==2)) posn_i=1; formerposn_j=posn_j=6; formerposn_i=posn_i; formershape=shape; part=nxtpart; nxtpart=random(8); putpart(part); key=0; counter_s=1; counter=1; } else printf("end"); } }

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

/*下面这两个语句实现了part的转动*/ flag=1; if(key==9322){ /*9322==J 逆时针转动*/ nxtshape=(shape+1)%4; v_posn_i=posn_i;v_posn_j=posn_j; v_putpart(part); for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; putpart(part); key=0; } else{ v_posn_j=posn_j-1; /*调试:看看part的 左一 位置转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } if(!flag){ v_posn_j=posn_j+1; /*调试:看看part的 右一 位置转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } }

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

if(!flag){ v_posn_j=posn_j-2; /*调试:看看part的 左二 位置转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } } if(!flag){ v_posn_j=posn_j+2; /*调试:看看part的 右二 位置转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } } if(!flag){ v_posn_i=posn_i+1; /*调试:看看part的 下一 位置转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_i=v_posn_i; shape=nxtshape; putpart(part); key=0; } } } } flag=1; if(key==9579){ /*9579==K 顺时针转动*/ nxtshape=(shape+3)%4; v_posn_i=posn_i;v_posn_j=posn_j; v_putpart(part); for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;}

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; putpart(part); key=0; } else{ v_posn_j=posn_j-1; /*调试:看看part的 左一 边转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } if(!flag){ v_posn_j=posn_j+1; /*调试:看看part的 右一 边转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } } if(!flag){ v_posn_j=posn_j-2; /*调试:看看part的 左二 边转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } }

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

if(!flag){ v_posn_j=posn_j+2; /*调试:看看part的 右二 边转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_j=v_posn_j; shape=nxtshape; putpart(part); key=0; } } if(!flag){ v_posn_i=posn_i+1; /*调试:看看part的 下一 边转动后是否合法*/ v_putpart(part); flag=1; for(i=0;i<4;i++) if(a[(nxt_border[0])][(nxt_border[1])]==1) {flag=0;key=0;break;} if(flag){ /*转动后合法,执行转动动作*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; shape=nxtshape; posn_i=v_posn_i; shape=nxtshape; putpart(part); key=0; } } } } if(counter==count){ for(i=0;i<4;i++) if(a[(border[0]+1)][(border[1])]==1) {flag=0;key=0;break;} if(flag){ /*时间片到了就下降一格*/ formerposn_i=posn_i; formerposn_j=posn_j; formershape=shape; posn_i++; putpart(part); } else{ for(i=0;i<4;i++) a[(border[0])][(border[1])]=1; /*使part固定*/ isfull(); if(!isend()){ shape=random(4); if(shape==0||shape==2) posn_i=2;else posn_i=3; if(part==0 && (shape==0 || shape==2)) posn_i=1; formerposn_j=posn_j=6; formerposn_i=posn_i; formershape=shape; part=nxtpart; nxtpart=random(8); putpart(part); key=0; counter=1; counter_s=1; } else printf("end"); } counter=1; } counter++; counter_s++; delay(wait); } closegraph(); }

TOP

用 tc写的俄罗斯方块源代码,有兴趣的就留下

上面的游戏没有写完,要是哪个朋友喜欢,可以补充一下

TOP

返回列表 回复 发帖