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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fight.cpp

?? 一款C++小游戲的源代碼
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#ifdef  WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

#include<windows.h>
#include<windowsx.h>
#include<ddraw.h>
#include<stdio.h>
#include<stdlib.h>
#include<mmsystem.h>
#include<math.h>
#include<direct.h>
#include<wingdi.h>
#include<dsound.h>
#include<winbase.h>
#include<dinput.h>
#include"resource.h"
#include"ddutil.h"
#include"dsutil.h"

#define GameLogo  1//進(jìn)入游戲
#define GameInit  2//
#define GameReady 3
#define GameStart 4//游戲開始
#define GamePass  5//游戲過關(guān)
#define GameWin   6//游戲勝利
#define GameOver  7//游戲結(jié)束
#define GameSpeed 1//游戲速度

#define DINPUT_BUFFERSIZE		16	

#define Aup         0
#define Aright      1
#define Adown       2
#define Aleft       3

#define cenemy     10//敵機(jī)數(shù)量
#define ctree      40//樹的數(shù)量
#define cmap       10//游戲地圖數(shù)

#define leftblank  100//地圖離左邊的象素距離
#define super       0//
#define control     1//用于無敵時的情況
#define Fplane      0//飛機(jī)發(fā)射的子彈
#define Fenemy      1//地極發(fā)射的子彈
#define TimeValue   20

#define name      "fight"
#define title     "fight"
 	
class PLANE
{
public:
	int   planestatus;//飛機(jī)狀態(tài)
 	int   lifenum;//飛機(jī)的生命數(shù)
	int   x,y;//飛機(jī)坐標(biāo)
	int   height,width;//飛機(jī)頁面的尺寸
	int   speed;//飛機(jī)速度
	int   direct;//飛機(jī)方向
	bool  bfire;//是否可以發(fā)射子彈
	bool  bdead;//飛機(jī)是否死亡
};

class FIRE
{
public:
	int   x,y;
	int   height,width;
	int   speed;
	int   direct;
	int   Efire;
    bool  bdead;//子彈是否還需要顯示
	bool  type;//是飛機(jī)發(fā)射的還是敵機(jī)發(fā)射的
};

class ENEMY
{
public:
	int   x,y;
	int   height,width;
	int   speed;
	int   direct;
	bool  bfire;
	bool  bdead;
};
 
class TREE
{
public:
	int   x,y;
	int   height,width;
	int   type;//是指定樹的種類
};

class FLAME
{
public:
	int   x,y;
	int   height,width;
	int   ftps;//所顯示的是爆炸過程的第ftps屏
    bool  bdead;
};
class MAP
{
public:
	int x,y;
	int height,width;
};

LPDIRECTDRAW              lpdd=NULL;
LPDIRECTDRAWSURFACE       lpddsprimary=NULL;
LPDIRECTDRAWSURFACE       lpddsback=NULL;
LPDIRECTDRAWSURFACE       lpddsbackground=NULL;
LPDIRECTDRAWSURFACE       lpddsmap=NULL;
LPDIRECTDRAWSURFACE       lpddsflame=NULL;
LPDIRECTDRAWSURFACE       lpddstree[3];
LPDIRECTDRAWSURFACE       lpddsplane[4];
LPDIRECTDRAWSURFACE       lpddsenemy[4];
LPDIRECTDRAWSURFACE       lpddsfire[4];
LPDIRECTSOUND			  lpds=NULL;
LPDIRECTSOUNDBUFFER		  lpdsbprimary=NULL;
LPDIRECTSOUNDBUFFER		  lpdsbshot=NULL;
LPDIRECTINPUT			  lpdi=NULL;
LPDIRECTINPUTDEVICE		  lpKeybord=NULL;

unsigned int     active;//窗口是否激活
int       gamestatus=GameLogo;//游戲的進(jìn)度
int       gamerank=0;//游戲等級
int       supertime=0;//飛機(jī)無敵的時間數(shù);
HWND      hWnd=NULL;
PLANE     A11;
ENEMY     Aenemy[cenemy];
FLAME     Aflame[cenemy];
FIRE      Afire[cenemy];
TREE      Atree[ctree];     
MAP       Amap;
DWORD     thistickcount;
DWORD     lasttickcount;
char	  apppath[50];		//應(yīng)用程序路徑
char   	  openmidi[50];		//打開midi命令字符串
char	  closemidi[50];	//關(guān)閉midi命令字符串
char	  stopmidi[50];
int		  nsorce;

HRESULT   CALLBACK WinProc(HWND hwnd,UINT msg,WPARAM wParam,
						   LPARAM lParam);
HWND InitWin(HINSTANCE hInstance,int nCmdShow);
void GetRect(RECT *rect,long x,long y,long height,long width);
void FreeObject(void);
void InitData(void);//初始化數(shù)據(jù)
bool InitDraw(void);//初始化directdraw接口
bool InitSound(void);
bool InitInput(HWND);
HRESULT UpdataInputData(void);
void InitPass(void);//處理過關(guān)后的數(shù)據(jù)變換
bool DrawMap(void);
bool DrawPlane(void);
bool DrawEnemy(void);
bool DrawFire(void);
bool DrawFlame(void);
bool DrawInfoText(void);
void DrawText(void);
void GetInput(void);
void EnemyAI(void);//處理控制敵機(jī)發(fā)彈、飛行、躲避的動作
bool Hit(RECT drect,RECT srect);
void Checkhit(void);
void DataPro(void);//處理飛機(jī)、子彈發(fā)彈、飛行、躲避動作后數(shù)據(jù)處理
void PlaySound(void);
void UpFlame(void);
void Flip(void);
void ClrScr(void);//清屏;

void FreeObject(void)
{
    if (lpdi!=NULL) 
    { 
        if(lpKeybord) 
        { 
            lpKeybord->Unacquire(); 
            lpKeybord->Release();
            lpKeybord = NULL; 
        }
        lpdi->Release();
        lpdi = NULL;
	}

	if(lpds!=NULL)
	{
		if(lpdsbprimary!=NULL)
		{
			lpdsbprimary->Release();
			lpdsbprimary=NULL;
		}
		if(lpdsbshot!=NULL)
		{
			lpdsbshot->Release();
			lpdsbshot=NULL;
		}
	}
	if(lpdd!=NULL)
	{
		if(lpddsprimary!=NULL)
		{
			lpddsprimary->Release();
       		lpddsprimary=NULL;
		}
		if(lpddsback!=NULL)
		{
			lpddsback->Release();
			lpddsback=NULL;
		}
		if(lpddsbackground!=NULL)
		{
			lpddsbackground->Release();
			lpddsbackground=NULL;
		}
		if(lpddsmap!=NULL)
		{
			lpddsmap->Release();
			lpddsmap=NULL;
		}
		if(lpddsflame!=NULL)
		{
			lpddsflame->Release();
			lpddsflame=NULL;
		}
		for(int i=0;i<3;i++)
			if(lpddstree[i]!=NULL)
			{
				lpddstree[i]->Release();
				lpddstree[i]=NULL;
			}
        for( i=0;i<4;i++)
			if(lpddsplane[i]!=NULL)
			{
				lpddsplane[i]->Release();
				lpddsplane[i]=NULL;
			}
        for( i=0;i<4;i++)
			if(lpddsenemy[i]!=NULL)
			{
				lpddsenemy[i]->Release();
				lpddsenemy[i]=NULL;
			}
        for( i=0;i<4;i++)
		    if(lpddsfire[i]!=NULL)
			{
			    lpddsfire[i]->Release();
				lpddsfire[i]=NULL;
			}
		lpdd->Release();
		lpdd=NULL;
	}
}
//***********************************************
//初始化窗口類和創(chuàng)建窗口并返回hwnd,付給hWnd全局變量。
//***********************************************
HWND InitWin(HINSTANCE hInstance,int nCmdShow)
{
	HWND            hwnd;
	WNDCLASS        wc;
	HDC				hdc;

	wc.style=CS_HREDRAW | CS_VREDRAW ; 
	wc.lpfnWndProc=WinProc;
	wc.cbClsExtra=0;
	wc.cbWndExtra=0;
	wc.hInstance=hInstance;
	wc.hIcon=LoadIcon(NULL,"icon");
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
	wc.lpszMenuName=0;
	wc.lpszClassName=name;

	if(FAILED(RegisterClass(&wc)))
	{
		MessageBox(NULL,"failed in register",NULL,NULL);
		return 0;
	}

    
	hwnd=CreateWindow(name,title,WS_OVERLAPPEDWINDOW,0,0,
		                CW_USEDEFAULT,
						CW_USEDEFAULT,
						NULL,NULL,hInstance,NULL);
	if(!hwnd)
	{
		MessageBox(hwnd,"failed in hwnd","HWND",NULL);
		return FALSE;
	}
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	SetFocus(hwnd);
	hdc=GetDC(hwnd);
	SetTextColor(hdc, RGB(250,250,250));
	SetBkMode(hdc, TRANSPARENT);
	TextOut(hdc,250,200,"Loading...",10);
	return hwnd;
}
//------------------------------------------------
//初始化directsound。
//-------------------------------------------------
bool InitSound(void)
{
	HRESULT			hr;
	DSBUFFERDESC	dsbdesc;
	WAVEFORMATEX	wfm;

	if(FAILED(DirectSoundCreate(NULL,&lpds,NULL)))
	{
		OutputDebugString("failed in create directsound");
		return FALSE;
	}

	if(FAILED(lpds->SetCooperativeLevel(hWnd,DSSCL_PRIORITY)))
	{
		OutputDebugString("failed in setcoolevel");
	}

	memset(&dsbdesc,0,sizeof(DSBUFFERDESC));

	dsbdesc.dwSize=sizeof(DSBUFFERDESC);
	dsbdesc.dwFlags=DSBCAPS_PRIMARYBUFFER;
	dsbdesc.dwBufferBytes=0;
	dsbdesc.lpwfxFormat=NULL;

    ZeroMemory( &wfm, sizeof(WAVEFORMATEX) ); 
    wfm.wFormatTag      = WAVE_FORMAT_PCM; 
    wfm.nChannels       = 2; 
    wfm.nSamplesPerSec  = 22050; 
    wfm.wBitsPerSample  = 16; 
    wfm.nBlockAlign     = wfm.wBitsPerSample / 8 * wfm.nChannels;
    wfm.nAvgBytesPerSec = wfm.nSamplesPerSec * wfm.nBlockAlign;
	hr=lpds->CreateSoundBuffer(&dsbdesc,&lpdsbprimary,NULL);

	if(SUCCEEDED(hr))
	{
		hr=lpdsbprimary->SetFormat(&wfm);
	}
	else
	{
        OutputDebugString("failed in create primary bufefer\n");
	} 

	lpdsbshot=DSLoadSoundBuffer(lpds,"SHOT");

	if(lpdsbshot==NULL)
	{
		OutputDebugString("failed in create shot buffer\n");
		
		return FALSE;
	}

	return	TRUE;
}
//*****************************************************
//播放聲音
//*****************************************************
void PlaySound(void)
{
	if(lpdsbshot==NULL)return;

	lpdsbshot->SetCurrentPosition(0);

	if(FAILED(lpdsbshot->Play(0,0,0)))
	{
		OutputDebugString("failed in play");

	}
	
	return;
}
//*************************************************
//初始化directinput
//*************************************************
bool InitInput(HWND hwnd)
{
	HRESULT		hr;

	hr=DirectInputCreate((HINSTANCE)GetWindowLong( hwnd, GWL_HINSTANCE ),
		                 DIRECTINPUT_VERSION,
						 &lpdi,NULL);
	if(FAILED(hr))
	{
		OutputDebugString("failed in create dinput");
		return false;
	}

	hr=lpdi->CreateDevice(GUID_SysKeyboard,&lpKeybord,NULL);

	if(FAILED(hr))
	{
		OutputDebugString("failed in create diput device");
		return false;
	}

	hr=lpKeybord->SetDataFormat(&c_dfDIKeyboard);
	if(FAILED(hr))
	{
		OutputDebugString("failed in setformat");
		return false;
	}

	hr=lpKeybord->SetCooperativeLevel(hwnd,DISCL_NONEXCLUSIVE|
		                                   DISCL_FOREGROUND);
	if(FAILED(hr))
	{
		OutputDebugString("failed in set co level");
		return false;
	}

	DIPROPDWORD		property;

	property.diph.dwSize=sizeof(DIPROPDWORD);
	property.diph.dwHeaderSize=sizeof(DIPROPHEADER);
	property.diph.dwHow=DIPH_DEVICE;
	property.diph.dwObj=0;
	property.dwData=DINPUT_BUFFERSIZE;

	hr=lpKeybord->SetProperty(DIPROP_BUFFERSIZE,&property.diph);
    if(FAILED(hr))
	{
		OutputDebugString("failed in set property ");
		return false;
	}

	hr=lpKeybord->Acquire();
    if(FAILED(hr))
	{
		OutputDebugString("failed acquire the keyborad");
		return false;
	}
	
	return true;
}

//*************************************************
//緩沖數(shù)據(jù)判斷
//*************************************************
HRESULT UpdataInputData(void)
{
	DWORD i;
	DIDEVICEOBJECTDATA	didod[DINPUT_BUFFERSIZE];
	DWORD				dwElements;
	HRESULT				hr;

	if(lpKeybord!=NULL)
	{
		hr=DIERR_INPUTLOST;

		while(hr!=DI_OK)
		{
			dwElements=DINPUT_BUFFERSIZE;
			hr=lpKeybord->GetDeviceData(sizeof(DIDEVICEOBJECTDATA),
				                        didod,
										&dwElements,
										0);

			if(hr!=DI_OK)
			{
				hr=lpKeybord->Acquire();
				if(FAILED(hr))
				{
					OutputDebugString("failed buffer data acquire");
					return hr;
				}
			}
		}

		if(FAILED(hr))
		{
			OutputDebugString("failed buffer data acquire again");
			return hr;
		}	
    
	   for(i=0; i<dwElements; i++)
	   {
			if((int)didod[i].dwOfs==DIK_UP&&(didod[i].dwData&0x80))
			{
				A11.direct=Aup;
			}
	
			if((int)didod[i].dwOfs==DIK_RIGHT&&(didod[i].dwData&0x80))
			{
				A11.direct=Aright;
			}
			
			if((int)didod[i].dwOfs==DIK_DOWN&&(didod[i].dwData&0x80))
			{
				A11.direct=Adown;
			}
			
			if((int)didod[i].dwOfs==DIK_LEFT&&(didod[i].dwData&0x80))
			{
				A11.direct=Aleft;
			}
			
			if((int)didod[i].dwOfs==DIK_SPACE&&(didod[i].dwData&0x80))
			{
				if(A11.bfire)return S_OK;
				A11.bfire=TRUE;
				while(!Afire[i].bdead){i++;}
				if(i<cenemy)
				{
					Afire[i].bdead=FALSE;
					Afire[i].direct=A11.direct;
					Afire[i].type=Fplane;
					Afire[i].x=A11.x+2*A11.width/6;
					Afire[i].y=A11.y+2*A11.height/6;
				}
			}
		}
	}
    return S_OK;
}
//*************************************************
//初始化directx變量。并且傳遞全局變量hWnd給initdraw
//*************************************************
bool InitDraw(void)
{
	DDSURFACEDESC         ddsd;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人日日夜夜| 国产精品国产精品国产专区不蜜| 欧美日韩视频专区在线播放| 精品久久一二三区| 国产欧美一区二区三区在线看蜜臀| 亚洲欧洲99久久| 蜜臀久久99精品久久久久久9| 成人午夜av在线| 欧美群妇大交群的观看方式| 久久精品夜色噜噜亚洲aⅴ| 一区二区三区在线免费| 国内欧美视频一区二区| 91麻豆.com| 久久久亚洲国产美女国产盗摄| 亚洲综合免费观看高清完整版在线| 激情五月婷婷综合网| 国产亚洲成年网址在线观看| 波多野洁衣一区| 国产午夜三级一区二区三| 成人亚洲一区二区一| 亚洲色欲色欲www| 成人免费av资源| 亚洲自拍偷拍网站| 欧美成人a视频| 成人国产精品免费观看动漫| 国产亚洲欧美色| 一本大道久久a久久精品综合| 精品国产乱码久久久久久牛牛| 亚洲韩国精品一区| 一本一道综合狠狠老| 青草国产精品久久久久久| 欧美午夜电影在线播放| 亚洲欧美一区二区三区极速播放| 成人av电影在线| 午夜亚洲福利老司机| 欧美网站一区二区| 国内精品免费**视频| 亚洲精品综合在线| 色综合久久66| 久草中文综合在线| 久久网这里都是精品| 国产一区二区三区日韩| 欧美tk—视频vk| 91久久精品一区二区| 亚洲午夜日本在线观看| 久久综合久久综合亚洲| 欧美亚洲国产一卡| 国产福利91精品一区二区三区| 一卡二卡三卡日韩欧美| 国产亚洲va综合人人澡精品| 欧美日韩国产一级片| 成人午夜看片网址| 另类小说综合欧美亚洲| 久久久www成人免费无遮挡大片| 欧美性猛交xxxx乱大交退制版 | 欧美视频在线播放| 成人少妇影院yyyy| 麻豆传媒一区二区三区| 又紧又大又爽精品一区二区| 欧美韩日一区二区三区四区| 粉嫩绯色av一区二区在线观看| 国产精品国产三级国产aⅴ入口 | 亚洲影视在线播放| 欧美激情中文不卡| 欧美一区二区视频在线观看| 久久不见久久见免费视频1| 亚洲电影你懂得| 精品久久久久久无| 欧美精品少妇一区二区三区| 久久精品av麻豆的观看方式| 亚洲成人三级小说| 一区二区三区在线播放| 18成人在线观看| 欧美国产综合一区二区| 国产视频一区二区在线| 久久这里只精品最新地址| 欧美一级高清大全免费观看| 国产乱一区二区| 亚洲精品国产精品乱码不99| 国产精品白丝在线| 国产精品成人网| 中文字幕在线一区二区三区| 欧美国产精品劲爆| 国产视频一区二区在线观看| 久久久国产午夜精品| 久久久午夜电影| 国产日韩欧美a| 亚洲国产精品激情在线观看| 欧美激情一区二区三区蜜桃视频| 国产欧美精品区一区二区三区 | 亚洲天堂成人网| 国产片一区二区| 国产精品久久久久久久久免费樱桃| 久久久精品免费观看| 欧美国产精品中文字幕| 国产精品乱人伦| 日韩一区二区三区av| 日韩欧美第一区| 欧美日韩一级二级三级| 欧美日本韩国一区二区三区视频| 欧美精品丝袜中出| 精品伦理精品一区| 国产精品免费观看视频| 亚洲日韩欧美一区二区在线| 一区二区欧美视频| 日本午夜精品视频在线观看| 一区二区三区久久久| 五月激情综合网| 韩国成人在线视频| 成人av电影在线观看| 欧美性猛交xxxx乱大交退制版 | 亚洲福利视频一区| 男男gaygay亚洲| 国产成人亚洲综合a∨婷婷| 99久久精品国产导航| 国产黄人亚洲片| 色老头久久综合| 日韩精品一区在线观看| 国产精品你懂的在线| 亚洲图片欧美综合| 国产综合久久久久久久久久久久| 成人手机在线视频| 宅男在线国产精品| 这里只有精品视频在线观看| 国产午夜一区二区三区| 亚洲成人一区二区在线观看| 国产一区二区三区四区五区入口 | 精品国产青草久久久久福利| 国产精品久久久久久久久果冻传媒| 性做久久久久久久免费看| 国产精品亚洲一区二区三区在线| 在线看国产一区二区| 色婷婷久久久久swag精品| 日韩欧美一二三| 一区二区三区在线免费视频| 激情综合色丁香一区二区| 91黄色免费看| 久久九九全国免费| 午夜不卡在线视频| 色婷婷综合久久久中文字幕| 亚洲精品在线观| 日韩电影网1区2区| 一本大道久久精品懂色aⅴ| 久久久激情视频| 毛片av一区二区三区| 91国内精品野花午夜精品| 国产亚洲制服色| 蜜臀久久99精品久久久久久9 | 日韩国产高清影视| 91丨九色丨国产丨porny| 国产三级欧美三级| 麻豆专区一区二区三区四区五区| 欧美亚洲综合久久| 日韩理论片网站| 国产xxx精品视频大全| 精品国产sm最大网站| 欧美aaa在线| 欧美二区在线观看| 亚洲影视资源网| 色综合色综合色综合| 国产精品成人一区二区艾草 | 免费在线观看成人| 精品污污网站免费看| 亚洲激情网站免费观看| 99久久99久久精品国产片果冻| 国产午夜精品理论片a级大结局 | 麻豆国产91在线播放| 91精品欧美综合在线观看最新| 亚洲最新视频在线观看| 91看片淫黄大片一级| 亚洲日本一区二区| 91蜜桃视频在线| 亚洲精品视频在线观看网站| 色综合视频一区二区三区高清| 亚洲欧美一区二区三区国产精品| 成人av电影观看| 亚洲欧美aⅴ...| 91福利精品视频| 亚洲宅男天堂在线观看无病毒| 91官网在线观看| 性久久久久久久| 欧美精品在线观看播放| 免费成人av资源网| 精品国产91九色蝌蚪| 国产成人亚洲综合a∨猫咪| 国产精品―色哟哟| 色综合色狠狠天天综合色| 亚洲国产精品麻豆| 日韩午夜激情视频| 国产一区二区三区综合| 国产精品丝袜一区| 一本色道**综合亚洲精品蜜桃冫| 亚洲一区在线看| 日韩免费高清视频| 国产不卡视频在线播放| 亚洲激情av在线| 日韩视频免费直播| 成人午夜免费av| 亚洲午夜国产一区99re久久| 日韩视频免费直播|