#include<iostream>
#include<vector>
#include<conio.h>
using namespace std;
//A A界面可以去往b和c
//B B界面返回A界面
//C c界面返回A界面
class ViewBase {
public:
virtual void checkKey(char key) = 0;
virtual void render() = 0;
};
class A :public ViewBase {
public:
void checkKey(char key);
void render();
};
class B :public ViewBase {
public:
void checkKey(char key);
void render();
};
class C :public ViewBase {
public:
void checkKey(char key);
void render();
};
bool isRunning = true;
bool isUpdateView = true;
ViewBase* curView = nullptr;
void A::checkKey(char key) {
if (key == 'b') {
curView = new B;
delete this;
isUpdateView = true;
}
if (key == 'c') {
curView = new C;
delete this;
isUpdateView = true;
}
}
void A::render() {
cout << "A界面" << endl;
}
void B::checkKey(char key) {
if (key == 'a') {
curView = new A;
delete this;
isUpdateView = true;
}
}
void B::render() {
cout << "B界面" << endl;
}
void C::checkKey(char key) {
if (key == 'a') {
curView = new A;
delete this;
isUpdateView = true;
}
}
void C::render() {
cout << "C界面" << endl;
}
int main() {
isRunning = true;
isUpdateView = true;
curView = new A;
while (isRunning)
{
//判断键盘是否按下,按下为非0
if (_kbhit()) {
char key = _getch();
curView->checkKey(key);
}
if (isUpdateView) {
system("cls");
curView->render();
isUpdateView = false;
}
}
return 0;
}