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

📄 cracecar.h

📁 Visual C++ 游戏开发与设计实例 源代码(所有)
💻 H
字号:
// RACE X
//
// Written by Mauricio Teichmann Ritter
//
// Copyright (C) 2002, Brazil. All rights reserved.
// 
//

#include ".\AppLib\cSprite.h"
#include ".\applib\chitchecker.h"
#include ".\applib\csound.h"

#include <vector>
#include <string>

using namespace std;

#if !defined(AFX_CRACECAR_H__599011FD_F0E9_4C8A_AAC5_ECA4A9FF481B__INCLUDED_)
#define AFX_CRACECAR_H__599011FD_F0E9_4C8A_AAC5_ECA4A9FF481B__INCLUDED_

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

#define		CTRL_COMPUTER		1
#define		CTRL_USER			2
#define		CTRL_NETWORK_REMOTE	3
#define		CTRL_NETWORK_LOCAL	4

#define     CARSTATE_OK				1
#define     CARSTATE_CRASHED_WALL	2
#define     CARSTATE_CRASHED_CAR	3
#define     CARSTATE_RACECOMPLETED	4

typedef vector<long> LONGVECTOR;

// cRaceCar定义了参加游戏的每辆赛车,这些赛车包括了颜色,id和选手名字属性
class cRaceCar
{
private:
	int iTurnCar;

	//定义赛车爆炸时间
	int iCrashTime;

	//到一个检查站的距离(用来定位)
	int m_iDistanceToNextCheckPoint;

	//赛车位置
	int m_iPosition;

	//声音缓冲
	cSound			m_pSound;
	cSound			m_pCrashSound;

	//存储每一圈用时的Vector
	LONGVECTOR	m_vcLapTimes;
	long		m_lCurrentTime;

	//这些是赛车发生碰撞时用到的备用变量
	//如果赛车在发生碰撞后要重置状态,则使用这些变量
	int m_fBackupIncrementX;
	int m_fBackupIncrementY;
	int m_fBackupDirectionY;
	int m_fBackupDirectionX;
	int m_iBackupAngle;
	float m_fBackupPosY;
	float m_fBackupPosX;
	int iBackupTurnCar;
	int m_iBackupDistanceToNextCheckPoint;

	//赛车当前状态
	int m_iCarState;

	void TurnCarRight();
	void TurnCarLeft();

	//定义赛车如何控制(电脑,人,还是网络)
	int m_iControlType;

	//定义如何增加X 和Y 位置
	int m_fIncrementX;
	int m_fIncrementY;

	//赛车当前速度
	int m_iSpeed;

	//赛车最高速度
	int m_iMaxSpeed;

	//赛车在赛道地图上的当前位置
	float m_fPosY;
	float m_fPosX;

	//上次赛车转向的时间
	long m_lLastTurn;

	//赛车上次加速时间
	long m_lLastSpeedIncr;

	// 标志X和Y的方向
	int m_fDirectionY;
	int m_fDirectionX;

	//多边形边界
	POINT	*m_pBound;

public:
	void MoveForward(int iSpeed);
	void Backup();

	DWORD m_dwElapseTime;
	void AddLapTime(DWORD dwTime);
	void SetSpeed(int iValue);
	BYTE m_bLastSent_Speed;
	BYTE m_bLastSent_Position;
	BYTE m_bLastSent_CarState;
	BYTE m_bLastSent_Laps;
	BYTE m_bLastSent_Angle;
	DWORD m_dwLastSent_LastLapTime;
	unsigned short m_nLastSent_PosX;
	unsigned short m_nLastSent_PosY;

	BYTE m_bRemoteKeyboardStatus;
	int m_iAngle;

	BYTE GetID();
	void SetID(BYTE iValue);

	BYTE m_bID;
	int GetCarColor();
	long GetLastLapTime();
	long GetLapElapseTime(int iLap = -1);
	int GetDistanceToNextCheckPoint();
	void SetPosition(int iPosition);
	int GetPosition();
	int m_iLaps;

	int m_iBackupSprite;
	void Crashed();
	int GetCarState();
	void SetCarState(int iState);
	void Idle();
	void HitCar();
	void BreakCar();
	void Accelerate();
	int GetControlType();
	void SetControlType(int iType);
	int GetSpeed();
	int m_iCheckPoint;
	int GetLastCheckPoint();
	void SetLastCheckPoint(int iLastCheckPoint);
	cHitChecker m_hcRaceCar;
	void GetPos(int* iX, int* iY);
	void Process(void* pTrack);
	void Destroy();
	void Create(int iColor);
	void Draw(int nViewX, int nViewY);

	void SetPos(int iX, int iY);
	cSprite m_sprCar;

	cSprite m_sprCarExplode_0;
	cSprite m_sprCarExplode_45;
	cSprite m_sprCarExplode_90;
	cSprite m_sprCarExplode_135;
	cSprite m_sprCarExplode_180;
	cSprite m_sprCarExplode_225;
	cSprite m_sprCarExplode_270;
	cSprite m_sprCarExplode_315;


	cRaceCar();
	virtual ~cRaceCar();

protected:
	int m_iColor;
	void RotateBound(int iAngle);
};

#endif // !defined(AFX_CRACECAR_H__599011FD_F0E9_4C8A_AAC5_ECA4A9FF481B__INCLUDED_)

⌨️ 快捷键说明

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