| "math/rand" | "math/rand" | ||||
| "sort" | "sort" | ||||
| "time" | "time" | ||||
| "util" | |||||
| ) | ) | ||||
| type Class struct { | type Class struct { | ||||
| Stats map[string]int | Stats map[string]int | ||||
| } | } | ||||
| func roll(x, y int) []int { | |||||
| rolls := make([]int, x) | |||||
| for i := 0; i < x; i++ { | |||||
| rolls[i] = (rand.Intn(y) + 1) | |||||
| } | |||||
| return rolls | |||||
| } | |||||
| func sum(ary []int) int { | |||||
| s := 0 | |||||
| for _, v := range ary { | |||||
| s += v | |||||
| } | |||||
| return s | |||||
| } | |||||
| func stats() []int { | func stats() []int { | ||||
| rolls := make([]int, 6) | rolls := make([]int, 6) | ||||
| for i := 0; i < 6; i++ { | for i := 0; i < 6; i++ { | ||||
| thisRoll := roll(4, 6) | |||||
| thisRoll := util.Roll(4, 6) | |||||
| for k, v := range thisRoll { | for k, v := range thisRoll { | ||||
| // fmt.Println(thisRoll) | // fmt.Println(thisRoll) | ||||
| for v == 1 { | for v == 1 { | ||||
| // fmt.Println("Replacing 1") | // fmt.Println("Replacing 1") | ||||
| newv := roll(1, 6) | |||||
| newv := util.Roll(1, 6) | |||||
| thisRoll[k] = newv[0] | thisRoll[k] = newv[0] | ||||
| v = newv[0] | v = newv[0] | ||||
| } | } | ||||
| sort.Ints(thisRoll) | sort.Ints(thisRoll) | ||||
| top3 := make([]int, 3) | top3 := make([]int, 3) | ||||
| copy(top3, thisRoll[1:]) | copy(top3, thisRoll[1:]) | ||||
| rolls[i] = sum(top3) | |||||
| rolls[i] = util.Sum(top3) | |||||
| } | } | ||||
| return rolls | return rolls | ||||
| } | } | ||||
| rolls := stats() | rolls := stats() | ||||
| fmt.Println("Rolls: ", rolls) | fmt.Println("Rolls: ", rolls) | ||||
| sort.Ints(rolls) | sort.Ints(rolls) | ||||
| ply := Player{"Bob", barb, make(map[string]int)} | |||||
| ply := Player{util.Namegen(), barb, make(map[string]int)} | |||||
| for k, v := range barb.StatPriority { | for k, v := range barb.StatPriority { | ||||
| ply.Stats[v] = rolls[k] | ply.Stats[v] = rolls[k] | ||||
| } | } |
| "fmt" | "fmt" | ||||
| "math/rand" | "math/rand" | ||||
| // "sort" | // "sort" | ||||
| "strings" | |||||
| // "strings" | |||||
| "time" | "time" | ||||
| "util" | |||||
| ) | ) | ||||
| type Character struct { | type Character struct { | ||||
| Roles map[string][]int | Roles map[string][]int | ||||
| } | } | ||||
| func roll(x, y int) []int { | |||||
| rolls := make([]int, x) | |||||
| for i := 0; i < x; i++ { | |||||
| rolls[i] = (rand.Intn(y) + 1) | |||||
| } | |||||
| return rolls | |||||
| } | |||||
| func sum(ary []int) int { | |||||
| s := 0 | |||||
| for _, v := range ary { | |||||
| s += v | |||||
| } | |||||
| return s | |||||
| } | |||||
| func namegen() string { | |||||
| vowels := make([]string, 6) | |||||
| copy(vowels, strings.Split("aeiouy", "")) | |||||
| consonants := make([]string, 20) | |||||
| copy(consonants, strings.Split("bcdfghjklmnpqrstvwxz", "")) | |||||
| ln := rand.Intn(5) + 5 | |||||
| vorc := rand.Intn(2) | |||||
| i := 0 | |||||
| nm := make([]string, ln) | |||||
| for i < ln { | |||||
| sel, c := 0, "" | |||||
| if i%2 == vorc { | |||||
| sel = rand.Intn(6) | |||||
| c = vowels[sel] | |||||
| } else { | |||||
| sel = rand.Intn(20) | |||||
| c = consonants[sel] | |||||
| } | |||||
| if i == 0 { | |||||
| c = strings.ToUpper(c) | |||||
| } | |||||
| nm = append(nm, c) | |||||
| i++ | |||||
| } | |||||
| return strings.Join(nm, "") | |||||
| } | |||||
| func main() { | func main() { | ||||
| rand.Seed(time.Now().UnixNano()) // Keep this first in main() | rand.Seed(time.Now().UnixNano()) // Keep this first in main() | ||||
| ply := Character{} | ply := Character{} | ||||
| ply.Name = namegen() | |||||
| ply.Name = util.Namegen() | |||||
| ply.TotalForces = 9 | ply.TotalForces = 9 | ||||
| ply.CorporealForces = 1 | ply.CorporealForces = 1 | ||||
| ply.EtherealForces = 1 | ply.EtherealForces = 1 |
| package util | |||||
| import ( | |||||
| "math/rand" | |||||
| "strings" | |||||
| ) | |||||
| func Namegen() string { | |||||
| vowels := make([]string, 6) | |||||
| copy(vowels, strings.Split("aeiouy", "")) | |||||
| consonants := make([]string, 20) | |||||
| copy(consonants, strings.Split("bcdfghjklmnpqrstvwxz", "")) | |||||
| ln := rand.Intn(5) + 5 | |||||
| vorc := rand.Intn(2) | |||||
| i := 0 | |||||
| nm := make([]string, ln) | |||||
| for i < ln { | |||||
| sel, c := 0, "" | |||||
| if i%2 == vorc { | |||||
| sel = rand.Intn(6) | |||||
| c = vowels[sel] | |||||
| } else { | |||||
| sel = rand.Intn(20) | |||||
| c = consonants[sel] | |||||
| } | |||||
| if i == 0 { | |||||
| c = strings.ToUpper(c) | |||||
| } | |||||
| nm = append(nm, c) | |||||
| i++ | |||||
| } | |||||
| return strings.Join(nm, "") | |||||
| } |
| package util | |||||
| import ( | |||||
| "math/rand" | |||||
| ) | |||||
| func Roll(x, y int) []int { | |||||
| rolls := make([]int, x) | |||||
| for i := 0; i < x; i++ { | |||||
| rolls[i] = (rand.Intn(y) + 1) | |||||
| } | |||||
| return rolls | |||||
| } | |||||
| func Sum(ary []int) int { | |||||
| s := 0 | |||||
| for _, v := range ary { | |||||
| s += v | |||||
| } | |||||
| return s | |||||
| } |