package main import ( "fmt" "math" "os" "os/exec" "strconv" "strings" ) const ( ascii string = " -hMMMMMMMMMMMd:\n -hMMMMMMMMMMMd: \n-:::::::::::: :::::::::::::`.::::::::::::::::::::::::::.-hMMMMMMMMMMMd: \n`oNMMMMMMMMMM.MMMMMMMMMMMMM.ssmMMMMMMMMMMMMMMMMMMMMMMdshMMMMMMMMMMMd: \n `oNMMMMMMMM.MMMMMMMMMMMMM.NNysmMMMMMMMMMMMMMMMMMMmshMMMMMMMMMMMd: \n `oNMMMMMM.MMMMMMMMMMMMM.NMMNysmMMMMMMMMMMMMMMmshMMMMMMMMMMMd/ \n `oNMMMM.MMMMMMMMMMMMM.NMMMMNysmMMMMMMMMMMm+ohddddddddddh/` \n `oNMM.MMMMMMMMMMMMM.NMMMMMMNysmMMMMMMm/` ```````````` \n .oN.MMMMMMMMMMMMM.NMMMMMMMMNysmMMm/` \n . :::::::::::::`NMMMMMMMMMMNys+` \n NMMMMMMMMMMMMNo. \n NMMMMMMMMMMMMMMmo` \n NMMMMMMMMMMMMMMMMmo` \n NMMMMMMMMMMMMMMMMMy. \n NMMMMMMMMMMMMMMMh- \n NMMMMMMMMMMMMMh: \n NMMMMMMMMMMMh: \n NMMMMMMMMMh: \n NMMMMMMMdyo \n NMMMMMdydMy \n NMMMdsdMMMy \n NMdsdMMMMMy \n dsdMMMMMMMy \n :hMMMMMMMMMy \n :hMMMMMMMMMMMy \n -hMMMMMMMMMMMMMy \n -hMMMMMMMMMMMMMMMy \n -yMMMMMMMMMMMMMMMMMy \n :dMMMMMMMMMMMMMMMMMy \n :dMMMMMMMMMMMMMMMy \n /dMMMMMMMMMMMMMy \n /dMMMMMMMMMMMy-. \n /dMMMMMMMMMy+Ns. \n /dMMMMMMMy+MMNs. \n /mMMMMMy+MMMMNs. \n /mMMMy+MMMMMMMs. \n /mMy+MMMMMMMMMs. \n /++MMMMMMMMMMMy. " tekst string = "Thalia Constitutieborrel Gastenboek\n1) Schrijf een nieuw bericht.\n2) Lees oude berichten." ) var ( menu string = "" menuwidth int = 0 Message string = "" ) func terminalSize() (width, height int) { cmd := exec.Command("stty", "size") cmd.Stdin = os.Stdin out, _ := cmd.Output() sizes := strings.Trim(string(out), "\n") size := strings.Split(sizes, " ") width, _ = strconv.Atoi(size[1]) height, _ = strconv.Atoi(size[0]) return width, height } func clear() { _, height := terminalSize() fmt.Printf("%v", strings.Repeat("\n", height+1)) } func generateMenu() string { var width, height int = terminalSize() if menu == "" && width != menuwidth { menuwidth = width var content []string = strings.Split(ascii, "\n") var options []string = strings.Split(tekst, "\n") content = append(content, make([]string, (height-4)-len(content)-len(options))...) content = append(content, options...) menu += strings.Repeat("-", width) for _, value := range content { var length int = len(value) menu += "|" menu += strings.Repeat(" ", int(math.Floor(float64((width-length-3)/2.0)))) menu += value menu += strings.Repeat(" ", int(math.Ceil(float64((width-length-2)/2.0)))) menu += "|\n" } menu += strings.Repeat("-", width) } return menu } func showMenu() { clear() fmt.Print(generateMenu()) if Message != "" { fmt.Println(Message) } else { fmt.Print("\n") } fmt.Print("Maak uw keuze: ") var i int fmt.Scanf("%d", &i) fmt.Println(i) }