我的任务是创建一个Android应用程序,向用户展示四个游戏难度级别。

有没有更简单的方法来制作包含所有其他困难的项目?

谢谢您的帮助,马克

最佳答案

我想我会做这样的递归操作(伪代码):

private Random rnd;

Expression randomExpression(int numTerms) {
    if (numTerms == 1)
      return LiteralExpression(rnd.nextInt(40 - 1) + 1)
    int split = rnd.nextInt(numTerms - 1) + 1;
    Expression left = randomExpression(split);
    Expression right = randomExpression(numTerms - split);
    Operator op = operators[rnd.nextInt(operators.length)];
    return CompoundExpression(left, op, right);
}


然后,顶层调用可以随机选择适合所选级别的numTermsCompoundExpressionLiteralExpression都将从抽象基类Expression派生,并会注意将其内容转换为字符串并计算所需的结果。

如果要精确使用所需的最小括号数,特别是CompoundExpression的字符串化将需要大量工作。为此,您可能还需要有关运算符的更多信息,例如它们的优先级以及它们是否具有关联性。这就是为什么我选择将Operator设为类(或者可能是enum)而不是简单的char的原因。当然,首先可以使用简单的字符串化,无论是否需要,总是将CompoundExpression括在括号中。基本功能到位后,您始终可以简化字符串,并且实际上可以看到需要进行更多工作的地方。

07-24 13:08