728x90

1. 구성

랜덤 버튼을 통하여 0~9까지 총 10개의 숫자를 버튼 누를때 마다 랜덤으로 출력되며,

리셋 버튼을 눌러 초기화를 시켜줍니다.

 

2. 진행

MainPage.xaml

<Page
    x:Class="App4.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App4"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid Margin="0,0,2,0">
        <Button Name="btnRandom" Content="Random Numbers" 
      Margin="290,430,0,0" RenderTransformOrigin="0.437,0.002" 
      Click="btnRand_Click" VerticalAlignment="Top"/>
        <ListBox Name="lstRand" Height="295" Margin="290,104,405,0" 
      VerticalAlignment="Top"/>
        <Button Content="Reset" Margin="511,430,0,0" VerticalAlignment="Top" 
      Height="32" RenderTransformOrigin="0.522,-0.162" Click="btnReset_Click"/>

    </Grid>
</Page>

 

MainPage.xaml.cs

public sealed partial class MainPage : Page
    {
        Random r = new Random();
        int[] check = new int[10]; //new int가 아닌 int만 작성시, "잘 못된 식의 항'int'입니다" 메세지뜬다. 그 이유는 new  동적으로 할당 된 메모리를 담당.
                                   //new 오른쪽에 선언 된 변수에 반환된다. 숫자 10개를 입력 받는다. 입력 받는 값은 동적 값이다.(프로그램 실행 할 때마다 변경되는 값)
                                   //정수 배열 생성, 초기값 0 할당됨, 랜던값 : 10개
        List<int> lstRandom = new List<int>(); //List :: 배열과 동일한 역활을 한다. List<자료형> 변수명 형태로 선언하고, 객체라서 new 연산자 작성 필수!! 

        public MainPage()
        {
            this.InitializeComponent();
        }

        private void btnRand_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                int v = r.Next(10); //Next(10) :: 문자 또는 문자열을 공백을 기준으로 한단어 또는 한문자씩 입력 받는다. //NextLine(10) :: 문자 또는 문장 한라인 전체를 입력 받는다.
                while (RndCheck(v) == false) //While 문은 false면 반복한다. //생성된 랜덤값은 RndCheck() 메서드로 보내서 처음 나온 값인지 체크하여 처음 나온 값이라면 lstRandom에 추가한다.
                    v = r.Next(10);
                lstRandom.Add(v); //Add(i) :: Add는 추가적으로 선택 해야 할 때 사용 합니다. 추가로 i요소를 선택 합니다.
            }

            foreach (var i in lstRandom) //foreacg는 https://blockdmask.tistory.com/313 설명 참고
                lstRand.Items.Add(i); //Items :: lstRand의 항목을 가져옵니다.

            btnRandom.IsEnabled = false; //IsEnabled :: 이 요소를 사용자 인터페이스에서 사용 할 수 있는지 여부를 나타내는 값을 가져오거나 설정 합니다.                                         
        }

        private bool RndCheck(int v) //check[v]의 값이 0이면  true를, 1이면 false를 리턴한다.
        {
            if (check[v] == 0)
            {
                check[v] = 1;
                return true;
            }
            else
                return false;
        }

        private void btnReset_Click(object sender, RoutedEventArgs e) //Reset 버튼이 클릭되었을 때 실행되는 이벤트 처리 메서드, 리스트박스를 지워주고,  check[] 배열과 리스트  lstRandom을 초기화한다다.
        {
            lstRand.Items.Clear(); //Clear() :: 요소 모두 제거 // Itme을 통하여 lstRand의 항목을 가지고와 Clear()으로 지운다.
            for (int i = 0; i < 10; i++)
                check[i] = 0;
            lstRandom.Clear();
            btnRandom.IsEnabled = true;
        }
    }

 

3. 결과

728x90

+ Recent posts