Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
100
Task/21-game/Go/21-game.go
Normal file
100
Task/21-game/Go/21-game.go
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"log"
|
||||
"math/rand"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var scanner = bufio.NewScanner(os.Stdin)
|
||||
|
||||
var (
|
||||
total = 0
|
||||
quit = false
|
||||
)
|
||||
|
||||
func itob(i int) bool {
|
||||
if i == 0 {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func getChoice() {
|
||||
for {
|
||||
fmt.Print("Your choice 1 to 3 : ")
|
||||
scanner.Scan()
|
||||
if scerr := scanner.Err(); scerr != nil {
|
||||
log.Fatalln(scerr, "when choosing number")
|
||||
}
|
||||
text := scanner.Text()
|
||||
if text == "q" || text == "Q" {
|
||||
quit = true
|
||||
return
|
||||
}
|
||||
input, err := strconv.Atoi(text)
|
||||
if err != nil {
|
||||
fmt.Println("Invalid number, try again")
|
||||
continue
|
||||
}
|
||||
newTotal := total + input
|
||||
switch {
|
||||
case input < 1 || input > 3:
|
||||
fmt.Println("Out of range, try again")
|
||||
case newTotal > 21:
|
||||
fmt.Println("Too big, try again")
|
||||
default:
|
||||
total = newTotal
|
||||
fmt.Println("Running total is now", total)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
computer := itob(rand.Intn(2))
|
||||
fmt.Println("Enter q to quit at any time\n")
|
||||
if computer {
|
||||
fmt.Println("The computer will choose first")
|
||||
} else {
|
||||
fmt.Println("You will choose first")
|
||||
}
|
||||
fmt.Println("\nRunning total is now 0\n")
|
||||
var choice int
|
||||
for round := 1; ; round++ {
|
||||
fmt.Printf("ROUND %d:\n\n", round)
|
||||
for i := 0; i < 2; i++ {
|
||||
if computer {
|
||||
if total < 18 {
|
||||
choice = 1 + rand.Intn(3)
|
||||
} else {
|
||||
choice = 21 - total
|
||||
}
|
||||
total += choice
|
||||
fmt.Println("The computer chooses", choice)
|
||||
fmt.Println("Running total is now", total)
|
||||
if total == 21 {
|
||||
fmt.Println("\nSo, commiserations, the computer has won!")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
getChoice()
|
||||
if quit {
|
||||
fmt.Println("OK, quitting the game")
|
||||
return
|
||||
}
|
||||
if total == 21 {
|
||||
fmt.Println("\nSo, congratulations, you've won!")
|
||||
return
|
||||
}
|
||||
}
|
||||
fmt.Println()
|
||||
computer = !computer
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue