2단계: 난수 더하기 문제 만들기
퀴즈에는 수학 문제가 필요합니다.퀴즈에서 같은 문제를 반복하면 재미가 없기 때문에 난수를 포함할 수 있습니다.문제를 채우고 카운트다운 타이머를 시작하는 **StartTheQuiz()**라는 메서드를 추가합니다.이 단계에서는 난수 더하기 문제를 추가합니다.이외의 다른 수학 문제와 카운트다운 타이머는 이 자습서의 이후 단계에서 추가합니다.
자습서 2에서는 미로 게임을 위한 SoundPlayer를 여러 개 만들었습니다.수학 퀴즈의 경우에도 여러 개의 SoundPlayer를 만들지만 SoundPlayer 클래스 대신 Random 클래스를 사용합니다.
난수 더하기 문제를 만들려면
다음과 같은 new 문을 사용하여 Random 개체를 만듭니다.
Public Class Form1 ' Create a Random object to generate random numbers. Private randomizer As New Random
public partial class Form1 : Form { // Create a Random object to generate random numbers. Random randomizer = new Random();
이제 Random 개체가 폼에 추가되고 이름이 randomizer로 지정되었습니다.
[!참고]
미로 자습서에서는 new 문을 사용하여 두 개의 SoundPlayer 구성 요소를 만들었습니다.이 자습서에서도 비슷한 방식으로 작업하지만Random이 SoundPlayer와 달리 구성 요소도 아니고 컨트롤도 아니기 때문에 구성 요소나 컨트롤이 아닌개체로 불립니다.이전에 한 번쯤 들어보았을 개체의 의미에 대해서는 이후의 몇몇 자습서에서 자세히 설명합니다.지금은 프로그램에서 new 문을 사용하여 개체라고 하는 단추, 레이블, 패널, OpenFileDialog, ColorDialog, SoundPlayer, Random, 폼 등의 항목을 만드는 경우만 알면 됩니다.이러한 개체의 작동 방식에 대해서는 이후의 자습서에서 자세히 설명합니다.
이제 폼을 시작하면 새 Random 개체가 만들어지고 이름이 randomizer로 지정됩니다.SoundPlayer와 마찬가지로 메서드로 이동하고 randomizer와 점(.)을 차례로 입력하면 호출할 수 있는 Random 개체의 메서드가 모두 표시된 IntelliSense 창이 열립니다.Next() 메서드를 사용하는 방법은 다음과 같습니다.
Next 메서드
**random.Next(50)**를 호출하면 0에서 49 사이의 난수가 생성됩니다.
이제 곧 답을 확인하는 메서드를 빌드하게 되므로 프로그램에서는 문제를 위해 선택한 숫자를 기억해야 합니다.randomizer라는 Random 개체를 추가할 때처럼 다음과 같이 addend1이라는 정수와 addend2라는 정수를 폼에 추가합니다. 정수는 Visual C#에서는 int라고 하고 Visual Basic에서는 Integer라고 합니다.
' Create a Random object to generate random numbers. Private randomizer As New Random ' These Integers will store the numbers ' for the addition problem. Private addend1 As Integer Private addend2 As Integer
// Create a Random object to generate random numbers. Random randomizer = new Random(); // These ints will store the numbers // for the addition problem. int addend1; int addend2;
[!참고]
int(Integer)는 양수 또는 음수 값을 저장하는 데 사용되며,-2147483648에서 2147483647 사이의 아무 숫자나 포함할 수 있습니다.int(Integer)를 사용하면 정수만 저장할 수 있고 소수는 저장할 수 없습니다.
다음으로 Random 개체의 Next() 메서드를 사용하여 두 개의 숫자를 선택하고 이 두 숫자를 레이블에 배치하는 **StartTheQuiz()**라는 메서드를 추가합니다.이 메서드는 모든 문제를 채우고 타이머를 시작한 다음 주석을 추가합니다.다음과 같이 표시됩니다.
''' <summary> ''' Start the quiz by filling in all of the problems ''' and starting the timer. ''' </summary> ''' <remarks></remarks> Public Sub StartTheQuiz() ' Fill in the addition problem. addend1 = randomizer.Next(51) addend2 = randomizer.Next(51) plusLeftLabel.Text = addend1.ToString() plusRightLabel.Text = addend2.ToString() sum.Value = 0 End Sub
/// <summary> /// Start the quiz by filling in all of the problems /// and starting the timer. /// </summary> public void StartTheQuiz() { // Fill in the addition problem. addend1 = randomizer.Next(51); addend2 = randomizer.Next(51); plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString(); sum.Value = 0; }
[!참고]
이때 randomizer.Next(51)가 호출되는데,50이 아니라 51이 사용된 이유는 두 숫자가 0에서 100 사이의 답에 추가되기 때문입니다.Next() 메서드에 50을 전달하면 0에서 49 사이의 숫자가 선택되므로 가능한 가장 높은 답은 100이 아니라 98입니다.이 메서드의 처음 두 문을 실행하고 나면 두 개의 int(Integer)인 addend1과 addend2에 각각 0에서 50 사이의 난수가 포함됩니다.
이러한 문을 자세히 살펴봅니다.
plusLeftLabel.Text = addend1.ToString() plusRightLabel.Text = addend2.ToString()
plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString();
이러한 문은 두 개의 plus 레이블인 plusLeftLabel과 plusRightLabel의 Text 속성을 설정하여 레이블에서 두 개의 난수를 표시하도록 합니다.Label 컨트롤은 텍스트만 표시하고 숫자를 표시하지 않으므로 int(Integer)의 ToString() 메서드를 사용하여 이러한 난수를 텍스트로 변환해야 합니다. 프로그래밍에서 string은 텍스트를 의미합니다.
시작 단추를 사용하여 퀴즈를 시작하려면 Windows Forms 디자이너로 이동하고 단추를 두 번 클릭하여 Click 이벤트를 추가한 후다음 두 문을 추가합니다.
Private Sub startButton_Click() Handles startButton.Click StartTheQuiz() startButton.Enabled = False End Sub
private void startButton_Click(object sender, EventArgs e) { StartTheQuiz(); startButton.Enabled = false; }
첫 번째 명령문의 용도 알고: 새 호출 StartTheQuiz() 메서드가 있습니다.두 번째 문은 설정 하는 startButton 컨트롤 사용 속성을 False.그러면 사용자가 클릭할 수 없도록 단추가 비활성화됩니다.따라서 사용자는 시작 단추를 한 번만 클릭할 수 있습니다.그 후에는 단추가 흐리게 표시되고 사용할 수 없게 되므로 시간이 다 되기 전에 퀴즈를 종료하거나 프로그램을 닫아야 합니다.
이제 프로그램을 저장하고 실행합니다.시작 단추를 클릭합니다.다음 그림과 같이 난수 더하기 문제가 나타납니다.
난수 더하기 문제
계속하거나 검토하려면
다음 자습서 단계로 이동하려면 3단계: 카운트다운 타이머 추가를 참조하십시오.
이전 자습서 단계로 돌아가려면 1단계: 프로젝트 만들기 및 폼에 레이블 추가를 참조하십시오.