컴퓨터가 1~100 숫자(정수 범위) 중 하나를 랜덤으로 정합니다. (이를 알려주지 않습니다.)
사용자는 이 숫자를 맞추어야 합니다.
입력한 숫자보다 정답이 크면 → "UP" 출력,
입력한 숫자보다 정답이 작으면 → "DOWN" 출력.
정답을 맞추면 → "정답"을 출력하고, 지금까지 숫자를 입력한 횟수를 알려줍니다.
코딩 초보자라도 if 함수와 while함수, 랜덤 모듈 정도까지만 배워도 재미있게 풀 수 있는 문제입니다.
(예시)
컴퓨터가 1~100 중 랜덤 숫자 하나를 정합니다.
이 숫자를 맞춰주세요.
1~100 숫자 입력:50
DOWN
1~100 숫자 입력:25
UP
1~100 숫자 입력:38
DOWN
1~100 숫자 입력:32
UP
1~100 숫자 입력:35
UP
1~100 숫자 입력:37
DOWN
1~100 숫자 입력:36
정답입니다! 7회 만에 맞췄어요.
C#
using System;
namespace 업앤다운
{
class Program
{
static void Main()
{
var game = new UpAndDownGame();
game.StartGame();
}
}
class UpAndDownGame
{
public UpAndDownGame()
{
Random rand = new Random();
this.Answer = rand.Next(1, 101);
}
private int Answer { get; }
public void StartGame()
{
Console.WriteLine("컴퓨터가 1~100 중 랜덤 숫자 하나를 정합니다.\n이 숫자를 맞춰주세요.");
int numTry = 0;
while (true)
{
Console.Write("1~100 숫자 입력: ");
string consoleInput = Console.ReadLine();
numTry++;
// Enter, null, whitespace(s)가 입력될 경우 0으로 간주
int guessNumber = string.IsNullOrWhiteSpace(consoleInput) ? 0 : int.Parse(consoleInput);
if (this.Answer == guessNumber)
{
Console.WriteLine($"정답입니다! {numTry}회 만에 맞췄어요.");
break;
}
string message = this.Answer > guessNumber ? "UP" : "DOWN";
Console.WriteLine(message);
}
}
}
}
2021年08月19日 15:13
namespace MyFirstProject
{
internal class Program
{
static void Main(string[] args)
{
var game = new UPandDownGame();
game.StartGame();
}
}
class UPandDownGame
{
private static int NUMTRY_MAX = 7; // 시도 기회 수
private int Answer { get; } // 정답값 넣는 변수
private static Random random = new Random(); // 랜덤함수
int numTry = 0;// 시도 횟수
public UPandDownGame()
{
this.Answer = random.Next(1, 999); //랜덤 값을 Answer에 집어넣기
}
public void StartGame()
{
Console.WriteLine("컴퓨터가 1~999 중 핸덤 숫자 하나를 정합니다. \n이 숫자를 맞춰주세요.");
while (true) //true를 넣으면 계속 while 문 실행
{
Console.Write("1~999 숫자 입력 : ");
string consoleInput = Console.ReadLine(); // consoleInput 변수에 입력값 넣기
numTry++;
//만약 어느 하나의 조건도 만족하지 않는다면, 즉 변환에 실패하거나 범위를 벗어나는 입력값이라면 if문 안에 작업이 수행됩니다:
if (!int.TryParse(consoleInput, out int guessNumber) || guessNumber < 1 || guessNumber > 999)
{
Console.WriteLine("숫자 1~999를 입력해주세요.");
numTry --;
continue; //현재 반복을 종료하고 다음 반복을 시작합니다
}
if (this.Answer == guessNumber)
{
Console.WriteLine($"정답입니다! {numTry}회 만에 맞췄어요.");
break;
}
string message = this.Answer > guessNumber ? "UP" : "DOWN";
Console.WriteLine(message);
if (numTry < NUMTRY_MAX)
{
Console.WriteLine($"{NUMTRY_MAX - numTry}회 남으셨습니다.");
}
else
{
Console.WriteLine("횟수를 초과 하셨습니다.");
break;
}
}
}
}
}
2023年10月17日 01:14
풀이 작성