mkaz.blog

Working with Go

Guessing Game

An example of the guessing game picking a number between 1-100.

Random umber

The math/rand standard library is used to generate the random number.

Note, you must seed the generator, for random this is easiest done using time.Now().UnixNano(). You can also seed the generator with a known value, such as a user id to get a deterministic random number.

rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Intn(100))

Example Game

Here is the example guessing game

package main
 
import (
    "fmt"
    "math/rand"
    "time"
)
 
// automatically called on start
func init() {
    // new random seed
    rand.Seed(time.Now().UnixNano())
}
 
func main() {
    // variable to store guess
    var guess int
 
    // variable to store number of guesses
    var count int
 
    // pick number to guess, add 1 since Intn gives [0,99]
    num := rand.Intn(100) + 1
 
    fmt.Println(">> I'm thinking of a number between 1-100 << ")
 
    // guessing loop
    for {
        // prompt user for guess
        fmt.Print("Guess: ")
        _, err := fmt.Scanf("%d", &guess)
        if err == nil {
            count += 1 // increment guess counter
            if guess > num {
                fmt.Println(" >> Too high ")
            } else if guess < num {
                fmt.Println(" >> Too low ")
            } else {
                fmt.Printf("Correct! It took you %d guesses!\n", count)
                break
            }
        } else { // an error with input
            fmt.Println(">> Please input a number")
        }
    }
}