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

📄 cracetrack.cpp

📁 Visual C++游戏开发技术与实例一书配套光盘。包含了冒险屠宰场、入侵者、赛车、网络五子棋、网络台球、对战坦克大战和面包圈7个游戏实例的完整源代码。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			{		

				if(iTmpX+ITEM_SIZE > iDestX+nWidth)
					iSizeX = ITEM_SIZE - ((iTmpX+ITEM_SIZE)-(iDestX+nWidth));
				else
					iSizeX = ITEM_SIZE;

				if(iTmpY+ITEM_SIZE > iDestY+nHeight)
					iSizeY = ITEM_SIZE - ((iTmpY+ITEM_SIZE)-(iDestY+nHeight));
				else
					iSizeY = ITEM_SIZE;

				// The Road type is the LOWORD portion of the DWORD array
				int iType = LOWORD(m_RoadMap.GetValue(iCol,iRow));
							
				if(iSizeX > 0 && iSizeY > 0)
				{
					// Based on the Road Type, draw the tile in the correct position
					switch(iType + ID_ROADTYPE_SRACEROADQ0 - 1)
					{
					case ID_ROADTYPE_DIAGONALQ0:
						m_surfDiagonalQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_DIAGONALQ1:
						m_surfDiagonalQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_DIAGONALQ2:
						m_surfDiagonalQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_DIAGONALQ3:
						m_surfDiagonalQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_MIDDIAGONALQ0:
						m_surfMidDiagonalQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MIDDIAGONALQ1:
						m_surfMidDiagonalQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MIDDIAGONALQ2:
						m_surfMidDiagonalQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MIDDIAGONALQ3:
						m_surfMidDiagonalQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_BLACKPOINTQ0:
						m_surfBlackPointQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_BLACKPOINTQ1:
						m_surfBlackPointQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_BLACKPOINTQ2:
						m_surfBlackPointQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_BLACKPOINTQ3:
						m_surfBlackPointQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_HZ_STARTDIAGONALQ0:
						m_surf_HZ_StartDiagonalQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_HZ_STARTDIAGONALQ1:
						m_surf_HZ_StartDiagonalQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_HZ_STARTDIAGONALQ2:
						m_surf_HZ_StartDiagonalQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_HZ_STARTDIAGONALQ3:
						m_surf_HZ_StartDiagonalQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_VR_STARTDIAGONALQ0:
						m_surf_VR_StartDiagonalQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_VR_STARTDIAGONALQ1:
						m_surf_VR_StartDiagonalQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_VR_STARTDIAGONALQ2:
						m_surf_VR_StartDiagonalQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_VR_STARTDIAGONALQ3:
						m_surf_VR_StartDiagonalQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_HZ_ENDDIAGONALQ0:
						m_surf_HZ_EndDiagonalQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_HZ_ENDDIAGONALQ1:
						m_surf_HZ_EndDiagonalQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_HZ_ENDDIAGONALQ2:
						m_surf_HZ_EndDiagonalQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_HZ_ENDDIAGONALQ3:
						m_surf_HZ_EndDiagonalQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_VR_ENDDIAGONALQ0:
						m_surf_VR_EndDiagonalQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_VR_ENDDIAGONALQ1:
						m_surf_VR_EndDiagonalQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_VR_ENDDIAGONALQ2:
						m_surf_VR_EndDiagonalQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_VR_ENDDIAGONALQ3:
						m_surf_VR_EndDiagonalQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_SRACEROADQ0:
						m_surfSRaceRoadQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_SRACEROADQ1:
			 			m_surfSRaceRoadQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_SRACEROADQ2:
						m_surfSRaceRoadQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_SRACEROADQ3:
						m_surfSRaceRoadQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ROADQ0:
						m_surfHalfRoadQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ROADQ1:
						m_surfHalfRoadQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ROADQ2:
						m_surfHalfRoadQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ROADQ3:
						m_surfHalfRoadQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_CURVEQ0:
						m_surfCurveQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_CURVEQ1:
						m_surfCurveQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_CURVEQ2:
						m_surfCurveQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_CURVEQ3:
						m_surfCurveQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDCURVEQ0:
						m_surfEndCurveQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDCURVEQ1:
						m_surfEndCurveQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDCURVEQ2:
						m_surfEndCurveQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDCURVEQ3:
						m_surfEndCurveQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ0:
						m_surfFullRoadQ0.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ1:
						m_surfFullRoadQ1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ2:
						m_surfFullRoadQ2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ3:
						m_surfFullRoadQ3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ4:
						m_surfFullRoadQ4.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ5:
						m_surfFullRoadQ5.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ6:
						m_surfFullRoadQ6.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_FULLROADQ7:
						m_surfFullRoadQ7.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ8:
						m_surfFullRoadQ8.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ9:
						m_surfFullRoadQ9.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ10:
						m_surfFullRoadQ10.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ11:
						m_surfFullRoadQ11.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ12:
						m_surfFullRoadQ12.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ13:
						m_surfFullRoadQ13.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ14:
						m_surfFullRoadQ14.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ15:
						m_surfFullRoadQ15.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ16:
						m_surfFullRoadQ16.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_FULLROADQ17:
						m_surfFullRoadQ17.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;

					case ID_ROADTYPE_MEDIUMCURVEQ0P1:
						m_surfMediumCurveQ0P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ0P2:
						m_surfMediumCurveQ0P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ0P3:
						m_surfMediumCurveQ0P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ1P1:
						m_surfMediumCurveQ1P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ1P2:
						m_surfMediumCurveQ1P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ1P3:
						m_surfMediumCurveQ1P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ2P1:
						m_surfMediumCurveQ2P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ2P2:
						m_surfMediumCurveQ2P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ2P3:
						m_surfMediumCurveQ2P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ3P1:
						m_surfMediumCurveQ3P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ3P2:
						m_surfMediumCurveQ3P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_MEDIUMCURVEQ3P3:
						m_surfMediumCurveQ3P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ0P1:
						m_surfEndMediumCurveQ0P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ0P2:
						m_surfEndMediumCurveQ0P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ0P3:
						m_surfEndMediumCurveQ0P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ1P1:
						m_surfEndMediumCurveQ1P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ1P2:
						m_surfEndMediumCurveQ1P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ1P3:
						m_surfEndMediumCurveQ1P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ2P1:
						m_surfEndMediumCurveQ2P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ2P2:
						m_surfEndMediumCurveQ2P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ2P3:
						m_surfEndMediumCurveQ2P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ3P1:
						m_surfEndMediumCurveQ3P1.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ3P2:
						m_surfEndMediumCurveQ3P2.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					case ID_ROADTYPE_ENDMEDIUMCURVEQ3P3:
						m_surfEndMediumCurveQ3P3.Draw(GetMainApp()->m_pBackBuffer,iTmpX, iTmpY, iRefX % ITEM_SIZE, iRefY % ITEM_SIZE, iSizeX-(iRefX % ITEM_SIZE), iSizeY-(iRefY % ITEM_SIZE) );
						break;
					}
				}
			}
			iTmpY += ITEM_SIZE - iRefY % ITEM_SIZE;
			iRefY = 0;
		}
		iTmpX += ITEM_SIZE - iRefX % ITEM_SIZE;
		iTmpY = iDestY;
		if(nX == -1)
		{
			iRefY = m_iViewY;
		}
		else
		{
			iRefY = nY;
		}
		iRefX = 0;
	}
}

void cRaceTrack::SetRoad(int iCol, int iRow, int iType)
{
	// Set something in the Road Map (just used for testing, we use track files);
	m_RoadMap.SetValue(iCol, iRow, MAKELONG(iType,0));
}

void cRaceTrack::RemoveHitRegion()
{
	//载入一组曲面,用来构建赛道地图,每个曲面代表一个道路贴片

	// 开始比赛的旗帜曲面
	m_surfSRaceRoadQ0.Create(40,40, RGB(255,255,255));
	m_surfSRaceRoadQ0.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_SRACEROADQ0, 0, 0, 40, 40);

	m_surfSRaceRoadQ1.Create(40,40, RGB(255,255,255));
	m_surfSRaceRoadQ1.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_SRACEROADQ1, 0, 0, 40, 40);

	m_surfSRaceRoadQ2.Create(40,40, RGB(255,255,255));
	m_surfSRaceRoadQ2.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_SRACEROADQ2, 0, 0, 40, 40);
	
	m_surfSRaceRoadQ3.Create(40,40, RGB(255,255,255));
	m_surfSRaceRoadQ3.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_SRACEROADQ3, 0, 0, 40, 40);

	// 一半赛道的曲面
	m_surfHalfRoadQ0.Create(40,40, RGB(255, 255, 255));
	m_surfHalfRoadQ0.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_ROADQ0, 0, 0, 40, 40);

	m_surfHalfRoadQ1.Create(40,40, RGB(255, 255, 255));
	m_surfHalfRoadQ1.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_ROADQ1, 0, 0, 40, 40);

	m_surfHalfRoadQ2.Create(40,40, RGB(255, 255, 255));
	m_surfHalfRoadQ2.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_ROADQ2, 0, 0, 40, 40);

	m_surfHalfRoadQ3.Create(40,40, RGB(255, 255, 255));
	m_surfHalfRoadQ3.LoadBitmap(GetMainApp()->m_hInst, ID_ROADTYPE_ROADQ3, 0, 0, 40, 40);

	m_surfFullRoadQ0.Create(40,40);

⌨️ 快捷键说明

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