切换或其他什么
Switch or something else
我正在制作一些关于Janitors的游戏应用程序。它还处于早期阶段,到目前为止我对此感到自豪,但随着时间的推移,我的代码变得非常混乱,所以我决定过来寻求任何帮助,以另一种方式解决/重新制作/实现这个代码,而不需要太多的案例。我正在考虑实现一些设计模式,但我不确定是哪一个。感谢您的帮助。
bool JanitorApp::key(unsigned char key)
{
if (MainApp::key(key)) return true;
switch(key) {
case 'Q': case 'q':
current[0] = NULL;
status[0] = "Stationary";
return true;
case 'W': case 'w':
current[0] = &cleans[0];
status[0] = "Cleaning";
return true;
case 'E': case 'e':
current[0] = &eats[0];
status[0] = "Eating";
return true;
case 'R': case 'r':
current[0] = &guards[0];
status[0] = "Guarding";
return true;
case 'A': case 'a':
current[1] = NULL;
status[1] = "Stationary";
return true;
case 'S': case 's':
current[1] = &cleans[1];
status[1] = "Cleaning";
return true;
case 'D': case 'd':
current[1] = &eats[1];
status[1] = "Eating";
return true;
case 'F': case 'f':
current[1] = &guards[1];
status[1] = "Guarding";
return true;
case 'Z': case 'z':
current[2] = NULL;
status[2] = "Stationary";
return true;
case 'X': case 'x':
current[2] = &cleans[2];
status[2] = "Cleaning";
return true;
case 'C': case 'c':
current[2] = &eats[2];
status[2] = "Eating";
return true;
case 'V': case 'v':
current[2] = &guards[2];
status[2] = "Guarding";
return true;
}
return false;}
您可以从命令模式开始。用多态性替换条件重构可能也很有趣。
相关文章:
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 这个失败的测试是将零添加到空指针未定义的行为、编译器错误还是其他什么?
- 当一行中只有一个"#"而没有其他内容时,C++预处理器会做什么?
- 计时器坏了或者其他什么的
- 编译以下重载<<需要什么enable_if或其他提示?
- 在这种情况下,我们可以使用静态而不是朋友吗,还有其他解决方案是什么
- 附加包含目录和其他 #using 目录有什么区别?
- 谷神星求解器:残差函子使用的可变对象是否良好实践?还有什么其他选择
- 相同的代码,不同的结果?从其他项目包含有什么问题?
- 创建实例化所有其他类和子系统的类的目的是什么
- 如果从在其他函数中调用的函数引发异常会发生什么情况
- 不太明白 & 运算符的地址在这个结构中做什么,以及它如何能够访问其他成员变量
- 使用什么,外部调用或 COM 或其他
- 我需要知道什么才能开始用c++/其他语言编程合成器
- Cython 带 STL 矢量和没有 NumPy 可以从其他应用程序调用,缺少什么?
- 设计问题:枚举或函数或其他什么
- 如果您称为destructor并将分配的内存再次用于其他对象,会发生什么
- CGRectMake(或其他Make函数)究竟做了什么
- 对C++中的字节字段使用char*或void*或其他什么
- 除了使用 getline() 和使用字符串流转换之外,还有什么其他方法可以从 ifstream 读取双倍