小朋友们要玩狼人杀,总是让我给他们安排角色。来个小程序,让他们自己玩。
程序自动安排角色,小朋友们依次过来看系统随机给他们安排的角色。
代码能用就行。
package main
import (
"fmt"
"log"
"math/rand"
"os"
"time"
"github.com/faiface/beep/mp3"
"github.com/faiface/beep/speaker"
)
func main() {
rand.Seed(time.Now().UnixNano())
uName := []string{
"恶魔", "医生", "船员", "内鬼",
}
res := make([]string, len(uName))
copy(res, uName)
length := len(res)
for i := 0; i < length; i++ {
index := rand.Intn(length - i)
res[i], res[index+i] = res[index+i], res[i]
}
for i, n := range res {
fmt.Print("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b", i+1, ". ", n)
time.Sleep(5 * time.Second)
fmt.Print("\b\b\b\b\b\b\b\b\b\b\b ")
// 播放一个提示音频:角色已就位,请下一角色...
go func() {
player := MusicEntry{Source: string("./say.mp3")}
player.Open()
player.Play()
}()
time.Sleep(5 * time.Second)
}
}
// mp3播放 -------------
type MusicEntry struct {
Id string //编号
Name string //歌名
Artist string //作者
Source string //位置
Type string //类型
Filestream *os.File // 文件流
}
func (me *MusicEntry) Open() {
var err error
me.Filestream, err = os.Open(me.Source)
if err != nil {
log.Fatal(err)
}
}
func (me *MusicEntry) Play() {
streamer, format, err := mp3.Decode(me.Filestream)
if err != nil {
log.Fatal(err)
}
defer streamer.Close()
speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
//fmt.Println("music length :", streamer.Len())
speaker.Play(streamer)
select {}
}