一尘不染

在同一行上打印多行字符串

go

标题怎么说。我有一个骰子程序,它会打印骰子IE

 ------
|      |
|      |
|     1|
 ------

我希望能够打印多个骰子,所以它看起来像这样:

 ------     ------
|      |   |      |
|      |   |      |
|     1|   |     3|
 ------     ------

我已经尝试过了fmt.Print,但是仍然将它们打印在彼此下面。我当时也在考虑创建一个函数,该函数会打印每个对象的顶行,但是我不知道该怎么做。有任何想法吗?


阅读 228

收藏
2020-07-02

共1个答案

一尘不染

这样就可以打印了。数字在1到6(含)之间随机分配。用作命令行参数的骰子数。因此,在我的情况下./roll 6会打印6个骰子,随机数最多为6。

package main

import (
    "fmt"
    "math/rand"
    "os"
    "strconv"
    "time"
)

func main() {
    numDice := 1

    if len(os.Args) > 1 {
        i, err := strconv.Atoi(os.Args[1])
        if err != nil {
            fmt.Println(err)
        }
        numDice = i
    }

    seed := rand.NewSource(time.Now().UnixNano())
    randomNumber := rand.New(seed)

    die := []string{
        " ------   ",
        "|      |  ",
        "|      |  ",
        "|      |  ",
        " ------   ",
    }

    for i := 0; i < 5; i++ {
        for j, n := 0, numDice; j < n; j++ {
            if i == 3 {
                fmt.Printf("|    %d |  ", randomNumber.Intn(5)+1)
            } else {
                fmt.Print(die[i])
            }
        }
        fmt.Println()
    }
}
2020-07-02