資源簡介
C++ 二叉樹 動物 猜想 游戲
代碼片段和文件信息
#include?
#include?
using?namespace?std;
class?State;
class?Node?{
public:
????Node(State?*s)?:?state(s)?{}
????void?process();
????State?*state;
};
class?State?{
public:
????virtual?void?process(Node?*node)?=?0;
????virtual?~State()?{}?//?Designed?for?inheritance
};
class?QuestionState??:?public?State?{
public:
????QuestionState(string?ques?Node?*yes?Node?*no);
????virtual?void?process(Node?*node);
protected:
????string?question;
????Node?*yesNode;?//?No?need?for?smart?ptrs?here
????Node?*noNode;??//?But?only?in?this?particular?case
};
class?AnswerState?:?public?State?{
public:
????AnswerState(string?a)?:?animal(a)?{}
????virtual?void?process(Node?*node);
protected:
????string?animal;
};
void
Node::process()
{
????state->process(this);
}
QuestionState::QuestionState(string?q?Node?*y?Node?*n)
??:?question(q)?yesNode(y)?noNode(n)?{}
void
QuestionState::process(Node?*node)
{
????string?answer;
????cout?<????getline(cin?answer);
????if(answer?==?“yes“)?{
????????yesNode->process();
????}?else?{
????????noNode->process()
評論
共有 條評論