본문 바로가기
Programming

안드로이드 앱개발(2) - 로또 번호 생성 앱

by BTC_톰캣 2023. 7. 20.

베하

비티시 보이즈 입니다!

 

오늘은 저번 "안드로이드 앱개발(1)" 글에 이어서 동적으로 실행되는 안드로이드

앱을 만들어 보겠습니다!

 

이번글에서 만들어 볼 앱은 로또 번호 생성 앱 입니다!

 

우선 안드로이드 설치 및 환경 설정은 전 글을 참고해주세요!

https://btcd.tistory.com/1221

 

안드로이드 앱개발(1)

베하(베스핀 하이라는 뜻 입니다) 비티시 보이즈 입니다! 이번 글에서는 Android application 개발에 대해 알아 보겠습니다. 우선 안드로이드란? 안드로이드는 스마트폰, 태블릿 PC같은 터치스크린 모

btcd.tistory.com

 

 

우선 글자들이 선형으로 배치 될 수 있도록 

LinearLayout 을 사용하고
로또 번호들이 세로로 나올 수 있도록 orientation 옵션에 vertical 값을 넣고

그리고 로또 번호들이 화면 중앙에 올 수 있도록 gravity 옵션에 center값을 넣어 Layout을 구성하겠습니다.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:gravity="center"
    >


</LinearLayout>

 

위의 Layout을 구성하면 글자들이 화면 중앙에 세로로 나오게 됩니다~

로또 번호 6개가 출력된다면 아래 사진처럼 나오게 됩니다.

 

 

그리고 6개의 Textview와 Button 컴포넌트를 만들어 보겠습니다.

 

TextView에는 로또 번호가 출력 되게 될 것이며 TextView를 제어 하기위해 id값을 추가 하겠습니다.

Button은 로또 번호를 생성하는 버튼이며 Button에도 id 값을 추가 하겠습니다.

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:gravity="center"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:text="로또번호 1"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/tv_num_1"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:text="로또번호 2"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/tv_num_2"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:text="로또번호 3"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/tv_num_3"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:text="로또번호 4"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/tv_num_4"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:text="로또번호 5"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/tv_num_5"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:text="로또번호 6"
        android:textColor="#000000"
        android:textSize="20sp"
        android:textStyle="bold"
        android:id="@+id/tv_num_6"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50px"
        android:textSize="20dp"
        android:text="번호 생성"
        android:id="@+id/create_btn"
        ></Button>
</LinearLayout>

 

이렇게 되면 activity_main.xml 파일의 코드가 완성 됐으며 화면에 보일 LayOut이 완성 되었습니다.

 

그리고 실제 동작 코드를 작성하기 위해 app/java/{패키지명}/MainActivity.java

파일로 이동하여 코드를 작성 해 보겠습니다.

 

우선 랜덤한 숫자를 생성하는 함수를 만들어 보겠습니다.

//1 ~ 45 랜덤한 숫자 생성 함수
public int CreateNumber(int index) {
    Random random = new Random();
    int res_num = random.nextInt(45)+1;

    while(FindNum(res_num))
    {
        res_num = random.nextInt(45)+1;
    }
    save_num[index] = res_num;
    return res_num;
}

그리고 중복 숫자를 검사하는 함수를 만들어 보겠습니다.

//중복 검사를 위해 숫자들을 저장할 배열
Integer[] save_num = {0,0,0,0,0,0};

//중복 숫자 검사 함수
public boolean FindNum(int num){
    //중복 숫자가 있을 경우 true 반환
    for (int target: save_num) {
        if(num == target) return true;
    }
    return false;
 }

 

그럼 랜덤한 숫자를 생성하여 TextView컴포넌트의 id값을 이용하여 setText함수를 사용해
TextView에 랜덤한 로또번호를 출력하는 앱의 전체 코드입니다~

package com.example.btcapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.Random;

public class MainActivity extends AppCompatActivity {


    //중복 검사를 위해 숫자들을 저장할 배열
    Integer[] save_num = {0,0,0,0,0,0};

    //중복 숫자 검사 함수
    public boolean FindNum(int num){
        //중복 숫자가 있을 경우 true 반환
        for (int target: save_num) {
            if(num == target) return true;
        }
        return false;
    }

    //1 ~ 45 랜덤한 숫자 생성 함수
    public int CreateNumber(int index) {
        Random random = new Random();
        int res_num = random.nextInt(45)+1;

        while(FindNum(res_num))
        {
            res_num = random.nextInt(45)+1;
        }
        save_num[index] = res_num;
        return res_num;
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Lotto 번호가 출력 될 TextView
        //Layout에서 설정한 id 값을 변수에 저장
        final TextView lt_num_1 = (TextView)findViewById(R.id.tv_num_1);
        final TextView lt_num_2 = (TextView)findViewById(R.id.tv_num_2);
        final TextView lt_num_3 = (TextView)findViewById(R.id.tv_num_3);
        final TextView lt_num_4 = (TextView)findViewById(R.id.tv_num_4);
        final TextView lt_num_5 = (TextView)findViewById(R.id.tv_num_5);
        final TextView lt_num_6 = (TextView)findViewById(R.id.tv_num_6);
        //로또 번호 생성을 위한 버튼
        final Button create_btn = (Button) findViewById(R.id.create_btn);


        TextView[] textViews = new TextView[]{lt_num_1, lt_num_2,lt_num_3,lt_num_4,lt_num_5,lt_num_6};

        //Button 컴포 넌트의 클릭 리스너 함수
        //클릭시 6개의 로또 번호 생성
        create_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                for(int i=0;i<6;i++){
                    textViews[i].setText(Integer.toString(CreateNumber(i)));
                }
            }
        });
    }
}

코드를 다 작성 하였다면 안드로이드 스튜디오의 오른쪽 상단에 초록색 실행 버튼을 눌러주세요!

 

앱을 실행 시킨 초기화면 입니다~

그리고 번호생성 버튼을 누른 화면입니다~

 

 

그러면 여기까지 안드로이드 앱 프로그래밍에 대해 맛보기로 알아봤습니다!

 

'Programming' 카테고리의 다른 글

[Java] 싱글톤 패턴 구현하는 방법  (0) 2023.08.03
React란?  (0) 2023.07.24
[Vue] Vue Router  (0) 2023.07.09
[C#] .NET Winform Event 만들기 예제  (0) 2023.07.07
안드로이드 앱개발(1)  (0) 2023.07.06

댓글