package main import ( . "fmt" "strconv" "math/rand" "time" ) const nsemi = 4 const ntipi = 13 type carta = int var nomeseme [nsemi]string = [nsemi]string{ "❤", "◆","♣","♠" } var nometipo [ntipi]string = [ntipi]string{ 0:"A", 10:"J", 11:"Q", 12:"K" } type mazzo [nsemi * ntipi]carta func carta2string(s, t int) string { return nometipo[t] + nomeseme[s] } func coloreSeme(seme int) { if seme < 2 { Print("\033[31m") } else { Print("\033[30m") } } func resetColori() { Print("\033[0m") } func main() { for i := 1; i <= 9; i++ { nometipo[i] = strconv.FormatInt(int64(i + 1), 10) } rand.Seed(time.Now().UnixNano()) var m mazzo for i := 0; i < nsemi * ntipi; i++ { m[i] = i } for i := 0; i < nsemi * ntipi; i++ { p := rand.Intn(nsemi * ntipi - i) m[i], m[i + p] = m[i + p], m[i] } for i := 0; i < nsemi * ntipi; i++ { seme := m[i] / ntipi coloreSeme(seme) Print(carta2string(seme, m[i] % ntipi), " ") if (i + 1) % ntipi == 0 { Println() } } resetColori() }