共有回帖数  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-01-15 16:36 回复 
 
 
   
             
                  
                  
 
 
 
     
	 
  
	Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
	
	意见反馈 | 
	关于直线 | 
	版权声明 | 
	会员须知