📄 new.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 + -