如何用golang寫遊戲加經驗函數不出錯
阿新 • • 發佈:2018-07-30
mir Golan pri eve clas pmap package ret github
遊戲中加經驗的地方很多,很多人寫的很亂,我把這個功能用
比較簡單且清晰的方法寫了下來。代碼如下:
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!
如何用golang寫遊戲加經驗函數不出錯