본문 바로가기

Go/[Go]Up Down Counting 게임 만들기

Up Down Counting 게임 만들기(결과물)

요구사항

  • 1 ~ 100 사이의 난수를 생성합니다.
    "1 ~ 100 사이의 숫자가 랜덤 생성되었습니다."
    "이제부터 숫자를 추측해주시길 바랍니다."
    라는 출력 문구를 띄웁니다.
  • 사용자가 입력할 수 있는 문구를 띄운 후, 입력 값을 저장합니다.
    "남은 횟수 -> [남은 횟수 표시]"
    "사용자 추측 숫자 : "
  • [남은 횟수 표시]는 for문을 이용하여 표현합니다.
  • 입력 후 출력 문구
    사용자가 추측한 숫자가 목표값보다 낮다면 -> "목표값은 입력 숫자보다 높은 숫자입니다."
    사용자가 추측한 숫자가 목표값보다 높다면 -> "목표값은 입력 숫자보다 낮은 숫자입니다."
  • 결과물
    추측에 성공했다면 -> "당신이 이겼어요!"
    추측에 실패했다면 -> "아쉽네요ㅠㅠ 정답은 [정답값]입니다."

 

코드

package main

import (
	"bufio"
	"fmt"
	"log"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

func main() {
	// 1. 1 ~ 100 사이의 난수 값을 생성하여 목표값으로 설정합니다.

	// Unix() -> 현재 날짜 및 시간을 정수값으로 반환합니다.
	seconds := time.Now().Unix()

	// 컴퓨터 프로그램에서 발생하는 무작위 수는 사실 엄격한 의미의 무작위 수가 아닙니다.
	// 어떤 특정한 시작 숫자를 정해 주면 컴퓨터가 정해진 알고리즘에 의해 마치 난수처럼 보이는 수열을 생성합니다.
	// 이러한 시작 숫자를 Seed라고 합니다.
	rand.Seed(seconds) // 난수 생성기를 시딩합니다.
	target := rand.Intn(100) + 1
	// fmt.Println(target)

	fmt.Println("1 ~ 100 사이의 숫자가 랜덤 생성되었습니다.")
	fmt.Println("이제부터 숫자를 추측해주시길 바랍니다.")

	// 3. 사용자가 추측한 숫자가 목표값보다 낮다면 -> "목표값은 입력 숫자보다 높은 숫자입니다."
	// 							   높다면 -> "목표값은 입력 숫자보다 낮은 숫자입니다."
	isFind := false
	for x := 1; x <= 10; x++ {
		fmt.Println("남은 횟수 ->", 11-x)
		// 2. 사용자가 추측한 숫자를 입력할 수 있게 만들고, 추측한 값을 저장합니다.
		fmt.Print("사용자 추측 숫자 : ")
		reader := bufio.NewReader(os.Stdin)
		input, err := reader.ReadString('\n')
		if err != nil {
			log.Fatal(err)
		}
		input = strings.TrimSpace(input)
		userNum, err := strconv.Atoi(input)
		if err != nil {
			log.Fatal(err)
		}

		if userNum < target {
			fmt.Println("목표값은 입력 숫자보다 높은 숫자입니다.")
			fmt.Println()
		} else if userNum > target {
			fmt.Println("목표값은 입력 숫자보다 낮은 숫자입니다.")
			fmt.Println()
		} else {
			isFind = true
			break
		}

	}
	if isFind {
		fmt.Println("당신이 이겼어요!")
	} else {
		fmt.Println("아쉽네요ㅠㅠ 정답은", target, "입니다.")
	}
}

 

결과물

Up Down Counting Game