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

📄 gamemain.cpp

📁 【概要】 名称:DK的《贪吃蛇》-附源代码 版本:1.0.0.0 运行环境:Win9X/Me/NT/2000/XP/2003/Vista 开发环境:WinXp+VC6 软件开发者:FanSi
💻 CPP
字号:
// GameMain.cpp: implementation of the GameMain class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GameMain.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

GameMain::GameMain()
{
	Start();
	m_State = LOGO_DOBJECT;

}

GameMain::~GameMain()
{

}

bool GameMain::UpData()
{
	if (m_State != MOVING_DOBJECT)
	{
		return false;
	}

	int i;
	
	///////////////////////////////////
	//移动
	m_Body[0].x+=m_ivx;
	m_Body[0].y+=m_ivy;

	for (i=m_iBodySize;i>0;--i)
	{
		m_Body[i]=m_Body[i-1];
	}

	////////////////////////////////
	//判断有没有吃到东西

	for (i=0;i<128;++i)
	{
		if (m_Food[i].x == -1)
		{
			continue;
		}

	if (m_Body[0].x+2<= (m_Food[i].x + 14)
		&&m_Food[i].x+2 <= (m_Body[0].x + 14)
		&&m_Body[0].y+2 <= (m_Food[i].y + 14)
		&&m_Food[i].y+2 <= (m_Body[0].y + 14))
	{
		m_Food[i].x =-1;
		m_iBodySize+=16;
	}

	}
	////////////////////////////////
	//判断,碰到非食物
	
	for (i=0;i<128;++i)
	{
		if (m_NoFood[i].x == -1)
		{
			continue;
		}
		
		if (m_Body[0].x+2<= (m_NoFood[i].x + 14)
			&&m_NoFood[i].x+2 <= (m_Body[0].x + 14)
			&&m_Body[0].y+2 <= (m_NoFood[i].y + 14)
			&&m_NoFood[i].y+2 <= (m_Body[0].y + 14))
		{
			m_State = DEATH_DOBJECT;
			PlaySound(MAKEINTRESOURCE(IDR_WAVE_ROLEDEATH),NULL,SND_RESOURCE|SND_ASYNC);
			return true;

		}
		
	}
	/////////////////////////////////
	//碰到自己的身体
	for (i=18;i<m_iBodySize;++i)
	{
		
		
		if (m_Body[0].x+2<= (m_Body[i].x + 14)
			&&m_Body[i].x+2 <= (m_Body[0].x + 14)
			&&m_Body[0].y+2 <= (m_Body[i].y + 14)
			&&m_Body[i].y+2 <= (m_Body[0].y + 14))
		{
			m_State = DEATH_DOBJECT;
			PlaySound(MAKEINTRESOURCE(IDR_WAVE_ROLEDEATH),NULL,SND_RESOURCE|SND_ASYNC);
			return true;

		}
		
	}
	////////////////////////////////////
	//碰到墙壁
	if (m_Body[0].x>400-16)m_Body[0].x=0;
	if (m_Body[0].x<0)m_Body[0].x=400-16;

	//--------------------------------------------
	if (m_Body[0].y>(400-32-16))
	{
		m_Body[0].y=0;
	}
	if (m_Body[0].y<0)
	{
		m_Body[0].y=(400-32-16);
	}
	////////////////////////////////////////////
	//食物刷新
	srand(GetTickCount());
	for (i=0;i<10;++i)
	{
		if (0 == rand()%500)
		{
		m_Food[i].x =rand()%400;
		m_Food[i].y =rand()%400;
		}
	}
	//--------------------------------------
	srand(GetTickCount()+30);
	for (i=0;i<10;++i)
	{
		if (0 == rand()%500)
		{
		m_NoFood[i].x =rand()%400;
		m_NoFood[i].y =rand()%400;
		}
	}


	return true;
}

bool GameMain::Start()
{

	m_State =MOVING_DOBJECT;
	
	memset(m_Body,-1,sizeof(m_Body));
	
	m_iBodySize = 64;//默认长度
	
	int i;
	
	////////////////////////////
	//初始化身体
	for (i=0;i<m_iBodySize;++i)
	{
		m_Body[i].y = 64;
		m_Body[i].x = 64+i*2;
	}
	
	////////////////////////////
	//默认速度
	m_ivx =0;
	m_ivy =2;
	
	///////////////////////////////////////
	//初始化食物
	for (i=0;i<128;++i)
	{
		m_Food[i].x = -1;
		m_Food[i].y = -1;
	}
	
	srand(GetTickCount());
	for (i=0;i<10;++i)
	{
		m_Food[i].x =rand()%400;
		m_Food[i].y =rand()%400;
	}
	/////////////////////////////////////////
	//初始化非食物
	for (i=0;i<128;++i)
	{
		m_NoFood[i].x = -1;
		m_NoFood[i].y = -1;
	}
	
	srand(GetTickCount()+30);
	for (i=0;i<10;++i)
	{
		m_NoFood[i].x =rand()%400;
		m_NoFood[i].y =rand()%400;
	}

	return true;
	

}

⌨️ 快捷键说明

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