Наш проект заключается в создании функциональной игры Rock Paper Scissors с использованием Go. Я подумал, что это было бы отличным местом, чтобы попросить несколько указателей на некоторые очевидные ошибки, которые я мог бы сделать.
У меня несколько проблем.
- Независимо от того, что пользователь вводит, программа говорит, что я всегда вхожу в "рок".
- Независимо от того, что я ввожу в программу, такжевсегда говорит мне, что это «галстук»
Так что для меня совершенно очевидно, что у меня возникают проблемы с моими утверждениями if / else, но я не уверен, где и что именно. Также я знаю свои PlayerPlay
func уродлив, но по какой-то причине, когда у меня изначально было мое меню дисплея, оно продолжало бы возвращаться к моему меню, не проходя через остальную часть программы.
package main
import (
"fmt"
"math/rand"
"time"
)
func ComputerPlay() int {
return rand.Intn(2) + 1
}
func PlayerPlay(play int) int {
fmt.Scanln(&play)
return play
}
func PrintPlay(playerName string, play int) {
fmt.Printf("%s picked ", playerName)
if play == 0 {
fmt.Printf("rock\n")
} else if play == 1 {
fmt.Printf("paper\n")
} else if play == 2 {
fmt.Printf("scissors\n")
}
fmt.Printf("Computer has chose ")
switch ComputerPlay() {
case 0:
fmt.Println("rock\n")
case 1:
fmt.Println("paper\n")
case 2:
fmt.Println("scissors\n")
}
}
func ShowResult(computerPlay int, humanPlay int){
var play int
computerPlay = ComputerPlay()
humanPlay = PlayerPlay(play)
if humanPlay == 0 && humanPlay == 0 {
fmt.Printf("It's a tie\n")
} else if humanPlay == 0 && computerPlay == 1 {
fmt.Printf(" Rock loses to paper\n")
} else if humanPlay == 0 && computerPlay == 2 {
fmt.Printf("Rock beats scissors\n")
} else if humanPlay == 1 && computerPlay == 0 {
fmt.Printf(" Paper beats rock\n")
} else if humanPlay == 1 && computerPlay == 1 {
fmt.Printf("It's a tie!\n")
} else if humanPlay == 1 && computerPlay == 2 {
fmt.Printf("Paper loses to scissors\n")
} else if humanPlay == 2 && computerPlay == 0 {
fmt.Printf("Scissors loses to rock\n")
} else if humanPlay == 2 && computerPlay == 1 {
fmt.Printf(" Scissors beats paper\n")
} else if humanPlay == 2 && computerPlay == 2 {
fmt.Printf(" It's a tie!\n")
}
}
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Printf("Welcome to Rock, Paper, Scissors\n\n")
fmt.Printf("What is your name?\n")
var playerName string
fmt.Scanln(&playerName)
fmt.Printf("Choose\n")
fmt.Printf("0. Rock\n")
fmt.Printf("1. paper\n")
fmt.Printf("2. scissors\n")
fmt.Printf("Your choice -> ")
var play int
PlayerPlay(play)
PrintPlay(playerName, play)
var computerPlay int
ComputerPlay()
ShowResult(computerPlay, play)
}