C++ 在游戏地图上选择100种情况的最佳方法(MFC、CPoint)

C++ 在游戏地图上选择100种情况的最佳方法(MFC、CPoint),c++,object,if-statement,mfc,switch-statement,C++,Object,If Statement,Mfc,Switch Statement,我正在创建一个MFC旧时代游戏(类似于地下城和龙),我将角色的位置表示为一个CPoint对象。 地图在(0,0)到(9,9)之间,10 x 10。 每一点都应该有自己不同的故事。 在每个时间点和发生的事情之间,选择哪种方式是最好的 我考虑了几个选择: 答:每次玩家点击移动按钮(例如他选择向东移动)时,我都会进行检查,并且做很多如果不检查该位置会发生什么 例如: void CProjectDlg::OnBnClickedWest() { (*Location).x--; if(Lo

我正在创建一个MFC旧时代游戏(类似于地下城和龙),我将角色的位置表示为一个CPoint对象。 地图在(0,0)到(9,9)之间,10 x 10。 每一点都应该有自己不同的故事。 在每个时间点和发生的事情之间,选择哪种方式是最好的

我考虑了几个选择:

答:每次玩家点击移动按钮(例如他选择向东移动)时,我都会进行检查,并且做很多如果不检查该位置会发生什么

例如:

void CProjectDlg::OnBnClickedWest()
{
    (*Location).x--;
    if(Location->x ==0)
        CWest.EnableWindow(false);
    if(Location->x <9)
        CEast.EnableWindow(true);

    if(Location->x==0 && Location->y==0)
        do something;
    else
        if(Location->x==1 && Location->y==0)
           do something else...;
    etc...;
}
void CProjectDlg::OnBnClickedWest()
{
(*位置).x--;
如果(位置->x==0)
CWest.EnableWindow(假);
如果(位置->x==0&&Location->y==0)
做点什么;
其他的
如果(位置->x==1&&Location->y==0)
做点别的。。。;
等
}
B.我也会这样做,但在所有位置都有开关(如果可能)。 例如:

void CProjectDlg::OnBnClickedWest()
{
(*位置).x--;
如果(位置->x==0)
CWest.EnableWindow(假);

如果(位置->x最后,答案是使用基于开关的(这是在100个选项中进行选择的最佳选择)。谢谢大家!

我会说,使用一个让你感觉更舒服的选项。减少if
-cascade或巨大的
switch
语句复杂性的一个常见解决方案是使用查找表。
void CProjectDlg::OnBnClickedWest()
{
    (*Location).x--;
    if(Location->x ==0)
        CWest.EnableWindow(false);
    if(Location->x <9)
        CEast.EnableWindow(true);

    switch(Location)
       case ((0,0)):
         something;
}