-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmain.go
More file actions
74 lines (66 loc) · 2.4 KB
/
Copy pathmain.go
File metadata and controls
74 lines (66 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package main
import ( //Biblioteca
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
var vitorias int = 0
var derrotas int = 0
var continuar bool = true
func main() {
for continuar == true { //Inicia o loop
fmt.Println("Escolha entre Cara ou Coroa:") //Mostra as alternativas
fmt.Println("Cara: 0")
fmt.Println("Coroa: 1")
reader := bufio.NewReader(os.Stdin) //Pede ao usuário a escolha
input, err := reader.ReadString('\n') // Lê a entrada do usuário
if err != nil {
fmt.Println(err) // Se der erro, vai imprimi-lo
}
input = strings.TrimSuffix(input, "\n") //Remove o \n do final da string
opcao, err := strconv.Atoi(input) // converte a string para inteiro
if opcao > 1 { //Se o usuário digitar uma opção inválida
fmt.Println("Opção Inválida") //Imprimi a mensagem
return
}
status, result := jogo(opcao) // Chama a função jogo
if status == 1 {
fmt.Println("Você ganhou!")
vitorias++
fmt.Println("O resultado foi: ", result)
} else {
fmt.Println("Você perdeu!")
derrotas++
fmt.Println("O resultado foi: ", result)
}
fmt.Println("Deseja continuar jogando? (s/n)")
reader = bufio.NewReader((os.Stdin)) //Pede ao usuário a entrada de sim ou não
input_continuar, err_continuar := reader.ReadString('\n') //Lê a entrada do usuário
if err_continuar != nil {
fmt.Println(err_continuar) //Se der erro
}
input = strings.TrimSuffix(input_continuar, "\n") //Remove o \n do final da string
if input == "s" { //se o usuário digitar s
continuar = true //Continua o jogo
} else {
continuar = false // se não, para o jogo
fmt.Println("Obrigado por jogar, volte sempre!") // Frase de despedida caso o usuário não vá mais jogar
}
}
fmt.Println("Vitórias: ", vitorias) // Depois que o usuário parar de jogar mostra o resultado de vitórias/derrotas
fmt.Println("Derrotas: ", derrotas)
}
func jogo(opcao int) (int, string) { //Retorna o Status do jogo e o resultado
rand.Seed(time.Now().UnixNano()) //Gera um número aleatório
options := []string{"cara", "coroa"} // Opções possíveis
result := rand.Intn(2) //Gera um número aleatório entre 0 e 1
if options[result] == options[opcao] {
return 1, options[result] //Retorna 1 se o usuário ganhou
} else {
return 2, options[result] //Retorna 2 se o usuário perdeu
}
}