dice-roller/Dice/Dice.go

79 lines
1.4 KiB
Go

package Dice
import (
"fmt"
"math/rand"
"strings"
"time"
"gitlab.com/EternalWanderer/dice-roller/Colors"
)
var (
surfaces, diceThrows, modidier int
)
func Cast(surfaces, diceThrows, modifier int) {
rand.Seed(time.Now().Unix())
var (
casts []int
cast, total int
)
for i := 0; i < diceThrows; i++ {
cast = rand.Intn(surfaces) + 1
casts = append(casts, cast)
total += cast
}
switch {
case modifier != 0:
fmt.Printf("%sRolling %dd%d + %d...\n%s", Colors.ColorYellow, diceThrows, surfaces, modifier, Colors.ColorReset)
default:
fmt.Printf("%sRolling %dd%d...\n%s", Colors.ColorYellow, diceThrows, surfaces, Colors.ColorReset)
}
if diceThrows > 1 {
fmt.Println(Colors.ColorMagenta, "\tIndividual rolls:",
strings.Trim(fmt.Sprint(casts), "[]"),
Colors.ColorReset)
}
if modifier != 0 {
fmt.Println("\tWithout modifier:", total)
fmt.Println(Colors.ColorGreen, "\tWith modifier:", total+modifier, Colors.ColorReset)
} else {
fmt.Printf("%s\t%d%s\n", Colors.ColorGreen, total, Colors.ColorReset)
}
}
func SimpleCast(modifier int) int {
var cast = rand.Intn(20) + 1
if modifier != 0 {
fmt.Println("Without modifier:", cast)
}
return cast + modifier
}
func Advantage(x, y int) int {
fmt.Println("\tx:", x)
fmt.Println("\tY:", y)
if x > y {
return x
} else {
return y
}
}
func Disadvantage(x, y int) int {
fmt.Println("\tx:", x)
fmt.Println("\tY:", y)
if x < y {
return x
} else {
return y
}
}