签到

05月06日
尚未签到

共有回帖数 0

    高傲自我

    等级:
    程序名称: CIW版 砖块碰撞        
    程序作者: CIW_BLUE      
    实现语言: C++ & Direct7.0      
    运行模式: 1024*768      

    因为里面用到了大量图片,如果你想要这个游戏的源代码就留下你的信箱,我会第一时间发给你的.      


    效果图:

    程序代码:

    #define INITGUID
    #pragma comment(lib, "ddraw.lib" )


    #include windows.h
    #include ddraw.h
    #include cmath
    #include cstdlib
    #include ctime
    #include io.h
    #include cstdio


    #include "GameDefine.h"
    #include "CDDraw.h"
    #include "CDInput.h"
    #include "DSAndDM.h"
    #include "CPlayerInfo.h"


    ///////////////////// 窗口函数声明 //////////////////////////
    ATOM MyRegisterClass(HINSTANCE hInstance);
    BOOL InitInstance(HINSTANCE, int);
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


    /////////////////// 游戏循环函数声明 ////////////////////////
    void GameInit();
    void GameMain();
    void GameExit();
    void DrawAllBrick();
    void MoveBrick();
    void IsBrickCollision();
    void RecoverPlayer();
    void DrawPlayerInfo();
    void GetPlayerInput();


    //////////////// 变量类型 //////////////////////////
    typedef unsigned char UCHAR;
    typedef unsigned long ULONG;
    typedef unsigned short USHORT;
    typedef LPDIRECTDRAWSURFACE7 LPDDSF7;


    //////////////// DirectDraw 变量 /////////////////////
    LPDIRECTDRAW7 lpDD = NULL;
    LPDDSF7 lpDDPrimary= NULL;
    LPDDSF7 lpDDBackSurface = NULL;


    //////////////////// 游戏常量 ///////////////////////////////
    const float MAX_TSPCE_NUM = (const float)0.9; //透明度
    const int SCREEN_WIDTH = 1024;
    const int SCREEN_HEIGHT = 768;
    const int SCREEN_BPP = 32 ;
    const int MAX_GAME_CROSS = 3;
    const int MAX_BRICK_X = 6;
    const int MAX_BRICK_Y = 6;
    const int MAX_BRICK_TYPE = 6;
    const int MAX_BRICK_GAP = 30;
    const int MAX_BRICK_W = 56;
    const int MAX_BRICK_H = 34;
    const int MAX_BRICK_OFFSET_X = 50;
    const int MAX_BRICK_OFFSET_Y = 100;
    const int MAX_MAINBRICK_X = (SCREEN_WIDTH1) - 200;
    const int MAX_MAINBRICK_Y = (SCREEN_HEIGHT1) + 250;
    const int MAX_MAINBRICK_WIDTH = 112;
    const int MAX_MAINBRICK_HEIGHT = 16;
    const int MAX_MAINBRICK_RISE_HEIGHT = 50;
    const int MAX_MOVEBRICK_W = 16;
    const int MAX_MOVEBRICK_H = 16;
    const int MAX_GAME_MAIN_WIDTH = 540;
    const int MAX_GAME_MAIN_HEIGHT = 750;
    const int MAX_CROSSINT_ADD_SPEED_X = 5;
    const int MAX_CROSSINT_ADD_SPEED_Y = 5;  
    const int MAX_HORSE_SPEED = 10;
    const int GAME_CHOOSE = 1;
    const int GAME_START = 2;
    const int GAME_END = 3;
    const int GAME_FRAME_TIME = 30;


    ///////// 游戏主要变量 //////////////
    CPlayerInfo cPlayerInfo(-5, 10, 5);
    CSprite cBg, cGameStart, cGameContinue;
    CDSoundAndDMusicInit cDSDMInit;
    CDSound cDSound;
    CDMusic cDMusic;
    CDInput cDInput;  
    int nBrickWidth[MAX_BRICK_TYPE] = {44, 40, 32, 42, 52, 40};
    int nBrickHeight[MAX_BRICK_TYPE] = {38, 41, 42, 38, 31, 44};
    int nBrick[MAX_BRICK_X][MAX_BRICK_Y] = { 1, 1, 6, 2, 6, 1,  
    0, 0, 0, 0, 0, 0,
    1, 1, 4, 6, 4, 1,  
    0, 0, 0, 0, 0, 0,
    1, 1, 1, 1, 1, 1,  
    0, 0, 0, 0, 0, 0
    };

    CSprite cBrick[MAX_BRICK_X][MAX_BRICK_Y]; //砖块
    CSprite cMainBrick; //下面的挡板
    CSprite cMoveBrick; //移动的挡板
    CSprite cMainBg; //背景
    BITMAPFILE stBrickBmp[MAX_BRICK_TYPE]; //砖块位图


    /////////////// 一般变量 ////////////
    HINSTANCE hInst;
    HWND hWnd;
    DWORD dwNow = 0;
    float fTspceNum = 1, bFlag = true;
    DDSURFACEDESC2 stDdsd;
    int nMempitch = 0;
    bool bIsExit = 0;
    int nGameState = GAME_CHOOSE;


    void GameInit()
    {
    //////////////////////////////////// 初始化 //////////////////////////////////////
    if( DirectDrawCreateEx( NULL, (void**)&lpDD, IID_IDirectDraw7, NULL) != DD_OK )
    {
    exit( 0 );
    }
    lpDD-SetCooperativeLevel( hWnd, DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX |  
    DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT );

    lpDD-SetDisplayMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, 0, 0);

    ////////////////////////// 创建 显示表面 //////////////////////////////////////////////
    memset( &stDdsd, 0, sizeof( DDSURFACEDESC2 ) );
    stDdsd.dwSize = sizeof( DDSURFACEDESC2 ) ;
    stDdsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    stDdsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP ;
    stDdsd.dwBackBufferCount = 1;

    lpDD-CreateSurface( &stDdsd, &lpDDPrimary, NULL );

    stDdsd.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER ;
    lpDDPrimary-GetAttachedSurface( &stDdsd.ddsCaps, &lpDDBackSurface);
    //////////////////////////////////////////////////////////////////////////////////////

    //////////////////////////// 上锁显示表面的内存 //////////////////////////////////////////
    DDSURFACEDESC2 stDdsd;
    memset( &stDdsd, 0, sizeof( DDSURFACEDESC2 ) );
    stDdsd.dwSize = sizeof( DDSURFACEDESC2 );
    lpDDPrimary-Lock( NULL, &stDdsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL );
    nMempitch = stDdsd.lPitch;
    lpDDPrimary-Unlock( NULL );

    srand( time(0) );
    /////////////////////////////////////////////////////////////////////////////////////

    cBg.InitSprite( "Data\Picture\Bg.bmp", 1, 357, 483, MAX_GAME_MAIN_WIDTH + 80,
    (SCREEN_HEIGHT1)-300 );
    cBg.SetExist( true );
    cGameStart.InitSprite( "Data\Picture\GameStart.bmp", 1, 448, 280, (SCREEN_WIDTH1) - 450,
    (SCREEN_HEIGHT1) - 100 );
    cGameStart.SetExist( true );
    cGameContinue.InitSprite( "Data\Picture\Continue.bmp", 1, 312, 317, (SCREEN_WIDTH1) - 450,
    (SCREEN_HEIGHT1) - 100);
    cGameContinue.SetExist( true );
    cMainBg.InitSprite( "Data\Picture\GameBg.bmp", 1, 576, 739);
    cMainBg.SetExist( true );

    //CloseWindow( hWnd );
    ///////////////////////// 初始化 cBrick /////////////////////////////////////
    LoadBitmapFile( "Data\Picture\Brick_1.bmp", &stBrickBmp[0] );
    LoadBitmapFile( "Data\Picture\Brick_2.bmp", &stBrickBmp[1] );
    LoadBitmapFile( "Data\Picture\Brick_3.bmp", &stBrickBmp[2] );
    LoadBitmapFile( "Data\Picture\Brick_4.bmp", &stBrickBmp[3] );
    LoadBitmapFile( "Data\Picture\Brick_5.bmp", &stBrickBmp[4] );
    LoadBitmapFile( "Data\Picture\Brick_6.bmp", &stBrickBmp[5] );
    for( int i = 0; i  MAX_BRICK_Y; i++)
    {
    for( int j = 0; j  MAX_BRICK_X; j++)
    {
    if( nBrick[j]  0 )
    {
    cBrick[j].InitSprite( stBrickBmp[nBrick[j] - 1], 1, nBrickWidth[nBrick[j] - 1],
    nBrickHeight[nBrick[j] - 1],
    MAX_BRICK_OFFSET_X + j * (MAX_BRICK_W + MAX_BRICK_GAP) ,
    MAX_BRICK_OFFSET_Y + i * (MAX_BRICK_H + MAX_BRICK_GAP),  
    0, 0, 0, 0 );

    cBrick[j].SetExist( true );

    cBrick[j].SetSpriteState( nBrick[j] ); //挡板的硬度

    cBrick[j].SetTspceNum( MAX_TSPCE_NUM );
    }
    }
    }

    cMainBrick.InitSprite( "Data\Picture\MainBrick.bmp", 1, MAX_MAINBRICK_WIDTH, MAX_MAINBRICK_HEIGHT, MAX_MAINBRICK_X, MAX_MAINBRICK_Y,
    0, 0, cPlayerInfo.GetBrickMainMoveSpeed(), cPlayerInfo.GetBrickMainMoveSpeed() );
    cMainBrick.SetExist( true );

    cMoveBrick.InitSprite( "Data\Picture\MoveBrick.bmp", 4, MAX_MOVEBRICK_W, MAX_MOVEBRICK_H, MAX_MAINBRICK_X + 40 , MAX_MAINBRICK_Y - 20,  
    0, 0, cPlayerInfo.GetBrickMoveSpeed(), cPlayerInfo.GetBrickMoveSpeed() );
    cMoveBrick.SetExist( true );
    cMoveBrick.SetUpdateTime( 2 );

    cMainBrick.SetTspceNum( MAX_TSPCE_NUM );
    cMoveBrick.SetTspceNum( MAX_TSPCE_NUM );
    cBg.SetTspceNum( MAX_TSPCE_NUM );
    cGameContinue.SetTspceNum( MAX_TSPCE_NUM );  
    cGameStart.SetTspceNum( MAX_TSPCE_NUM );  
    cGameStart.SetSpriteVX( 10 );
    cGameStart.SetSpriteVY( 10 );
    cGameContinue.SetSpriteVX( 10 );
    cGameContinue.SetSpriteVY( 10 );
    /////////////////////////////////////////////////////////////////////////////////////

    ///////////////////////// 初始化 cDInput CDSound CDMusic/////////////////////////////
    cDInput.InitDInput( hInst, hWnd );
    cDSDMInit.InitDSoundAndDMusic( hWnd );
    cDSound.InitDSound( cDSDMInit.GetDSoundInfo() );
    cDMusic.InitDMusic( cDSDMInit.GetDMusicInfo() );

    cDSound.AddWavFile( "Data\Sound\Wave\GameOver.wav" );
    cDSound.AddWavFile( "Data\Sound\Wave\Eat.wav" );
    cDSound.AddWavFile( "Data\Sound\Wave\Jump.WAV" );
    cDSound.AddWavFile( "Data\Sound\Wave\Collision.wav" );
    cDSound.AddWavFile( "Data\Sound\Wave\Break.WAV" );

    cDMusic.AddMidiFile( "Data\Sound\Midi\1.mid" );
    cDMusic.PlayMidiWithIndex( 0, 1);

    cPlayerInfo.SetIsDie( true );

    }


    void DrawAllBrick()
    {

    if( cPlayerInfo.GettIsFirstEnterGame() )
    {
    cGameStart.DrawSprite();
    return ;
    }

    if( cPlayerInfo.GetIsDie() )
    {
    cGameContinue.DrawSprite();
    return ;
    }



    for( int i = 0; i  MAX_BRICK_Y; i++)
    {
    for( int j = 0; j  MAX_BRICK_X; j++)
    {
    if( cBrick[j].GetExist() )
    {
    cBrick[j].DrawSprite();
    }
    }
    }

    cBg.DrawSprite();

    DrawPlayerInfo(); //显示玩家信息

    cMainBg.DrawSprite();

    cMainBrick.DrawSprite();

    cMoveBrick.DrawSprite();

    }



    void MoveBrick()
    {
    if( cPlayerInfo.GettIsFirstEnterGame() )
    {
    cGameStart.MoveSprite();
    if( cGameStart.GetSpriteX() = MAX_GAME_MAIN_WIDTH - cGameStart.GetSpriteWidth() - 10|| cGameStart.GetSpriteX() = 10 )
    cGameStart.SetSpriteVX( -cGameStart.GetSpriteVX() );

    if( cGameStart.GetSpriteY() = MAX_GAME_MAIN_HEIGHT - cGameStart.GetSpriteHeight() - 10|| cGameStart.GetSpriteY() = 60 )
    cGameStart.SetSpriteVY( -cGameStart.GetSpriteVY() );

    cGameStart.SetTspceNum( fTspceNum );

    if( bFlag )
    {
    fTspceNum -= (const float)0.01;
    if( fTspceNum  0.01)
    bFlag = false;
    }
    else
    {
    fTspceNum += (const float)0.01;
    if((int)fTspceNum  0.91 )
    bFlag = true;
    }

    return ;
    }

    if( cPlayerInfo.GetIsDie() )
    {
    cGameContinue.MoveSprite();
    if( cGameContinue.GetSpriteX() = MAX_GAME_MAIN_WIDTH - cGameContinue.GetSpriteWidth() - 10|| cGameContinue.GetSpriteX() = 10 )
    cGameContinue.SetSpriteVX( -cGameContinue.GetSpriteVX() );

    if( cGameContinue.GetSpriteY() = MAX_GAME_MAIN_HEIGHT - cGameContinue.GetSpriteHeight() - 10|| cGameContinue.GetSpriteY() = 10 )
    cGameContinue.SetSpriteVY( -cGameContinue.GetSpriteVY() );

    cGameContinue.SetTspceNum( fTspceNum );

    if( bFlag )
    {
    fTspceNum -= (const float)0.01;
    if( fTspceNum  (const float)0.01)
    bFlag = false;
    }
    else
    {
    fTspceNum += (const float)0.01;
    if((int)fTspceNum  (const float)0.91 )
    bFlag = true;
    }

    return ;
    }

    if( cDInput.GetKeyboardState( DIK_LEFT ) && cMainBrick.GetSpriteX() - cPlayerInfo.GetBrickMainMoveSpeed() - 12  0 )
    {
    cMainBrick.AddSpriteX(-abs(cMainBrick.GetSpriteVX()));

    if( cPlayerInfo.GetIsDie() )
    {
    cMoveBrick.AddSpriteX( -abs(cMainBrick.GetSpriteVX()) );
    }
    }
    else if( cDInput.GetKeyboardState( DIK_RIGHT ) && cMainBrick.GetSpriteX() + cMainBrick.GetSpriteWidth() + 10 = MAX_GAME_MAIN_WIDTH )
    {  
    cMainBrick.AddSpriteX(abs(cMainBrick.GetSpriteVX()));

    if( cPlayerInfo.GetIsDie() )
    {
    cMoveBrick.AddSpriteX( abs(cMainBrick.GetSpriteVX()) );
    }
    }
    else if( cDInput.GetKeyboardState( DIK_DOWN ) && cMainBrick.GetSpriteY() = MAX_MAINBRICK_RISE_HEIGHT + MAX_MAINBRICK_Y )
    {
    cMainBrick.AddSpriteY(abs(cMainBrick.GetSpriteVY()));
    }
    else if( cDInput.GetKeyboardState( DIK_UP ) && cMainBrick.GetSpriteY() = MAX_MAINBRICK_Y - MAX_MAINBRICK_RISE_HEIGHT )
    {
    cMainBrick.AddSpriteY(-abs(cMainBrick.GetSpriteVY()));
    }

    if( cMoveBrick.GetSpriteX() = MAX_GAME_MAIN_WIDTH || cMoveBrick.GetSpriteX() = 15 )
    {
    cMoveBrick.SetSpriteVX( -cMoveBrick.GetSpriteVX() );
    }

    if( cMoveBrick.GetSpriteY() = 70 )
    {
    cMoveBrick.SetSpriteVY( -cMoveBrick.GetSpriteVY() );
    }

    cMoveBrick.AddFrame();

    if( !cPlayerInfo.GetIsDie() )
    cMoveBrick.MoveSprite();
    }
    void IsBrickCollision()
    {
    int nNotExistBrickNum = 0;

    for( int i = 0; i  MAX_BRICK_Y; i++)
    {
    for( int j = 0; j  MAX_BRICK_X; j++)
    {
    if( cBrick[j].GetExist() )
    {
    if( cMoveBrick.CollisionForRect( *cBrick[j].GetRect() ) ) //发生碰撞
    {
    cBrick[j].SetTspceNum( cBrick[j].GetTspceNum()-0.15 );  
    cDSound.StopAllWav();
    cDSound.PlayWavWithIndex( 3, 0 );
    cBrick[j].SetSpriteState( cBrick[j].GetSpriteState() - 1 );
    if( cBrick[j].GetSpriteState() == 0 ) //消失
    {
    cBrick[j].SetExist( false ); //砖块撞掉了
    cPlayerInfo.SetScore( cPlayerInfo.GetScore() + (nBrick[j]) * 10);
    }

    POINT pt[4];
    pt[0].x = cBrick[j].GetRect()-left;
    pt[0].y = cBrick[j].GetRect()-top;

    pt[1].x = cBrick[j].GetRect()-right;
    pt[1].y = cBrick[j].GetRect()-top;

    pt[2].x = cBrick[j].GetRect()-right;
    pt[2].y = cBrick[j].GetRect()-bottom;

    pt[3].x = cBrick[j].GetRect()-left;
    pt[3].y = cBrick[j].GetRect()-bottom;

    if( cMoveBrick.CollisoinForSegment( pt[0], pt[1] ) )
    {
    cMoveBrick.SetSpriteVY( -cMoveBrick.GetSpriteVY() ) ;
    }
    else if( cMoveBrick.CollisoinForSegment( pt[1], pt[2] ) )
    {
    cMoveBrick.SetSpriteVX( -cMoveBrick.GetSpriteVY() ) ;
    }
    else if( cMoveBrick.CollisoinForSegment( pt[3], pt[2] ) )
    {
    cMoveBrick.SetSpriteVY( -cMoveBrick.GetSpriteVY() ) ;
    }
    else if( cMoveBrick.CollisoinForSegment( pt[0], pt[0] ) )
    {
    cMoveBrick.SetSpriteVX( -cMoveBrick.GetSpriteVX() ) ;
    }
    }
    nNotExistBrickNum ++;
    }

    }
    }

    //挡板全部完了
    if( !nNotExistBrickNum )
    {
    if( cPlayerInfo.GetCross()  MAX_GAME_CROSS )
    {
    cPlayerInfo.SetCross( cPlayerInfo.GetCross() + 1 );
    }
    for( int i = 0; i  MAX_BRICK_Y; i++)
    {
    for( int j = 0; j  MAX_BRICK_X; j++)
    {
    if( nBrick[j]  0 )
    {
    cBrick[j].SetTspceNum( 1 );
    cBrick[j].SetExist( true );
    cBrick[j].SetSpriteState( nBrick[j] );

    cBrick[j].SetSpriteVX( cBrick[j].GetSpriteVX() + MAX_CROSSINT_ADD_SPEED_X );
    cBrick[j].SetSpriteVY( cBrick[j].GetSpriteVY() + MAX_CROSSINT_ADD_SPEED_Y );

    }
    }
    }
    }


    if( cMoveBrick.GetSpriteY() = MAX_GAME_MAIN_HEIGHT && !cPlayerInfo.GetIsDie() )
    {
    if( cPlayerInfo.GetLife() == 0) //Game Over
    {
    }
    cPlayerInfo.SetLife( cPlayerInfo.GetLife() - 1 );
    cMoveBrick.SetSpriteX( cMainBrick.GetSpriteX() + 40 );
    cMoveBrick.SetSpriteY( cMainBrick.GetSpriteY() - 20 );
    cPlayerInfo.SetIsDie( true );
    }

    POINT pt[2] = { {cMainBrick.GetRect()-left, cMainBrick.GetRect()-top}, {cMainBrick.GetRect()-right, cMainBrick.GetRect()-top} };
    if( cMoveBrick.CollisoinForSegment(pt[0], pt[1] ) )
    {
    cDSound.StopAllWav();
    cDSound.PlayWavWithFileName( "Data\Sound\Wave\Jump.wav", 0);
    cMoveBrick.SetSpriteVY( -abs(cMoveBrick.GetSpriteVY()) );

    int nMainBrickCenter = cMainBrick.GetSpriteX() + (cMainBrick.GetSpriteWidth()1);
    int nMoveBrickX = cMoveBrick.GetSpriteX();//+ (cMoveBrick.GetSpriteWidth()1);

    if( cMoveBrick.GetSpriteVX()  0 )
    nMoveBrickX += cMoveBrick.GetSpriteWidth();

    if( nMoveBrickX  nMainBrickCenter )
    cMoveBrick.SetSpriteVX( abs(cMoveBrick.GetSpriteVX()) );
    else if( nMoveBrickX  nMainBrickCenter )
    cMoveBrick.SetSpriteVX( -abs(cMoveBrick.GetSpriteVX()) );
    }
    }




    void RecoverPlayer()
    {
    if( cPlayerInfo.GetIsDie() )
    {
    if( cDInput.GetKeyboardState( DIK_SPACE ) && cPlayerInfo.GetLife()  0)
    {
    cMoveBrick.SetSpriteVY( -abs(cMoveBrick.GetSpriteVY()) );
    cMoveBrick.SetSpriteX( cMainBrick.GetSpriteX() + 40 );
    cMoveBrick.SetSpriteY( cMainBrick.GetSpriteY() - 20 );
    cPlayerInfo.SetIsDie( false );
    }
    }
    }

    void DrawPlayerInfo()
    {

    char szText[100];
    sprintf( szText, "Score:%d", cPlayerInfo.GetScore() );
    DrawText( lpDDBackSurface, szText, 23, 33, RGB(100, 200, 256) );
    sprintf( szText, "Level:%d", cPlayerInfo.GetCross() );
    DrawText( lpDDBackSurface, szText, 495, 30, RGB(100, 200, 256) );

    }

    void GetPlayerInput()
    {

    if( cDInput.GetKeyboardState( DIK_SPACE ) && cPlayerInfo.GettIsFirstEnterGame() )
    {
    cPlayerInfo.SettIsFirstEnterGame( false );
    }
    }

    void GameMain()
    {
    if( bIsExit )
    return;

    if( KEYDOWN(VK_ESCAPE) )
    {
    bIsExit = 1;
    PostMessage( hWnd, WM_CLOSE, 0, 0 );
    }

    dwNow = GetTickCount();
    FillSurface( lpDDBackSurface, 0 );

    cDInput.GetKeyboardEvent();

    GetPlayerInput();
    DrawAllBrick(); //渲染所有砖块
    MoveBrick(); //移动挡板
    IsBrickCollision(); //是否发生碰撞
    RecoverPlayer(); //玩家是否Over

    while( GetTickCount() - dwNow = GAME_FRAME_TIME );

    while( FAILED(lpDDPrimary-Flip( NULL, DDFLIP_WAIT )));  
    }

    void GameExit()
    {
    for(int i =0; i  MAX_BRICK_TYPE; i++)
    ReleaseBitmapFile( &stBrickBmp );

    if( lpDDBackSurface )
    lpDDBackSurface-Release();

    if( lpDDPrimary )
    lpDDPrimary-Release();

    if( lpDD )
    lpDD-Release();

    }

    int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
    {
    MSG msg;

    MyRegisterClass(hInstance);


    if (!InitInstance (hInstance, nCmdShow))  
    {
    return FALSE;
    }

    GameInit();

    while(TRUE)
    {
    if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {  
    if (msg.message == WM_QUIT)
    break;

    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }  
    GameMain();
    }  

    GameExit();
    return msg.wParam;
    }


    ATOM MyRegisterClass(HINSTANCE hInstance)
    {
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);  
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = (WNDPROC)WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInstance;
    wcex.hIcon = NULL;
    wcex.hCursor = NULL;
    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = "CIW";
    wcex.hIconSm = NULL;

    return RegisterClassEx(&wcex);
    }


    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
    {
    hInst = hInstance;

    hWnd = CreateWindow("CIW", "CIW" , WS_POPUP | WS_VISIBLE,
    CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

    if (!hWnd)
    {
    return FALSE;
    }

    MoveWindow(hWnd,10,10,640,480,true);
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
     
    return TRUE;
    }



    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message)
    {
    case WM_DESTROY:
    PostQuitMessage(0);
    break;
    break;
    case WM_CLOSE:
    ExitProcess( 0 );
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
    }
    完了

    楼主 2016-06-09 16:53 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知