0

我正在用 C++ 创建一个游戏(说到这个,我使用的代码重要吗?),可以粗略地描述为棋盘游戏,我想知道这两个“检查字符是否超出界限”中的哪一个功能更高效:

一:

int main()
{
    //display board
    //get player input
    //move player
    //if player is out of bounds,
      //force player back into bounds
}

//int main()
{
    //same thing, except without last two lines.
}
void move(char input)
{
    //if input does not place player out of bounds
      //move player according to input
}

本质上,第一个移动每个实体,然后检查所有实体的位置并相应地重置它们,第二个确保玩家移动不会将他移出边界,而不是等到循环结束。

我想知道这两个(系统?)中的哪一个比另一个更有效或更快,或者,如果它们都相等,其中哪一个是更好的编码风格?

4

3 回答 3

0

后者更快(不做和撤消)。我也认为它是更清洁的,但这是一个见仁见智的问题。

于 2009-06-05T20:50:15.783 回答
0

在移动之前,我会确保曾经移动是合法的。这样,您就可以保持理智的状态,而不是尝试某些事情并使“板”处于无效状态。它在面向对象的方式中也更有意义。对象不能做出无效的移动,因此该移动是可信的。

于 2009-06-05T20:51:03.380 回答
0

在移动之前检查会更快,我想,一个人出界的几率非常低。

关于风格,我建议不要从 move() 方法中检查边界,即使该检查被提取到它自己的方法中,因为这给了你两个“改变” move() 方法的“理由”(从而打破Single责任;有些人只在类级别强制执行此操作,但我建议您在可以摆脱它的方法中使用它)。

于 2009-06-05T21:17:16.430 回答