亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? block.txt

?? block for c language
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
}

/* Rotate the block, if success, return true */
int RotateBlock(Block *block)
{
    char temp,i,j;
    int b_success;
    if(curBlock.size==2)
        return;
    if(( b_success=CanRotate()))
    {
        EraseBlock(block,BoardLeft,BoardTop,CellSize);
        memcpy(curBlock.c,BufferCells,16);
        DrawBlock(block,BoardLeft,BoardTop,CellSize); 
}
    return b_success;
}


/* erase a block, only fill the filled cell with background color */
void _INNER_HELPER EraseBlock(Block *block,int bdLeft,int bdTop,int cellSize)
{
    int i,j;
    setfillstyle(SOLID_FILL,BkGndColor);
    for(i=0;i<block->size;i++)
    {
        for(j=0;j<block->size;j++)
        {
            if(block->c[i][j] && (block->y+j>=0))
            {
                floodfill(
                    bdLeft+cellSize*(i+block->x)+cellSize/2,
                    bdTop+cellSize*(j+block->y)+cellSize/2,
                    BorderColor);
            }
        }
    }
}

/* move by the direction if can, donothing if cannot
* return value: true - success, false - cannot move toward this direction
*/
int MoveBlock(Block *block,int dx,int dy)
{
    int b_canmove=CanMove(dx,dy);
    if(b_canmove)
    {
        EraseBlock(block,BoardLeft,BoardTop,CellSize);
        curBlock.x+=dx;
        curBlock.y+=dy;
        DrawBlock(block,BoardLeft,BoardTop,CellSize);
    }
    return b_canmove;
}

/* drop the block to the bottom! */
int DropBlock(Block *block)
{
    EraseBlock(block,BoardLeft,BoardTop,CellSize);
    while(CanMove(0,1))
    {
        curBlock.y++;
    }
    DrawBlock(block,BoardLeft,BoardTop,CellSize);
    return 0;/* return value is assign to the block's alive */
}


/* init the graphics mode, draw the board grid */
void InitGame()
{
    int i,j,gdriver=DETECT,gmode;
    struct time sysTime;
    /* draw board cells */
    memset(Board,0,BoardWidth*BoardHeight*2);
    memset(nextBlock.c,0,16);
    strcpy(info_help,"P: Pause Game. --by hoodlum1980");
    initgraph(&gdriver,&gmode,"c:\\tc\\");
    setcolor(BorderColor);
    for(i=0;i<=BoardWidth;i++)
    {
        line(BoardLeft+i*CellSize, BoardTop, BoardLeft+i*CellSize, BoardTop+ BoardHeight*CellSize);
    }
    for(i=0;i<=BoardHeight;i++)
    {
        line(BoardLeft, BoardTop+i*CellSize, BoardLeft+BoardWidth*CellSize, BoardTop+ i*CellSize);
    }
    /* draw board outer border rect */
    rectangle(BoardLeft-CellSize/4, BoardTop-CellSize/4,
        BoardLeft+BoardWidth*CellSize+CellSize/4,
        BoardTop+BoardHeight*CellSize+CellSize/4);

    /* draw next block grids */
    for(i=0;i<=4;i++)
    {
        line(NBBoardLeft+i*NBCellSize, NBBoardTop, NBBoardLeft+i*NBCellSize, NBBoardTop+4*NBCellSize);
        line(NBBoardLeft, NBBoardTop+i*NBCellSize, NBBoardLeft+4*NBCellSize, NBBoardTop+ i*NBCellSize);
    }

    /* draw score rect */
    rectangle(ScoreBoardLeft,ScoreBoardTop,ScoreBoardLeft+ScoreBoardWidth,ScoreBoardTop+ScoreBoardHeight);
    DisplayScore();

    /* set new seed! */
    gettime(&sysTime); 
srand(sysTime.ti_hour*3600+sysTime.ti_min*60+sysTime.ti_sec);

    GenerateBlock(&nextBlock);
    NextBlock();    /* create first block */
    setcolor(DARKGRAY);
    outtextxy(InfoLeft,InfoTop+20,"Up  -rotate  Space-drop");
    outtextxy(InfoLeft,InfoTop+35,"Left-left    Right-right");
    outtextxy(InfoLeft,InfoTop+50,"Esc -exit");
    DisplayInfo(info_help);
}

/* set the isFilled and fillcolor data to the board */
void _INNER_HELPER FillBoardData()
{
    int i,j;
    for(i=0;i<curBlock.size;i++)
    {
        for(j=0;j<curBlock.size;j++)
        {
            if(curBlock.c[i][j] && (curBlock.y+j)>=0)
            {
                Board[curBlock.x+i][curBlock.y+j][0]=1;
                Board[curBlock.x+i][curBlock.y+j][1]=curBlock.color;
            }
        }
    }
}

/* draw one line of the board */
void _INNER_HELPER PaintBoard()
{
    int i,j,fillcolor;
    for(j=max((TopLine-4),0);j<BoardHeight;j++)
    {
        for(i=0;i<BoardWidth;i++)
        {
            fillcolor=Board[i][j][0]? Board[i][j][1]:BkGndColor;
            setfillstyle(SOLID_FILL,fillcolor);
            floodfill(BoardLeft+i*CellSize+CellSize/2,BoardTop+j*CellSize+CellSize/2,BorderColor);
        }
    }
}

/* check if one line if filled full and increase the totalScore! */
void _INNER_HELPER CheckBoard()
{
    int i,j,k,score=10,sum=0,topy,lines=0;
    /* we find the top empty line! */
    j=topy=BoardHeight-1;
    do
    {
        sum=0;
        for(i=0;i< BoardWidth; i++)
        {
            sum+=Board[i][topy][0];
        }
        topy--;
    } while(sum>0 && topy>0);

    /* remove the full filled line (max remove lines count = 4) */
    do
    {
        sum=0;
        for(i=0;i< BoardWidth; i++)
            sum+=Board[i][j][0];

        if(sum==BoardWidth)/* we find this line is full filled, remove it! */
        {
            /* move the cells data down one line */
            for(k=j; k > topy;k--)
            {
                for(i=0;i<BoardWidth;i++)
                {
                    Board[i][k][0]=Board[i][k-1][0];
                    Board[i][k][1]=Board[i][k-1][1];
                }
            }
            /*make the top line empty! */ 
for(i=0;i<BoardWidth;i++)
            {
                Board[i][topy][0]=0;
                Board[i][topy][1]=0;
            }
            topy++;        /* move the topline downward one line! */
            lines++;    /* lines <=4 */
            TotalScore+=score;
            score*=2;    /* adding: 10, 30, 70, 150 */
        }
        else
            j--;
    } while(sum>0 && j>topy && lines<4);
    /* speed up the game when score is high, minimum is 400 */
    FrameTime=max(1200-100*(TotalScore/200), 400);
    TopLine=topy;/* update the top line */
    /* if no lines remove, only add 1: */
    if(lines==0)
        TotalScore++;
}

/* display the score */
void _INNER_HELPER DisplayScore()
{
    setcolor(BkGndColor);
    outtextxy(ScoreBoardLeft+5,ScoreBoardTop+5,info_score);
    setcolor(ScoreColor);
    sprintf(info_score,"Score: %d",TotalScore);
    outtextxy(ScoreBoardLeft+5,ScoreBoardTop+5,info_score);
}

/* we call this function when a block is inactive. */
void UpdateBoard()
{
    FillBoardData();
    CheckBoard();
    PaintBoard();
    DisplayScore();
}

/* pause the game, and timer handler stop move down the block! */
int PauseGame()
{
    int key=0;
    DisplayInfo("Press P to Start or Resume!");
    while(key!=K_P && key!=K_ESC)
    {
        while(!(key=GetKeyCode())){}
    }
    DisplayInfo(info_help);
    return key;
}

/* quit the game and do cleaning work. */
void QuitGame()
{
    closegraph();
}
/* the entry point function. */
void main()
{
    int i,flag=1,j,key=0,tick=0;
    InitGame();
    if(PauseGame()==K_ESC)
        goto GameOver;
    /* wait until a key pressed */
    while(key!=K_ESC)
    {
        /* wait until a key pressed */
        while(!(key=GetKeyCode()))
        {
            tick++;
            if(tick>=FrameTime)
            {
                /* our block has dead! (can't move down), we get next block */
                if(!MoveBlock(&curBlock,0,1))
                {
                    UpdateBoard();
                    NextBlock();
                    if(!CanMove(0,1))
                        goto GameOver;
                } 
 tick=0;
            }
            delay(100);
        }
        switch(key)
        {
            case K_LEFT:
                MoveBlock(&curBlock,-1,0);
                break;
            case K_RIGHT:
                MoveBlock(&curBlock,1,0);
                break;
            case K_DOWN:
                MoveBlock(&curBlock,0,1);
                break;
            case K_UP:
                RotateBlock(&curBlock);
                break;
            case K_SPACE:
                DropBlock(&curBlock);
                break;
            case K_P:
                PauseGame();
                break;
        }
    }
GameOver:
    DisplayInfo("GAME OVER!  Press any key to exit!");
    getch(); /* wait the user Press any key. */
    QuitGame();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产高清一区二区| 日韩激情中文字幕| 欧美一区欧美二区| 欧美精品vⅰdeose4hd| 欧美日韩成人综合在线一区二区| 色94色欧美sute亚洲线路一久| 99久久免费视频.com| av网站免费线看精品| 色悠悠亚洲一区二区| www.亚洲在线| 国产一区二区美女诱惑| 国产成人aaaa| 北条麻妃国产九九精品视频| 99久久免费精品高清特色大片| 成人一区二区三区视频在线观看 | 91行情网站电视在线观看高清版| www.亚洲免费av| 在线亚洲欧美专区二区| 在线播放国产精品二区一二区四区| 欧美老人xxxx18| 亚洲精品一区二区三区在线观看 | 国内精品写真在线观看| 国产精品一区二区无线| 国产成人鲁色资源国产91色综| 成人一区二区三区在线观看| 91碰在线视频| 大桥未久av一区二区三区中文| 懂色av噜噜一区二区三区av| 裸体歌舞表演一区二区| 国产成人精品影视| 欧洲人成人精品| 欧美日韩第一区日日骚| 国产亚洲人成网站| 欧美激情一区在线观看| 亚洲天堂2014| 免费观看久久久4p| 成人午夜电影网站| 欧洲一区二区三区在线| 91精品国产一区二区人妖| 久久亚洲二区三区| 亚洲成人一区在线| 99在线热播精品免费| 精品伦理精品一区| 国产精品久久久久久久久果冻传媒 | 欧美日韩成人在线| 国产精品网友自拍| 日韩精品五月天| 91啪九色porn原创视频在线观看| 欧美福利视频一区| 亚洲免费资源在线播放| 国产精品亚洲视频| 欧美一区日韩一区| 亚洲图片有声小说| 91猫先生在线| 国产精品欧美一区喷水| 国产在线精品免费| 日韩一区二区三区视频在线观看| 中文字幕一区二区三区在线观看 | 日产国产欧美视频一区精品| 91丨九色porny丨蝌蚪| 久久精品人人做人人爽人人| 日韩av电影免费观看高清完整版 | 一本久久精品一区二区| 国产丝袜美腿一区二区三区| 亚洲观看高清完整版在线观看| 成人蜜臀av电影| 久久新电视剧免费观看| 视频精品一区二区| 欧美色图在线观看| 亚洲成av人片| 制服丝袜国产精品| 日本aⅴ亚洲精品中文乱码| 欧美性色综合网| 亚洲欧美日韩电影| 色噜噜久久综合| 亚洲一区中文在线| 欧美日韩激情一区二区| 亚洲一区二区三区中文字幕在线| 99re66热这里只有精品3直播 | 欧美二区乱c少妇| 日韩成人一级片| 欧美一区二区三区成人| 久久国产精品区| 精品av久久707| 丰满放荡岳乱妇91ww| 中文字幕国产一区| 91美女在线观看| 亚洲国产精品久久久久婷婷884| 日本高清不卡在线观看| 亚洲国产成人porn| 精品乱人伦一区二区三区| 国产综合一区二区| 国产精品久久网站| 欧美性受极品xxxx喷水| 蜜臀av性久久久久av蜜臀妖精| 欧美tickling网站挠脚心| 国产高清精品网站| 亚洲精品欧美二区三区中文字幕| 欧美天堂亚洲电影院在线播放| 偷拍日韩校园综合在线| 26uuu国产日韩综合| av不卡在线观看| 午夜精品久久久| 久久九九久久九九| 日本乱码高清不卡字幕| 亚洲va欧美va人人爽| 精品美女在线播放| 成人精品一区二区三区四区 | 99在线视频精品| 日韩av网站免费在线| 日本一区二区三区久久久久久久久不| 粉嫩一区二区三区在线看| 亚洲小说欧美激情另类| 日韩免费观看2025年上映的电影 | 国产女人18毛片水真多成人如厕| 97久久超碰国产精品| 午夜亚洲福利老司机| 国产日产欧产精品推荐色| 色婷婷av一区二区三区大白胸| 久久精品国产亚洲5555| 亚洲精品亚洲人成人网 | 久久免费电影网| 亚洲图片一区二区| 国产在线播放一区二区三区| 国产嫩草影院久久久久| 666欧美在线视频| 成人黄色综合网站| 国产精品不卡在线| 精品国产一二三| 国产精品久久久久精k8| 欧美一级日韩不卡播放免费| 99久久er热在这里只有精品15| 国产欧美日韩在线视频| 日韩欧美色综合网站| 精品视频一区三区九区| 成人h动漫精品一区二区| 久久丁香综合五月国产三级网站| 中文字幕综合网| 国产精品伦理一区二区| 国产欧美日韩不卡免费| 日韩欧美成人激情| 91精品国产入口在线| 欧美日韩一区二区三区在线 | 中文字幕在线不卡| 69精品人人人人| 欧美日韩在线播放三区| 在线精品视频免费播放| 99久久精品国产网站| 福利一区二区在线观看| 国产成人免费av在线| 丁香六月综合激情| 成人少妇影院yyyy| 国产a久久麻豆| 大白屁股一区二区视频| 丁香激情综合五月| 波多野结衣亚洲一区| 99精品久久99久久久久| av福利精品导航| 色综合久久中文综合久久牛| 91免费观看视频在线| 色94色欧美sute亚洲线路一久| 9人人澡人人爽人人精品| www.成人在线| 欧美综合天天夜夜久久| 欧美二区三区91| 欧美va在线播放| 国产日韩精品一区二区浪潮av| 精品国产乱码久久久久久闺蜜| 2023国产精品| 国产精品高潮久久久久无| 亚洲欧美日韩精品久久久久| 亚洲综合在线观看视频| 日韩经典一区二区| 国产一区二区免费在线| 99精品欧美一区二区三区综合在线| jizz一区二区| 欧美三级日韩三级国产三级| 精品美女在线播放| 成人欧美一区二区三区视频网页| 亚洲在线成人精品| 精品一区二区在线免费观看| 成人开心网精品视频| 欧美日韩精品一区二区| 精品久久国产字幕高潮| 欧美国产在线观看| 亚洲国产欧美在线| 国产精品66部| 欧美无人高清视频在线观看| 欧美xxxxx裸体时装秀| 玉足女爽爽91| 国产在线视频不卡二| 在线观看av不卡| 久久久99久久| 丝袜美腿高跟呻吟高潮一区| 成人综合在线网站| 制服丝袜亚洲色图| 亚洲婷婷国产精品电影人久久| 婷婷成人激情在线网| av亚洲精华国产精华精| xf在线a精品一区二区视频网站|