본캠프 75일차_언리얼엔진 게임개발 입문_숫자 야구 게임 코드 해석_3

YU YEON WON·2025년 11월 26일

1. 오늘 배운 내용(키워드)

숫자 야구 게임을 만드는 강의를 듣고 과제를 진행하고 있다. 해당 과제에서 나오는 함수가 어려워 여기에 작성을 하고 해석을 해본다.
JudgeResult함수로 스트라이크인지, 볼인지 판정하는 함수이다.

FString AHWGameModeBase::JudgeResult(const FString& InSecretNumberString, const FString& InGuessNumberString)
{
	int32 StrikeCount = 0, BallCount = 0;

	for (int32 i = 0; i < 3; ++i)
	{
		if (InSecretNumberString[i] == InGuessNumberString[i])
		{
			StrikeCount++;
		}
		else
		{
			FString PlayerGuessChar = FString::Printf(TEXT("%c"), InGuessNumberString[i]);
			if (InSecretNumberString.Contains(PlayerGuessChar))
			{
				BallCount++;
			}
		}
	}

	if (StrikeCount == 0 && BallCount == 0)
	{
		return TEXT("아웃");
	}

	return FString::Printf(TEXT("%d 스트라이크 %d 볼"), StrikeCount, BallCount);
}

	int32 StrikeCount = 0, BallCount = 0;

스트라이크와 볼이 모두 0으로 시작한다.(초기값)

  • 스트라이크 : 숫자와 위치가 모두 맞을 때
  • 볼은 : 숫자는 맞지만 위치가 다를 때

	for (int32 i = 0; i < 3; ++i)
    {
		if (InSecretNumberString[i] == InGuessNumberString[i])
		{
			StrikeCount++;
		}
    
    ...

for문으로 세 자리 숫자의 각 자리를 비교한다.
자리와 숫자가 같으면 Strike


		else
		{
			FString PlayerGuessChar = FString::Printf(TEXT("%c"), InGuessNumberString[i]);
			if (InSecretNumberString.Contains(PlayerGuessChar))
			{
				BallCount++;
			}
		}

추측한 숫자가 정답 숫자 안에 포함되어 있는지 확인한다.
자리 숫자가 다르면 Ball


	if (StrikeCount == 0 && BallCount == 0)
	{
		return TEXT("아웃");
	}

Strike도 아니고 Ball도 아니면 아웃 결과를 출력한다.


	return FString::Printf(TEXT("%d 스트라이크 %d 볼"), StrikeCount, BallCount);

Strike와 Ball이 나오면 1 스트라이크 2볼과 같이 출력한다.

2. 느낀점

간단한 게임이지만 코드로 작성했을 때 코드 일고 해석하는게 어려워 이해하기 위해 작성해보았다.
간단한 로직이지만 네트워크 환경으로 코드를 작성하니 복잡하게 느껴진다.

3. 내일 학습 할 것

9번 과제(숫자 야구 게임 만들기) 진행

profile
🕹️🎮🍱✈️📸 안녕하세요! 게임개발에 도전하고 있습니다!

0개의 댓글