游戏中加经验的地方很多,很多人写的很乱,我把这个功能用
比较简单且清晰的方法写了下来。代码如下:
package main
import (
"fmt"
"log"
"github.com/emirpasic/gods/maps/treemap"
)
func main() {
exp := []int{
20,
30,
40,
50,
70,
300,
350,
560,
650,
1000,
}
expMap := treemap.NewWithIntComparator()
for i := 0; i < len(exp); i++ {
expMap.Put(i+1, exp[i])
}
fmt.Println(expMap.String())
addExp := 900
// 最笨的办法一级一级算
curLevel := 2
curExp := 4
totalExp := curExp + addExp
// 最清晰的算法逻辑
for lvIndex := curLevel + 1; lvIndex <= 10; lvIndex++ {
needExp, ok := expMap.Get(lvIndex)
if !ok {
log.Println("逻辑错误, 出错等级:", lvIndex)
return
}
v := needExp.(int)
if totalExp > v {
totalExp -= v
curLevel += 1
} else {
break
}
}
curExp = totalExp
if curLevel >= 10 {
curExp = 0
}
fmt.Println("当前等级:", curLevel, ", 当前经验值:", curExp)
fmt.Println("hello exp!")
}
output:
TreeMap
map[1:20 2:30 3:40 4:50 5:70 6:300 7:350 8:560 9:650 10:1000]
当前等级: 7 , 当前经验值: 94
hello exp!
原文:https://www.cnblogs.com/LittleLee/p/9388024.html