⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 game.h

📁 C++台球游戏代码
💻 H
字号:
#if !defined(AFX_GAME_H__687221F3_ACFF_4D66_97DB_88AB70E0CA59__INCLUDED_)
#define AFX_GAME_H__687221F3_ACFF_4D66_97DB_88AB70E0CA59__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Base.h"

#include "Font.h"
#include "Sphere.h"
#include "Table.h"
#include "Cue.h"
#include "Audio.h"

/*
#define PEDOMETER 10
//DIRECTION_SEGMENTS= 360 / PEDOMETER
#define DIRECTION_SEGMENTS 
*/


class CGame:public CBase
{
public:
	BOOL Initialize(HWND hwnd,UINT nWidth,UINT nHeight,HINSTANCE hInstance);
	void GameLoop();
	LPDIRECT3DDEVICE8 GetDevice();
	CGame();
	virtual ~CGame();
private:
	BOOL InitializeD3D(HWND hwnd,UINT nWidth,UINT nHeight);
	BOOL InitializeLights();
	BOOL InitializeGame();
	BOOL InitializeDirectInput(HWND hwnd,HINSTANCE hInstance);
	BOOL InitializeDirectAudio(HWND hwnd);
	void CleanUpDirectInput();
	void CleanUpDirect3D();
	void CleanUpGame();
	void CleanUpDirectAudio();
	void ProcessMouse();
	void ProcessKeyboard();
	void InitilizeSpheresPosition();

	D3DFORMAT CheckDisplayMode(UINT nWidth,UINT nHight,UINT nDepth);
	void Render3D();
	void Render();
	void Setup3DCamera();
	void RenderText();

	LPDIRECT3D8 m_pD3D;
	LPDIRECT3DDEVICE8 m_pD3DDevice;
	LPDIRECTINPUT8 m_pDirectInput;
	LPDIRECTINPUTDEVICE8 m_pKeyboard;
	LPDIRECTINPUTDEVICE8 m_pMouse;

	IDirectMusicPerformance8* m_pDirectAudioPerformance;
	IDirectMusicLoader8 *m_pDirectAudioLoader;

	DWORD m_dwFrames;
	DWORD m_dwFPS;
	DWORD m_dwPedotime;
	DWORD m_dwCountFrames;
    DWORD m_dwStartTime;
	DWORD m_dwEndTime;
	
	DWORD m_dwNewTime;
	DWORD m_dwOldTime;
	
	DWORD m_dwTotalPolygons;
	int m_iScreenWidth;
	int m_iScreenHeight;

	int m_iMouseX;
	int m_iMouseY;
	bool m_bQuit;

	//****************For Sound****************
	//*****************************************
	CAudio *m_pSoundHitCue0;
    CAudio *m_pSoundHitCue1;
    CAudio *m_pSoundHitBar;
    CAudio *m_pSoundBimpacting0;
    CAudio *m_pSoundBimpacting1;
    CAudio *m_pSoundFallInHole;
	bool m_bSoundCardState;
	//*****************************************
	//*****************************************

	//*****************************************
	//***************For Camera****************
	D3DXVECTOR3 m_vecCameraPosition;
	D3DXVECTOR3 m_vecSavedCameraPosition;
	D3DXVECTOR3 m_vecSavedLookAtPosition;
	int m_iMouseStateX,m_iMouseStateY;
	//*****************************************
	//*****************************************
	
	float m_fSysEnergy;
	D3DXVECTOR3 m_vecCuePosition;
	D3DXVECTOR3 m_vecCueDir;
	bool m_bCtrl;
	int m_iMoveCue;
	float m_fScale;
	float m_fScaleTemp;
	bool m_bSendBall;
	int m_iMouseRight;
    float m_fCueVelocity;
	bool m_bPlanform;

	CFont *m_pFont;
	CSphere *m_pSphere[SUMBALL];
	CTable *m_pTableMesh;
	CCue *m_pCue;

	//All for collision between TableBar and Sphere.
	//***************************************************
	LPD3DXMESH m_pMesh;
	D3DXVECTOR3 m_vecRayPos;
	D3DXVECTOR3 m_vecRayPos2;

	D3DXVECTOR3 m_vecRayDir[9];
	//BOOL <> bool !!! bool is an integral type. BOOL should be TRUE or FALSE.
	BOOL m_bHitBar;
    float m_fDistance;

	void SphereHitBarProcess(int NumOfSphere);
	void SphereHitSphereProcess(int NumOfSphere);
	void SphereFallInHoleProcess(int NumOfSphere);
	void CollisionResponseBetweenSphere(int i,int j);

	BOOL CheckWhiteBallInAvailableArea();
	//***************************************************
};

#endif // !defined(AFX_GAME_H__687221F3_ACFF_4D66_97DB_88AB70E0CA59__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -