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

📄 control.cpp

📁 过程的c++编译器 里面有超级玛丽的源代码 还有一个 管理系统的源代码
💻 CPP
字号:
/*********************************************
程序设计:罗穆峰  2008-11-20
http://lmf.biaotian.com
E-mail: lmf@biaotian.com
QQ: 16324942 [模范英雄]
*********************************************/

#include "Control.h"

void CControl::Clock()
{
/*
	执行一次时序信号动作。
*/
	//使游戏动作一次
	m_pGame->Clock();
	//刷新图像显示
	m_pGraphMan->Update();
}

void CControl::SetGraph(CGraphMan *Graph)
{
/*
	设置图像处理对象。
	参数:
		[i]Game		将要受CControl控制的CGraphMan对象。
*/
	m_pGraphMan=Graph;
}

void CControl::KeyChanged(int KeyState)
{
/*
	按键状态发生改变。
	参数:
		[i]KeyState	按钮状态,是一个位段值。相应的位值为1,表式该键是按下状态,为0表示该键是弹起状态。
					从最低位开始,各位依次表示如下按键:上方向、下方向、左方向、右方向、跳跃键、发射键、开始键。
*/
	if(!(m_LastKeyState&(1<<6))&&(KeyState&(1<<6)))
	{//上次没按下开始键,这次按下了,则开始游戏
		m_pGame->Start();
	}

	if(!(KeyState&0xf)&&(m_LastKeyState&0xf))
	{//上次有方向键被按下,这次没有,则停止移动
		m_pGame->Move(0,false);
	}
	else
	{
		bool Acc=(KeyState&(1<<5))!=0;//按了发射键,则加速移动
		bool AccChanged=(KeyState&(1<<5))!=(m_LastKeyState&(1<<5));//加速键的状态和上次不同,则表示加速状态有改变
		if((KeyState&(1<<0))&&(!(m_LastKeyState&(1<<0))||AccChanged))
		{//这次按下了向上键,而上次没按下或者加速状态改变,则向上移动
			m_pGame->Move(1,Acc);
		}
		else if((KeyState&(1<<1))&&(!(m_LastKeyState&(1<<1))||AccChanged))
		{//这次按下了向下键,而上次没按下或者加速状态改变,则向下移动
			m_pGame->Move(2,Acc);
		}
		else if((KeyState&(1<<2))&&(!(m_LastKeyState&(1<<2))||AccChanged))
		{//这次按下了向左键,而上次没按下或者加速状态改变,则向左移动
			m_pGame->Move(3,Acc);
		}
		else if((KeyState&(1<<3))&&(!(m_LastKeyState&(1<<3))||AccChanged))
		{//这次按下了向右键,而上次没按下或者加速状态改变,则向右移动
			m_pGame->Move(4,Acc);
		}
	}

	if(!(m_LastKeyState&(1<<4))&&(KeyState&(1<<4)))
	{//上次没按下跳跃键,这次按下了,则跳跃一次
		m_pGame->Jump();
	}

	if(!(m_LastKeyState&(1<<5))&&(KeyState&(1<<5)))
	{//上次没按下发射键,这次按下了,则发射一次
		m_pGame->Fire();
	}

	m_LastKeyState=KeyState;
}

void CControl::SetGame(CGame *Game)
{
/*
	设置游戏对象。
	参数:
		[i]Game		将要受CControl控制的CGame对象。
*/
	m_pGame=Game;
}

CControl::CControl()
{
	m_LastKeyState=0;//最开始时没有任何键按下
}

⌨️ 快捷键说明

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