자습서: 일치하는 게임 WinForms 앱에 메시지 표시
플레이어가 숨겨진 아이콘 쌍을 맞추는 매칭 게임을 만드는 4개의 튜토리얼 시리즈입니다.
이 자습서에서는 일치하는 쌍을 계속 표시하고 플레이어가 승리할 때 축하 메시지를 표시하도록 일치 게임을 수정합니다.
이 자습서에서는 다음 방법을 알아봅니다.
- 쌍이 보이게 유지하세요.
- 플레이어가 이겼는지 확인합니다.
- 다른 기능을 사용해 보세요.
필수 구성 요소
이 자습서는 다음 이전 자습서를 기반으로 합니다.
쌍 표시 유지
플레이어가 쌍을 맞추면, 게임은 firstClicked
과 secondClicked
참조 변수를 사용하는 레이블을 더 이상 추적하지 않도록 다시 설정되어야 합니다.
일치하는 두 레이블의 색을 다시 설정해서는 안 됩니다.
이러한 레이블은 계속 표시됩니다.
-
if
이벤트 처리기 메서드에 다음label_Click()
문을 추가합니다. 타이머를 시작하는 문 바로 위에 코드의 끝 부분에 배치합니다.
// If the player gets this far, the timer isn't
// running and firstClicked isn't null,
// so this must be the second icon the player clicked
// Set its color to black
secondClicked = clickedLabel;
secondClicked.ForeColor = Color.Black;
// If the player clicked two matching icons, keep them
// black and reset firstClicked and secondClicked
// so the player can click another icon
if (firstClicked.Text == secondClicked.Text)
{
firstClicked = null;
secondClicked = null;
return;
}
// If the player gets this far, the player
// clicked two different icons, so start the
// timer (which will wait three quarters of
// a second, and then hide the icons)
timer1.Start();
}
}
if
문은 플레이어가 선택하는 첫 번째 레이블의 아이콘이 두 번째 레이블의 아이콘과 같은지 여부를 확인합니다.
아이콘이 같으면 프로그램에서 세 개의 문을 실행합니다.
처음 두 문은 firstClicked
및 secondClicked
참조 변수를 다시 설정합니다.
더 이상 레이블을 추적하지 않습니다.
세 번째 문은 메서드의 나머지 문을 실행하지 않고 건너뛰는 return
문입니다.
- 프로그램을 실행한 다음 양식에서 사각형 선택을 시작합니다.
일치하지 않는 쌍을 선택하면 타이머의 Tick 이벤트가 트리거됩니다. 두 아이콘이 모두 사라집니다.
일치하는 쌍을 선택하면 새 if
문이 실행됩니다.
return 문을 사용하면 메서드가 타이머를 시작하는 코드를 건너뜁니다.
아이콘은 계속 표시됩니다.
플레이어가 이겼는지 확인
재미있는 게임을 만들었습니다. 플레이어가 승리하면 게임이 종료됩니다. 이 섹션에서는 플레이어가 이겼는지 여부를 확인하는 메서드를 추가합니다.
-
CheckForWinner()
이벤트 처리기 아래 코드의 맨 아래에timer1_Tick()
메서드를 추가합니다.
/// <summary>
/// Check every icon to see if it is matched, by
/// comparing its foreground color to its background color.
/// If all of the icons are matched, the player wins
/// </summary>
private void CheckForWinner()
{
// Go through all of the labels in the TableLayoutPanel,
// checking each one to see if its icon is matched
foreach (Control control in tableLayoutPanel1.Controls)
{
Label iconLabel = control as Label;
if (iconLabel != null)
{
if (iconLabel.ForeColor == iconLabel.BackColor)
return;
}
}
// If the loop didn’t return, it didn't find
// any unmatched icons
// That means the user won. Show a message and close the form
MessageBox.Show("You matched all the icons!", "Congratulations");
Close();
}
이 메서드는 C#의 다른 foreach
루프 또는 Visual Basic의 For Each
루프를 사용하여 TableLayoutPanel각 레이블을 통과합니다.
각 레이블의 아이콘 색을 확인하여 배경과 일치하는지 확인합니다.
색이 일치하면 아이콘이 보이지 않고, 플레이어는 아직 모든 나머지 아이콘을 맞추지 못했습니다.
이 경우 프로그램은 return
문을 사용하여 메서드의 나머지 부분을 건너뜁니다.
루프가 return
문을 실행하지 않고 모든 레이블을 통과하는 경우 폼의 모든 아이콘이 일치했음을 의미합니다.
이 프로그램은 MessageBox 표시하여 플레이어가 승리를 축하한 다음 Close()
메서드를 호출하여 게임을 종료합니다.
- 레이블의 Click 이벤트 처리기가 새
CheckForWinner()
메서드를 호출하도록 합니다.
// If the player gets this far, the timer isn't
// running and firstClicked isn't null,
// so this must be the second icon the player clicked
// Set its color to black
secondClicked = clickedLabel;
secondClicked.ForeColor = Color.Black;
// Check to see if the player won
CheckForWinner();
// If the player clicked two matching icons, keep them
// black and reset firstClicked and secondClicked
// so the player can click another icon
if (firstClicked.Text == secondClicked.Text)
{
firstClicked = null;
secondClicked = null;
return;
}
프로그램에서 플레이어가 선택한 두 번째 아이콘을 표시한 직후 우승자를 확인해야 합니다. 선택한 두 번째 아이콘의 색을 설정한 줄을 찾은 다음 해당 줄 바로 다음에 CheckForWinner()
메서드를 호출합니다.
프로그램을 저장하고 실행합니다. 게임을 플레이하고 모든 아이콘을 일치합니다. 승리하면 프로그램에 축하 메시지가 표시됩니다.
확인 을 선택하면 매칭 게임이 닫힙니다.
다른 기능 사용해 보기
매칭 게임이 완성되었습니다. 더 많은 기능을 추가하여 이 게임을 더 도전적이고 재미있게 만들 수 있습니다. 다음은 몇 가지 옵션입니다.
아이콘과 색상을 사용자가 선택한 것으로 바꾸세요.
레이블의 ForeColor 속성을 확인해 보세요.
플레이어가 승리하는 데 걸리는 시간을 추적하는 게임 타이머를 추가합니다.
레이블을 추가하여 양식에 경과된 시간을 표시할 수 있습니다. TableLayoutPanel 위에 배치합니다. 폼에 다른 타이머를 추가하여 시간을 추적합니다. 코드를 사용하여 플레이어가 게임을 시작할 때 타이머를 시작하고 마지막 두 아이콘과 일치한 후 타이머를 중지합니다.
플레이어가 일치를 발견하면 소리를 추가하고, 플레이어가 일치하지 않는 두 개의 아이콘을 발견할 때 또 다른 소리를, 프로그램이 아이콘을 다시 숨길 때 세 번째 소리를 추가합니다.
소리를 재생하려면 System.Media 네임스페이스를 사용할 수 있습니다. 자세한 내용은 Windows Forms 앱(C#)에서 소리를 재생하는 방법 또는 Visual Basic에서 오디오를 재생하는 방법을 참조하세요.
보드를 더 크게 만들어 게임을 더 어렵게 만듭니다.
TableLayoutPanel에 행과 열을 추가하는 것 이상의 작업을 수행해야 합니다. 또한 만드는 아이콘의 수도 고려해야 합니다.
플레이어가 응답하기에 너무 느린 경우 첫 번째 아이콘을 숨김으로써 게임을 더 어렵게 만듭니다.
다음 단계
축하합니다! 이 자습서 시리즈를 완료했습니다. Visual Studio IDE에서 이러한 프로그래밍 및 디자인 작업을 수행했습니다.
- 목록에 저장된 개체(예: 아이콘)
- C# 또는 Visual Basic의 루프를 사용하여 목록을 반복합니다.
- 참조 변수를 사용하여 상태 추적
- 여러 개체의 이벤트에 응답하는 이벤트 처리기를 빌드했습니다.
- 이벤트를 카운트다운하고 발생시키는 타이머가 추가되었습니다.
Windows Forms 디자이너에 대해 자세히 알아보려면 이 문서로 진행하세요.