数学:当关卡数量不受限制时,为关卡资产创建查找 table
Math: Create lookup table for level assets when unlimited amount of levels
我正在制作一款游戏,我计划拥有无限数量的关卡。从图形上看,游戏有 20 个不同的关卡/资产,之后它再次从头开始,但分数和关卡数量仍然增加。
目前我只是查找其中的逻辑是...
if(gameLevel < 2){
// set up assets for relevant levels
} else if(gameLevel< 5){
// set up assets for relevant levels
} else if(gameLevel< 10){
// set up assets for relevant levels
} else if(gameLevel< 15){
// set up assets for relevant levels
}
我希望游戏在第 21 - 24 关使用第 1 - 4 关的资产,并在第 25 - 29 关使用第 5 - 9 关的资产,依此类推。但这需要在无限的基础上发生,因此需要数学方程式而不是简单的查找 table.
我认为我必须使用一些模运算,但到目前为止对我来说还不明显。
使用模数 20。模数假定您从 0 开始,因此由于我们的级别编号为 1-20(而不是 0-19),我们需要为此进行调整:
/* Returns the base level (1-20). */
int baseLevel(int level) {
int noOfLevels = 20; // You probably have this as a constant value in your code.
return (level - 1) % noOfLevels + 1;
}
您的 if
语句将变为:
if(baseLevel(gameLevel) < 2){
// set up assets for relevant levels
} else if(baseLevel(gameLevel) < 5){
// set up assets for relevant levels
} else if(baseLevel(gameLevel) < 10){
// set up assets for relevant levels
} else if(baseLevel(gameLevel) < 15){
// set up assets for relevant levels
}
我正在制作一款游戏,我计划拥有无限数量的关卡。从图形上看,游戏有 20 个不同的关卡/资产,之后它再次从头开始,但分数和关卡数量仍然增加。
目前我只是查找其中的逻辑是...
if(gameLevel < 2){
// set up assets for relevant levels
} else if(gameLevel< 5){
// set up assets for relevant levels
} else if(gameLevel< 10){
// set up assets for relevant levels
} else if(gameLevel< 15){
// set up assets for relevant levels
}
我希望游戏在第 21 - 24 关使用第 1 - 4 关的资产,并在第 25 - 29 关使用第 5 - 9 关的资产,依此类推。但这需要在无限的基础上发生,因此需要数学方程式而不是简单的查找 table.
我认为我必须使用一些模运算,但到目前为止对我来说还不明显。
使用模数 20。模数假定您从 0 开始,因此由于我们的级别编号为 1-20(而不是 0-19),我们需要为此进行调整:
/* Returns the base level (1-20). */
int baseLevel(int level) {
int noOfLevels = 20; // You probably have this as a constant value in your code.
return (level - 1) % noOfLevels + 1;
}
您的 if
语句将变为:
if(baseLevel(gameLevel) < 2){
// set up assets for relevant levels
} else if(baseLevel(gameLevel) < 5){
// set up assets for relevant levels
} else if(baseLevel(gameLevel) < 10){
// set up assets for relevant levels
} else if(baseLevel(gameLevel) < 15){
// set up assets for relevant levels
}