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

📄 new.cpp

📁 c++写的游戏
💻 CPP
字号:
#include "StdAfx.h"
#include "man.h"

/*#include "manDoc.h"*/
#include "new.h"

UINT Buffle::m_wDeviceID=0;

Player::Player()
{
	player_x=163;
	player_y=368;
	inertia=COMMON;
	grade=0;
	assist_grade=0;
	life_left=12;
	process=0;
	direct=MID;
	state=SAFE;
	assist=0;
	num_image=4;
	keepred=5;
}
void Player::setAssist(int a)
{
	assist=a;
}

int Player::getAssist()
{
	return assist;
}

int Player::getImage_num()
{
	return num_image;
}


bool Player::decre_kpred()
{
	keepred--;
	if(keepred<0)
	{
		keepred=5;
		return false;
	}
	return true;
}



int Player::get_x()
{
	return player_x;
}
int Player::get_y()
{
	return player_y;
}
void Player::change_assist(int gra)
{
	assist_grade+=gra;
	if(assist_grade>8)
	{
		assist_grade-=8;
		incre_grade();
	}
}
void Player::incre_grade( )
{
	grade++;
	if(grade==65536)
		grade=65535;
}
void Player::set_inertia(int inertia)
{
	if(inertia<0)
		inertia=0;
	this->inertia=inertia;
}
void Player::decre_life()
{
	life_left-=4;
	if(life_left<0)
		life_left=0;
}
void Player::incre_life()
{
	life_left++;
	if(life_left>12)
		life_left=12;
}
void Player::decre_inertia()
{
	inertia--;
	if(inertia<0)
		inertia=0;
}
int Player::getDirect()
{
	return direct;
}
int Player::getGrade()
{
	return grade;
}
int Player::getLife_left()
{
	return life_left;
}
int Player::getProcess()
{
	return process;
}
int Player::getState()
{
	return state;
}
bool Player::IsInertia_left()
{
	return inertia>0;
}
bool Player::IsLife_left()
{
	return life_left>0;
}
void Player::mov_x(int x)
{
	player_x+=x;
	if(player_x<40)
		player_x=40;
	if(player_x>392)
		player_x=392;
}
void Player::mov_y(int y)
{
	player_y-=y;
	if(player_y<66)
		player_y=66;
	if(player_y>418)
		player_y=418;
}
void Player::setDirect(int dir)
{
	direct=dir;
}
void Player::setProcess(int pro)
{
	this->process=pro;
}
void Player::setState(int sta)
{
	state=sta;
}
/*******************************************************/
/*********code for Buffle*******************/
/*******************************************************/

int Buffle::getDelay()
{
	return delay;
}

void Buffle::setDelay()
{
	delay=2;
}

void Buffle::decre_delay()
{
	delay--;
	if(delay<0)
		delay=0;
}
Buffle::Buffle(int x,int y,Player* plyr)
{
	buf_x=x;
	buf_y=y;
	image[0]=IDB_buffle;
	num_image=1;
	process=0;
	player=plyr;
	delay=2;
}
void Buffle::setProcess()
{
	process=num_image-1;
}
void Buffle::decreProcess()
{
	process--;
	if(process<0)
		process=0;
}
void Buffle::setImage(int num,int ima)
{
	if(num>=0&&num<num_image)
		image[num]=ima;
}
Player* Buffle::getPlayer()
{
	return player;
}
int Buffle::getProcess()
{
	return process;
}
int Buffle::get_x()
{
	return buf_x;
}
int Buffle::get_y()
{
	return buf_y;
}
void Buffle::setNum_image(int num)
{
	if(num>0&&num<=12)
	num_image=num;
}
int Buffle::getImage(int num)
{
	if(num>=0&&num<num_image)
		return image[num];
	else 
		return -1;
}
bool Buffle::isEqu_y(int y)
{
	return buf_y==y+32;
}
bool Buffle::isIn_x(int x)
{
	return buf_x<=x+30&&x<=buf_x+95;
}
void Buffle::mov_y(int y)
{
	buf_y-=y;
	if(buf_y<47)
		buf_y=47;
	if(buf_y>431)
		buf_y=431;
}
void Buffle::when_landing(int assit,HWND m_hWnd)
{
	if(player->getState()==FALLING)//是否刚着板 
	{
		player->set_inertia(COMMON);//恢复惯性系数
		player->setState(SAFE);	//设置安全状态
		player->incre_life();	//增加生命点
		player->change_assist(assit);//计算层数
		if(m_wDeviceID)
		{
			mciSendCommand(m_wDeviceID,MCI_CLOSE,1,NULL);
			m_wDeviceID=music(m_hWnd,"buffle.wav");
		}
		else
		{
			m_wDeviceID=music(m_hWnd,"buffle.wav");
		}
	}
}
UINT Buffle::music(HWND m_hWnd,char* sound)
{
	mciOpenParms.lpstrElementName=TEXT(sound);
	mciSendCommand(0,MCI_OPEN,MCI_WAIT|MCI_OPEN_ELEMENT,
	(DWORD)(LPMCI_OPEN_PARMS)&mciOpenParms);		
	UINT m_wDeviceID=mciOpenParms.wDeviceID;
	mciPlayParms.dwCallback=(DWORD)m_hWnd;
	mciPlayParms.dwFrom=0;
	mciPlayParms.dwTo=0;
    mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPMCI_OPEN_PARMS)&mciPlayParms);
	return m_wDeviceID;
}
/*************************************************/
Skate::Skate(int x,int y,Player* plyr):Buffle(x,y,plyr)
{
	setNum_image(12);
	setImage(0,IDB_skate);
	setImage(1,IDB_skate);
	setImage(2,IDB_skate3);
	setImage(3,IDB_skate3);
	setImage(4,IDB_skate5);
	setImage(5,IDB_skate5);

	setImage(6,IDB_skate4);
	setImage(7,IDB_skate4);
	setImage(8,IDB_skate2);
	setImage(9,IDB_skate2);
	setImage(10,IDB_skate1);
	setImage(11,IDB_skate1);
}
void Skate::when_landing(int assit,HWND m_hWnd)
{
	if(getPlayer()->getState()==FALLING)//刚着板
	{
		setProcess();//切换图
		getPlayer()->set_inertia(COMMON);
		getPlayer()->setState(SKATING);
		getPlayer()->incre_life();
		getPlayer()->change_assist(assit);
		if(m_wDeviceID)
		{
			mciSendCommand(m_wDeviceID,MCI_CLOSE,1,NULL);
			m_wDeviceID=music(m_hWnd,"skate.wav");
		}
		else
		{
			m_wDeviceID=music(m_hWnd,"skate.wav");
		}
	}
	getPlayer()->decre_inertia();//减少惯性
	if(getPlayer()->IsInertia_left()==0)//失去惯性
	{
		getPlayer()->mov_y(-1);//下滑
		getPlayer()->set_inertia(COMMON);//恢复惯性系数
	}
}
/****************************************************/
Spring::Spring(int x,int y,Player* plyr):Buffle(x,y,plyr)
{
	setNum_image(9);
	setImage(0,IDB_springboard);
	setImage(1,IDB_springboard);
	setImage(2,IDB_springboard);
	setImage(3,IDB_spring1);
	setImage(4,IDB_spring1);
	setImage(5,IDB_spring1);
	setImage(6,IDB_spring2);
	setImage(7,IDB_spring2);
	setImage(8,IDB_spring2);
}
int Spring::get_y()
{
	switch(getProcess()/3)
	{
	case 0:return Buffle::get_y();
	case 1:return Buffle::get_y()-4;
	case 2:return Buffle::get_y()+8;
	default:return Buffle::get_y();
	}
}
void Spring::when_landing(int assist,HWND m_hWnd)
{
	setProcess();//换图
	getPlayer()->set_inertia(COMMON);//恢复惯性系数
	getPlayer()->setState(BOUNCE);
	getPlayer()->incre_life();
	getPlayer()->change_assist(assist);	
	if(m_wDeviceID)
	{
		mciSendCommand(m_wDeviceID,MCI_CLOSE,1,NULL);
		m_wDeviceID=music(m_hWnd,"spring.wav");
	}
	else
	{
		m_wDeviceID=music(m_hWnd,"spring.wav");
	}
}
/*************************************************/
Nailboard::Nailboard(int x,int y,Player* plyr):Buffle(x,y,plyr)
{
	setNum_image(1);
	setImage(0,IDB_nailboard);
}
int Nailboard::get_y()
{
	return Buffle::get_y()-15;
}
void Nailboard::when_landing(int assist,HWND m_hWnd)
{
	if(getPlayer()->getState()==WOUND&&!getPlayer()->decre_kpred())//延迟后换状态
		getPlayer()->setState(SAFE);
	if(getPlayer()->getState()!=SAFE)//刚着板和一段延迟时间内
	{
		if(getPlayer()->getState()!=WOUND)//刚着板,减少生命点
		{
			getPlayer()->decre_life();
			if(m_wDeviceID)
			{
				mciSendCommand(m_wDeviceID,MCI_CLOSE,1,NULL);
				m_wDeviceID=music(m_hWnd,"nail.wav");
			}
			else
			{
				m_wDeviceID=music(m_hWnd,"nail.wav");
			}
			
		}
		getPlayer()->setState(WOUND);
	}
	getPlayer()->change_assist(assist);//计算层数
	getPlayer()->set_inertia(COMMON);//恢复惯性系数
}
/**************************************************************/
Roll_left::Roll_left(int x,int y,Player* plyr):Buffle(x,y,plyr)
{
	setNum_image(4);
	setImage(0,IDB_lroll1);
	setImage(1,IDB_lroll2);
	setImage(2,IDB_lroll3);
	setImage(3,IDB_lroll4);
	setProcess();
}
void Roll_left::when_landing(int assist,HWND m_hWnd)
{
	if(getPlayer()->getState()!=SAFE)//是否刚着板
	{
		getPlayer()->incre_life();//增加生命点
		if(m_wDeviceID)
		{
			mciSendCommand(m_wDeviceID,MCI_CLOSE,1,NULL);
			m_wDeviceID=music(m_hWnd,"roll.wav");
		}
		else
		{
			m_wDeviceID=music(m_hWnd,"roll.wav");
		}
	}
	getPlayer()->set_inertia(COMMON);
	getPlayer()->setState(SAFE);
	getPlayer()->change_assist(assist);
	getPlayer()->mov_x(-1);//左移player
}
void Roll_left::mov_y(int y)
{
	Buffle::mov_y(y);
	if(getProcess()==0)
	setProcess();
}
/**********************************************************/
Roll_right::Roll_right(int x,int y,Player* plyr):Buffle(x,y,plyr)
{
	setNum_image(4);
	setImage(0,IDB_rroll4);
	setImage(1,IDB_rrollb2);
	setImage(2,IDB_rroll1);
	setImage(3,IDB_rrollb3);
	setProcess();
}
void Roll_right::when_landing(int assist,HWND m_hWnd)
{
	if(getPlayer()->getState()!=SAFE)//是否刚着板
	{
		getPlayer()->incre_life();//增加生命点
		if(m_wDeviceID)
		{
			mciSendCommand(m_wDeviceID,MCI_CLOSE,1,NULL);
			m_wDeviceID=music(m_hWnd,"roll.wav");
		}
		else
		{
			m_wDeviceID=music(m_hWnd,"roll.wav");
		}
	}
	getPlayer()->set_inertia(COMMON);
	getPlayer()->setState(SAFE);
	getPlayer()->change_assist(assist);
	getPlayer()->mov_x(1);//右移player
}
void Roll_right::mov_y(int y)
{
	Buffle::mov_y(y);
	if(getProcess()==0)
	setProcess();
}

⌨️ 快捷键说明

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