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

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

?? main.cpp

?? 俄羅斯方塊程序源碼
?? CPP
字號:

#include "windows.h"
#include "main.h"
#include "resource.h"

int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
					  LPSTR lpCmdLine,int nShowCmd)
{
	MSG  msg;
    BOOL bQuit;
    
	hInst = hInstance;
	hWnd = CreateDialogParam(hInstance,
		              (LPCTSTR)DLG_MAIN,
					  NULL,DlgProc,0);
	if (!InitApplication())
	{
		MessageBox(hWnd,"InitApplication Error",szAppName,MB_ICONINFORMATION);
	    DestroyWindow(hWnd);
		return FALSE;
	}
    ShowWindow(hWnd,SW_SHOW);
	UpdateWindow(hWnd);
	bQuit = FALSE;
	//bActive = TRUE;
	while(!bQuit)
	{
		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
		{  
			if (msg.message == WM_QUIT)
				bQuit = TRUE;
			else{
		        TranslateMessage(&msg);
		        DispatchMessage(&msg);
			}
		}
		else // None Message
		{
			if (bActive)
			{
				// Game Loop
				GameLoop();
			}
			else WaitMessage();
		}
	}

	if (!FreeApplication())
	{
		MessageBox(NULL,"FreeApplication Error!",szAppName,MB_ICONINFORMATION);
		return FALSE;
	}
	return TRUE;
}

//=======================
BOOL CALLBACK DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	long uid;

	switch(uMsg)
	{
	case WM_CLOSE:
		//EndDialog(hDlg,0);
		DestroyWindow(hWnd);
		return TRUE;

	case WM_DESTROY:
		PostQuitMessage(0);
		return TRUE;

	case WM_COMMAND:
		uid = LOWORD(wParam);
		switch(uid)
		{
		case IDM_NEW:
            NewGame();
            break;

		case IDM_SUSPEND:
            SuspendGame();
            break;

		case IDM_RESUME:
            ResumeGame();
			break;
		}
		return TRUE;
	}
	return FALSE;
}

//===========================
BOOL InitApplication()
{
	SheetsAddrTab[0]=Sheet1;
	SheetsAddrTab[1]=Sheet2;
	SheetsAddrTab[2]=Sheet3;
	SheetsAddrTab[3]=Sheet4;
	SheetsAddrTab[4]=Sheet5;
	SheetsAddrTab[5]=Sheet6;
	SheetsAddrTab[6]=Sheet7;

	hDc = GetDC(hWnd);
	hBackDc = CreateCompatibleDC(hDc);
	hBackBmp = CreateCompatibleBitmap(hDc,SCENE_WIDTH,SCENE_HEIGHT);
	DeleteObject(SelectObject(hBackDc,hBackBmp));

	hImagesDc = CreateCompatibleDC(hDc);
	//hImagesBmp = CreateCompatibleBitmap(hImagesDc,GRAIN_WIDTH*(MAX_COLOR+1),GRAIN_HEIGHT);
    hImagesBmp = LoadBitmap(hInst,(LPCTSTR) IDB_IMAGES);
    if (hImagesBmp == NULL)
    {
        MessageBox(hWnd,"LoadBitmap Faild!","fds",MB_OK);
    }
	SelectObject(hImagesDc,hImagesBmp);

    hNextDc = CreateCompatibleDC(hDc);
    hNextBmp = CreateCompatibleBitmap(hDc,64,64);
    SelectObject(hNextDc,hNextBmp);
	bActive = TRUE;
	return TRUE;
}

//===========================
BOOL FreeApplication()
{
	ReleaseDC(hWnd ,hDc);
	DeleteDC(hBackDc);
	DeleteObject(hBackBmp);
	DeleteDC(hImagesDc);
	DeleteObject(hImagesBmp);
    DeleteObject(hNextBmp);
    DeleteDC(hNextDc);
	return TRUE;
}

//==================
int Flip()
{
	BitBlt(hDc,MAGRIN_LEFT,MAGRIN_TOP,SCENE_WIDTH,SCENE_HEIGHT,
		hBackDc,0,0,SRCCOPY);

    BitBlt(hDc, MAGRIN_LEFT+ 12*16+ 10,MAGRIN_TOP+ 20,
           64,64,hNextDc,0,0,SRCCOPY);
	return 0;
}

//================
int GameLoop()
{
    DWORD dwTime;

	if(GameState == GS_PLAY){
		KeyProc();
        dwTime = GetTickCount();
        if ((dwTime - Player.dwTimeLamp)>500){
            Player.dwTimeLamp = dwTime;
		    CheckDrop();
        }
	}
    DrawMap();
	Flip();
	return 0;
}

//============
int KeyProc()
{
    
	if (GetAsyncKeyState(VK_UP)>0x80000000)
    {
        if (!KeyState.KeyUpDown ) 
        {
            // Key Up Down
            //MessageBox(hWnd,"Key Up Down","Hello!",MB_OK);
            ShiftSheet();
            KeyState.KeyUpDown = TRUE;
          }
    }
    else {
        KeyState.KeyUpDown = FALSE;
    }

    if (GetAsyncKeyState(VK_LEFT)>0x80000000)
    {
        if (!KeyState.KeyLeftDown )
        {
            if (Player.x >0 )
            {
                Player.x--;
                if (!CheckCurrSheet())
                    Player.x++;
            }
            KeyState.KeyLeftDown = TRUE;
            KeyState.dwTimeLeftDown = GetTickCount();
        }
        else if((GetTickCount()-KeyState.dwTimeLeftDown )>TIME_MOVE){
            KeyState.KeyLeftDown = FALSE;
        }
    }
    else{
        KeyState.KeyLeftDown = FALSE;
    }

    if (GetAsyncKeyState(VK_RIGHT)>0x80000000)
    {
        if (!KeyState.KeyRightDown ){
            if (Player.x <11)
            {
                Player.x++;
                if (!CheckCurrSheet())
                    Player.x--;

            }
            KeyState.KeyRightDown = TRUE;
            KeyState.dwTimeRightDown = GetTickCount();
        }
        else if((GetTickCount()-KeyState.dwTimeRightDown )>TIME_MOVE){
            KeyState.KeyRightDown = FALSE;
        }
    }
    else{
        KeyState.KeyRightDown = FALSE;
    }

    if (GetAsyncKeyState(VK_DOWN)>0x80000000)
    {
        if (!KeyState.KeyDownDown ){
            // Key Right Down
            //MessageBox(hWnd,"Key Down Down","Hello!",MB_OK);
            Player.y++;
            if (!CheckCurrSheet())
                Player.y--;
            KeyState.KeyDownDown = TRUE;
            KeyState.dwTimeDDown = GetTickCount();
        }
        else if((GetTickCount()-KeyState.dwTimeDDown )>KEY_PROC_TIME_INTERVAL){
            KeyState.KeyDownDown = FALSE;
        }
    }
    else{
        KeyState.KeyDownDown = FALSE;
    }

    return 0;
}

//============
int CheckDrop()
{
    int i,j,x,y;

    Player.y++;
    if (!CheckCurrSheet()){
        Player.y--;
        for(j=0;j<4;j++){
            for(i=0;i<4;i++){
                if(Player.CurrSheet[i][j]!=0)
                {
                    x = Player.x +i;
                    y = Player.y +j;
                    Map[x][y]= Player.CurrColor;
                }// end if
            }// end for j
        }// end for i
        
        ClearRow();
        if (CheckOver()){
            GameState = GS_GAMEOVER;
            MessageBox(hWnd,"Game Over!",";-)",MB_ICONINFORMATION);
            return 0;
        }

        x = Player.NextSheet;
        CopyMemory(&Player.CurrSheet,SheetsAddrTab[x],16);
        Player.CurrColor = Player.NextColor;
        Player.NextSheet = rand() % MAX_SHEET;
        Player.NextColor = (rand() % MAX_COLOR) +1;
        Player.x = 4;
        Player.y = 0;
        DrawNext();
    }

	return 0;
}

//======================
int NewGame()
{
	int n;

	ZeroMemory(Map,12*20);
	ZeroMemory(&Player ,sizeof(CPlayer));
	
    n = rand() % MAX_SHEET; // 0 to 6
    CopyMemory(Player.CurrSheet ,SheetsAddrTab[n],16 );

    Player.CurrColor = (rand() % MAX_COLOR)+1; // 1 to 4
    Player.NextSheet = rand() % MAX_SHEET;
    Player.NextColor = (rand() % MAX_COLOR)+1; // 1 to 4
    Player.x = 4;
    Player.y = 0;
    Player.dwScore1 = 0;
    Player.dwScore2 = 0;
    Player.dwTimeLamp = GetTickCount();

    GameState = GS_PLAY;
    DrawNext();
	return 0;
}

//=============================
int SuspendGame()
{
	return 0;
}
//=============================
int ResumeGame()
{
	return 0;
}
//=============================

int DrawMap()
{
    int i,j,x,y,n;

    //BitBlt(hBackDc,0,0,80,16,hImagesDc,0,0,SRCCOPY);

    for(j= 0;j<20;j++)
    {
        x = 0;
        for(i= 0;i<12;i++)
        {
            n = Map[i][j];
            n *= 16;
            x = i*16;
            y = j*16;
            BitBlt(hBackDc,x,y,16,16,hImagesDc,n,0,SRCCOPY);
        }// end for i
    }// end for j

    // Draw CurrSheet
    //if (GameState != GS_PLAY) return 0;

    n = Player.CurrColor *16;
    for(j= 0;j<4;j++)
    {
        for(i= 0;i<4;i++)
        {
            if (Player.CurrSheet[i][j]!= 0)
            {
                x = (Player.x +i) * 16;
                y = (Player.y +j) * 16;
                BitBlt(hBackDc,x,y,16,16,hImagesDc,n,0,SRCCOPY);
            }
        }
    }

    //TextOut(hBackDc,0,0,"fdsafdsafd\0",-1);

    return 0;

}

//===================================

int ShiftSheet()
{
    BYTE tmpSheet[4][4];
    int i,j,n,x,y;

    for(j=0;j<4;j++){
        for(i=0;i<4;i++){
            tmpSheet[i][j]= Player.CurrSheet[j][3-i];
        }
    }
    
    n=0;
    for(i=0;i<4;i++){
        for(j= 0;j<4;j++)
            if (tmpSheet[i][j]!= 0) goto ExitFor;
        
        n++;
    }
ExitFor:
    // Left Clear
    if (n!= 0){
        for(i=n;i<4;i++){
            for(j=0;j<4;j++){
                tmpSheet[i-n][j]= tmpSheet[i][j];
                tmpSheet[i][j]= 0;
            }
        }
    }
    
    // Check Can Shift
    for(j=0;j<4;j++){
        for(i=0;i<4;i++){
            if(tmpSheet[i][j]!= 0)
            {
                x = Player.x +i;
                y = Player.y +j;
                if((x>11)||(y>19)) return 1;
                if(Map[x][y]!= 0) return 1;
            }
        }
    }

    CopyMemory(Player.CurrSheet ,tmpSheet,16);

    return 0;
}

//=================
BOOL CheckCurrSheet()
{
    int x,y,i,j;

    for(j=0;j<4;j++){
        for(i=0;i<4;i++){
            if (Player.CurrSheet[i][j]!=0)
            {
                x = Player.x +i;
                y = Player.y +j;
                if ((x >11)||(y>19) ) return FALSE;
                if (Map[x][y]!= 0) return FALSE;
            }
        }
    }

    return TRUE;
}

//======================================
int ClearRow()
{
    int y,y1,i,bOk;
    char Buf[256];

    y = y1 = 19;
    for(y=19;y>=0;y--){
        bOk = TRUE;
        for(i=0;i<12;i++){
            if (Map[i][y]==0) bOk = FALSE;
        }

        if(bOk){ // Delete Row
            for(y1= y;y1>0;y1--){
                for(i=0;i<12;i++){
                    Map[i][y1]= Map[i][y1-1];
                }
            }
            Player.dwScore1 ++;
            Player.dwScore2 +=100;
            wsprintf(Buf,"%d",Player.dwScore2 );
            SetDlgItemText(hWnd,IDC_SCORE1,Buf);
            wsprintf(Buf,"%d",Player.dwScore1 );
            SetDlgItemText(hWnd,IDC_SCORE2,Buf);
            wsprintf(Buf,"%d",Player.Level );
            SetDlgItemText(hWnd,IDC_SPEED,Buf);
            y++;
        }
       
    }// end for y
    return 0;
}

//=======================================
BOOL CheckOver()
{
    BOOL bResult;
    int x;

    bResult = FALSE;
    for(x= 0;x<12;x++){
        if (Map[x][0]!=0) bResult = TRUE;
    }
    return bResult;
}

//=======================
int DrawNext()
{
    int i,j;
    int n;
    BYTE tmpSheet[4][4];
    RECT R;
    HBRUSH hNewBrush;

    hNewBrush = CreateSolidBrush(0x0);
    R.left = 0;
    R.top = 0;
    R.right = 64;
    R.bottom = 64;
    FillRect(hNextDc,&R,hNewBrush);
    DeleteObject(hNewBrush);

    n = Player.NextColor *16;
    CopyMemory(tmpSheet,SheetsAddrTab[Player.NextSheet],16);

    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            if(tmpSheet[i][j]!= 0){
                BitBlt(hNextDc,i*16,j*16,16,16,hImagesDc,n,0,SRCCOPY);
            }
        }
    }

    return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人app在线| 日本最新不卡在线| 国产三级一区二区三区| 日韩一区二区三| 制服视频三区第一页精品| 欧美日韩三级一区| 欧美午夜精品一区| 欧美一区二区三区不卡| 91精品国产综合久久蜜臀| 日韩精品资源二区在线| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲人成亚洲人成在线观看图片| 精品福利二区三区| 久久久国产午夜精品 | 一区二区在线观看视频在线观看| 中文字幕第一区综合| 亚洲私人黄色宅男| 婷婷成人激情在线网| 黄色小说综合网站| 成人黄色av电影| 欧美日韩精品欧美日韩精品一| 欧美一区二区三区不卡| 国产三级一区二区| 亚洲午夜电影在线| 麻豆精品国产传媒mv男同| 高清不卡一区二区在线| 欧美亚洲动漫精品| 2022国产精品视频| 亚洲综合激情小说| 国产一区二区精品久久91| 色天天综合色天天久久| 欧美不卡一区二区三区| 亚洲人成小说网站色在线| 日韩电影在线看| 99久免费精品视频在线观看 | 风间由美一区二区三区在线观看| 色婷婷av久久久久久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久精品国产一区二区三| 成人avav影音| 久久综合av免费| 一区二区三区**美女毛片| 国产在线精品免费| 欧美另类z0zxhd电影| 中文一区二区完整视频在线观看| 日韩激情视频在线观看| av激情综合网| 久久这里只有精品视频网| 亚洲gay无套男同| 成人97人人超碰人人99| 精品国产网站在线观看| 图片区小说区区亚洲影院| 99国产精品久久久久久久久久| 精品国产一区二区三区不卡 | 国产 日韩 欧美大片| 日韩一区二区在线观看| 亚洲国产综合在线| 色综合欧美在线| 国产精品欧美一区二区三区| 精品一区二区久久久| 91精品国产综合久久久久久| 久久精品亚洲精品国产欧美kt∨| 日本道精品一区二区三区| 国产人久久人人人人爽| 黑人巨大精品欧美黑白配亚洲| 欧美情侣在线播放| 亚洲成人精品影院| 欧美日韩一卡二卡| 亚洲高清久久久| 欧美日韩一区二区三区视频| 一区二区三区四区中文字幕| 一本久道久久综合中文字幕| 亚洲欧洲国产专区| 99re热这里只有精品免费视频| 中文字幕va一区二区三区| 国产一区二区不卡在线| 久久亚洲影视婷婷| 国产a级毛片一区| 国产精品污污网站在线观看| www.66久久| 一区二区三区在线观看网站| 在线精品国精品国产尤物884a| 亚洲综合精品久久| 56国语精品自产拍在线观看| 青青草精品视频| 亚洲精品在线一区二区| 懂色av一区二区三区免费观看| 18成人在线视频| 精品视频在线看| 久草精品在线观看| 国产清纯美女被跳蛋高潮一区二区久久w| 国内精品写真在线观看| 国产精品美女一区二区三区| 91免费版在线| 丝袜美腿一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产成人精品免费在线| 一区二区三区不卡在线观看| 日韩午夜在线观看视频| 成人免费观看av| 亚洲成人高清在线| 2021中文字幕一区亚洲| 91香蕉视频mp4| 日精品一区二区三区| 国产偷国产偷精品高清尤物| 在线亚洲欧美专区二区| 久久精品国产亚洲aⅴ | 99精品桃花视频在线观看| 五月综合激情婷婷六月色窝| 精品粉嫩aⅴ一区二区三区四区| av中文字幕一区| 日精品一区二区| 中文字幕在线免费不卡| 欧美电影免费观看高清完整版在| 国产精品自拍在线| 亚洲国产精品一区二区尤物区| 欧美一区二区视频网站| 99re66热这里只有精品3直播| 蜜乳av一区二区| 一区二区三区在线视频免费观看| 精品国产青草久久久久福利| 在线观看一区日韩| 成人美女在线观看| 精品一区二区三区免费毛片爱| 伊人夜夜躁av伊人久久| 国产亚洲精品bt天堂精选| 91精品国产综合久久久蜜臀粉嫩| 欧美日韩国产天堂| 99久久免费国产| 国产一区二区在线观看免费| 亚洲福利视频一区二区| 自拍偷拍亚洲综合| 日韩美女天天操| 欧美肥妇bbw| 不卡av在线免费观看| 国内精品久久久久影院色| 日本亚洲三级在线| 午夜精品一区二区三区免费视频 | 欧美日韩国产经典色站一区二区三区| 福利视频网站一区二区三区| 国产一区二区三区免费播放| 日韩 欧美一区二区三区| 亚洲一区二区在线免费看| 亚洲免费在线视频一区 二区| 国产视频不卡一区| 国产清纯在线一区二区www| 日韩精品一区二区三区四区视频 | 国产69精品久久99不卡| 国产美女精品在线| 国内成+人亚洲+欧美+综合在线| 日韩高清一区在线| 蜜桃精品在线观看| 国产一区二区三区日韩| 国产麻豆9l精品三级站| 国产精品亚洲一区二区三区妖精| 国产麻豆精品一区二区| 国产成人av一区二区三区在线观看| 国产乱码精品一区二区三区忘忧草 | 免费国产亚洲视频| 青草国产精品久久久久久| 欧美aaaaa成人免费观看视频| 蜜臀av一区二区| 国产资源精品在线观看| 国产99精品国产| 97se亚洲国产综合自在线不卡 | 男人的天堂亚洲一区| 麻豆精品一区二区av白丝在线| 久久99精品一区二区三区| 国产麻豆精品视频| 99热精品国产| 欧美精品自拍偷拍| 久久蜜桃av一区二区天堂| 欧美经典一区二区| 一区二区三区日韩精品| 日本一不卡视频| 床上的激情91.| 欧美日本一区二区| 久久久精品中文字幕麻豆发布| 中文字幕一区视频| 日本不卡一区二区三区高清视频| 狠狠色狠狠色综合日日91app| 成人在线综合网| 欧美日韩国产高清一区二区| 亚洲精品在线一区二区| 亚洲一区在线观看网站| 国内精品国产成人国产三级粉色| 一本大道av伊人久久综合| 日韩亚洲欧美中文三级| 国产精品国产三级国产a| 亚洲国产一区二区视频| 国产精品一区二区在线看| 欧美影片第一页| 国产三级一区二区| 日韩电影在线免费观看| av亚洲精华国产精华精| 精品国产免费人成电影在线观看四季| 中文字幕欧美一区| 精品一区二区三区免费毛片爱| 色狠狠一区二区| 国产精品嫩草影院com|