1、定义状态机类型
enum PlayerState{
INVALID,
STAND,
MOVE,
ATTACK,
DIE
};void Player::Update(float ts){
switch(user_state_){
case STAND:
Stand(ts);
break;
case MOVE:
Move(ts);
break;
case ATTACK:
Attack(ts);
break;
case DIE:
Die();
return;
default:
std::cout<<"error\n";
}
if(hp_ <= 0){
SetState(DIE);
}
}3、切换状态,在切换状态的时候做一些事情void Player::SetState(PlayerState state){
if(state == user_state_){
return;
}
switch(state){
case STAND:
std::cout << "----begin stand--------\n";
break;
case MOVE:
std::cout << "----begin move--------\n";
break;
case ATTACK:
std::cout << "----begin attack--------\n";
break;
case DIE:
std::cout << "----begin die--------\n";
break;
default:
std::cout <<"the state is error";
break;
}
user_state_ = state;
}状态机面向对象类型:
面向对象类的状态机是一种更容易扩展的新型状态机,通过单间实现方式,使用更少的内存,先看下整个状态机的uml设计图。
原文地址:http://blog.csdn.net/hackmind/article/details/40370599