⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rus1.c

📁 俄罗斯方块 用ncurses编写
💻 C
📖 第 1 页 / 共 3 页
字号:
                       CurBox.r2.rY =  1 ;

                       CurBox.r3.rX =  0 ;
                       CurBox.r3.rY =  1 ;

                       CurBox.r4.rX =  1 ;
                       CurBox.r4.rY =  1 ;
                       break;
                case 7:
                       CurBox.r1.rX =  -1;
                       CurBox.r1.rY =  0 ;

                       CurBox.r2.rX =  0 ;
                       CurBox.r2.rY =  0 ;

                       CurBox.r3.rX =  1 ;
                       CurBox.r3.rY =  0 ;

                       CurBox.r4.rX =  -1;
                       CurBox.r4.rY =  1 ;
        }
        return ;
}
void  show_box(void)
{
        mvaddch(CurBox.r1.rX + 5 + Old.rX,CurBox.r1.rY + 20 +Old.rY,' ');
        mvaddch(CurBox.r2.rX + 5 + Old.rX,CurBox.r2.rY + 20 +Old.rY,' ');
        mvaddch(CurBox.r3.rX + 5 + Old.rX,CurBox.r3.rY + 20 +Old.rY,' ');
        mvaddch(CurBox.r4.rX + 5 + Old.rX,CurBox.r4.rY + 20 +Old.rY,' ');
        
        mvaddch(CurBox.r1.rX + 5 + Cur.rX,CurBox.r1.rY + 20 +Cur.rY,H_H);
        mvaddch(CurBox.r2.rX + 5 + Cur.rX,CurBox.r2.rY + 20 +Cur.rY,H_H);
        mvaddch(CurBox.r3.rX + 5 + Cur.rX,CurBox.r3.rY + 20 +Cur.rY,H_H);
        mvaddch(CurBox.r4.rX + 5 + Cur.rX,CurBox.r4.rY + 20 +Cur.rY,H_H);
        return ;
}
int check_mvnext(int x,int y)
{
        if(arr_rbox[CurBox.r1.rX + x][CurBox.r1.rY + y]==1)
                return 1;
        if(arr_rbox[CurBox.r2.rX + x][CurBox.r2.rY + y]==1)
                return 2;
        if(arr_rbox[CurBox.r3.rX + x][CurBox.r3.rY + y]==1)
                return 3;
        if(arr_rbox[CurBox.r4.rX + x][CurBox.r4.rY + y]==1)
                return 4;
        return 0;
}
void check_line(void)
{
        int i;
        int j;
        //static int k;
        int flag = 0;
        //char tmp_str[40];
        
        //sprintf(tmp_str,"ck=%d  ",k++);
        //mvaddstr(18,50,tmp_str);
        
        
        for(i=1;i<(rbox_w-1);i++)
        {
                if(arr_rbox[CurBox.r1.rX + Old.rX][i]==0)
                {
                        flag = 1;
                }
                //sprintf(tmp_str,"%d",arr_rbox[CurBox.r1.rY + Old.rY][i]);
                //mvaddstr(4,50+i,tmp_str);
                //sprintf(tmp_str,">;>;%d>;>;%d",CurBox.r1.rY + Old.rY,i);
                //mvaddstr(10+i,60,tmp_str);
        }
        if(flag == 0)
        {
                for(j=(CurBox.r1.rX + Old.rX);j>;1;j--)
                        for(i=1;i<(rbox_w-1);i++)
                                arr_rbox[j][i] = arr_rbox[j-1][i];

        }
        //-----------------------
        flag = 0;
        for(i=1;i<(rbox_w-1);i++)
                if(arr_rbox[CurBox.r2.rX + Old.rX][i]==0)
                        flag = 1;
        if(flag == 0)
        {
                for(j=(CurBox.r2.rX + Old.rX);j>;1;j--)
                        for(i=1;i<(rbox_w-1);i++)
                                arr_rbox[j][i] = arr_rbox[j-1][i];

        }
        //-----------------------
        flag = 0;
        for(i=1;i<(rbox_w-1);i++)
                if(arr_rbox[CurBox.r3.rX + Old.rX][i]==0)
                        flag = 1;
        if(flag == 0)
        {
                for(j=(CurBox.r3.rX + Old.rX);j>;1;j--)
                        for(i=1;i<(rbox_w-1);i++)
                                arr_rbox[j][i] = arr_rbox[j-1][i];

        }
        //-----------------------
        flag = 0;
        for(i=1;i<(rbox_w-1);i++)
                if(arr_rbox[CurBox.r4.rX + Old.rX][i]==0)
                        flag = 1;
        if(flag == 0)
        {
                for(j=(CurBox.r4.rX + Old.rX);j>;1;j--)
                        for(i=1;i<(rbox_w-1);i++)
                                arr_rbox[j][i] = arr_rbox[j-1][i];

        }
        
}
void show_all(void)
{
        int i;
        int j;
        
        for(i=1;i<(rbox_w-1);i++)
        for(j=1;j<(rbox_h-1);j++)
                if(arr_rbox[j][i]==1)
                        mvaddch(j+rbox_top,i+rbox_left,H_H);
                else
                        mvaddch(j+rbox_top,i+rbox_left,' ');
}
void turn_rbox(void)
{
        switch(shape)
        {
                case 1:
                        switch(direction)
                        {
                                case 1:
                                        if((arr_rbox[Cur.rX][Cur.rY+1]!=1) &&
                                           (arr_rbox[Cur.rX][Cur.rY-1]!=1) &&
                                           (arr_rbox[Cur.rX][Cur.rY-2]!=1))
                                         {
                                                 mvaddch(CurBox.r1.rX + 5 + Cur.rX,CurBox.r1.rY + 20 +Cur.rY,' ');
                                                mvaddch(CurBox.r2.rX + 5 + Cur.rX,CurBox.r2.rY + 20 +Cur.rY,' ');
                                                mvaddch(CurBox.r3.rX + 5 + Cur.rX,CurBox.r3.rY + 20 +Cur.rY,' ');
                                                mvaddch(CurBox.r4.rX + 5 + Cur.rX,CurBox.r4.rY + 20 +Cur.rY,' ');
                                                 CurBox.r1.rX = 0;
                                                 CurBox.r1.rY = 1;
                                                 CurBox.r2.rX = 0;
                                                 CurBox.r2.rY = 0;
                                                 CurBox.r3.rX = 0;
                                                 CurBox.r3.rY = -1;
                                                 CurBox.r4.rX = 0;
                                                 CurBox.r4.rY = -2;
                                                 mvaddch(CurBox.r1.rX + 5 + Cur.rX,CurBox.r1.rY + 20 +Cur.rY,H_H);
                                                mvaddch(CurBox.r2.rX + 5 + Cur.rX,CurBox.r2.rY + 20 +Cur.rY,H_H);
                                                mvaddch(CurBox.r3.rX + 5 + Cur.rX,CurBox.r3.rY + 20 +Cur.rY,H_H);
                                                mvaddch(CurBox.r4.rX + 5 + Cur.rX,CurBox.r4.rY + 20 +Cur.rY,H_H);
                                                 direction = 2;
                                         }
                                         break;
                                case 2:
                                        if((arr_rbox[Cur.rX-1][Cur.rY]!=1) &&
                                           (arr_rbox[Cur.rX+1][Cur.rY]!=1) &&
                                           (arr_rbox[Cur.rX+2][Cur.rY]!=1))
                                         {
                                                 mvaddch(CurBox.r1.rX + 5 + Cur.rX,CurBox.r1.rY + 20 +Cur.rY,' ');
                                                mvaddch(CurBox.r2.rX + 5 + Cur.rX,CurBox.r2.rY + 20 +Cur.rY,' ');
                                                mvaddch(CurBox.r3.rX + 5 + Cur.rX,CurBox.r3.rY + 20 +Cur.rY,' ');
                                                mvaddch(CurBox.r4.rX + 5 + Cur.rX,CurBox.r4.rY + 20 +Cur.rY,' ');
                                                 CurBox.r1.rX = -1;
                                                 CurBox.r1.rY = 0;
                                                 CurBox.r2.rX = 0;
                                                 CurBox.r2.rY = 0;
                                                 CurBox.r3.rX = +1;
                                                 CurBox.r3.rY = 0;
                                                 CurBox.r4.rX = +2;
                                                 CurBox.r4.rY = 0;
                                                 mvaddch(CurBox.r1.rX + 5 + Cur.rX,CurBox.r1.rY + 20 +Cur.rY,H_H);
                                                mvaddch(CurBox.r2.rX + 5 + Cur.rX,CurBox.r2.rY + 20 +Cur.rY,H_H);
                                                mvaddch(CurBox.r3.rX + 5 + Cur.rX,CurBox.r3.rY + 20 +Cur.rY,H_H);
                                                mvaddch(CurBox.r4.rX + 5 + Cur.rX,CurBox.r4.rY + 20 +Cur.rY,H_H);
                                                 direction = 1;
                                         }
                                         break;
                        }
                        break;
                case 2:
                        switch(direction)
                        {
                                case 1:
                                        if(arr_rbox[Cur.rX][Cur.rY-1]!=1)
                                         {
                                                 mvaddch(5 + Cur.rX-1,20 +Cur.rY,' ');
                                                CurBox.r1.rX = 0;
                                                 CurBox.r1.rY = 1;
                                                 CurBox.r2.rX = 0;
                                                 CurBox.r2.rY = 0;
                                                 CurBox.r3.rX = +1;
                                                 CurBox.r3.rY = 0;
                                                 CurBox.r4.rX = 0;
                                                 CurBox.r4.rY = -1;
                                                 mvaddch(5 + Cur.rX,20 +Cur.rY-1,H_H);
                                                direction = 2;
                                         }
                                         break;
                                case 2:
                                        if(arr_rbox[Cur.rX-1][Cur.rY]!=1)
                                         {
                                                 mvaddch(5 + Cur.rX,20 +Cur.rY+1,' ');
                                                CurBox.r1.rX = 1;
                                                 CurBox.r1.rY = 0;
                                                 CurBox.r2.rX = 0;
                                                 CurBox.r2.rY = 0;
                                                 CurBox.r3.rX = 0;
                                                 CurBox.r3.rY = -1;
                                                 CurBox.r4.rX = -1;
                                                 CurBox.r4.rY = 0;
                                                 mvaddch(5 + Cur.rX-1, 20 +Cur.rY,H_H);
                                                direction = 3;
                                         }
                                         break;
                                case 3:
                                        if(arr_rbox[Cur.rX][Cur.rY+1]!=1)
                                         {
                                                 mvaddch(5 + Cur.rX+1,20 +Cur.rY,' ');
                                                CurBox.r1.rX = 0;
                                                 CurBox.r1.rY = -1;
                                                 CurBox.r2.rX = 0;
                                                 CurBox.r2.rY = 0;
                                                 CurBox.r3.rX = -1;
                                                 CurBox.r3.rY = 0;
                                                 CurBox.r4.rX = 0;
                                                 CurBox.r4.rY = 1;
                                                 mvaddch( 5 + Cur.rX, 20 +Cur.rY+1,H_H);
                                                direction = 4;
                                         }
                                         break;
                                case 4:
                                        if(arr_rbox[Cur.rX+1][Cur.rY]!=1)
                                         {
                                                 mvaddch( 5 + Cur.rX, 20 +Cur.rY-1,' ');
                                                CurBox.r1.rX = -1;
                                                 CurBox.r1.rY = 0;
                                                 CurBox.r2.rX = 0;
                                                 CurBox.r2.rY = 0;
                                                 CurBox.r3.rX = 0;
                                                 CurBox.r3.rY = 1;
                                                 CurBox.r4.rX = 1;
                                                 CurBox.r4.rY = 0;
                                                 mvaddch( 5 + Cur.rX+1, 20 +Cur.rY,H_H);
                                                direction = 1;
                                         }

                        }
                        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -