我的任务是创建一个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);
}
然后,顶层调用可以随机选择适合所选级别的
numTerms
。 CompoundExpression
和LiteralExpression
都将从抽象基类Expression
派生,并会注意将其内容转换为字符串并计算所需的结果。如果要精确使用所需的最小括号数,特别是
CompoundExpression
的字符串化将需要大量工作。为此,您可能还需要有关运算符的更多信息,例如它们的优先级以及它们是否具有关联性。这就是为什么我选择将Operator
设为类(或者可能是enum
)而不是简单的char
的原因。当然,首先可以使用简单的字符串化,无论是否需要,总是将CompoundExpression
括在括号中。基本功能到位后,您始终可以简化字符串,并且实际上可以看到需要进行更多工作的地方。