본문 바로가기
Android App/App Examples

[App Examples] 로또 번호 추천 앱 만들기 #01 - Random Function 활용하기(Kotlin)

by Henry Cho 2021. 8. 16.
728x90

로또 번호 추천 앱 만들기 #01 - Random Function 활용하기(Kotlin)


포스트 난이도: HOO_Middle

<난이도 참고 포스트>

https://whoishoo.tistory.com/notice/161

 

[Notice] 포스트 난이도에 대한 설명

안녕하세요, HOOAI의 Henry입니다. Bro들의 질문에 대한 내용을 우선적으로 포스팅이 되다 보니 각각의 포스트에 대한 난이도가 달라서 난이도에 대한 부분을 작성하면 좋겠다는 의견을 들었습니다

whoishoo.tistory.com


#Read Me

코틀린 기반으로 로또 번호를 추첨해주는 애플리케이션을 시리즈 포스트를 통해 살펴보려고 한다.

첫 번째 포스트로 랜덤 함수를 활용하여 기본적인 랜덤 숫자를 나타내 주는 앱을 만들어보았다.

버튼 클릭으로 7개의 숫자가 랜덤으로 생성되지만 중복된 숫자가 나올 수도 있다.

아래 코드 블럭에서 코틀린과 XML 코드를 살펴볼 수 있다.

코드 라이센스라이선스 규정은 HOOAI 공통 라이선스 규정을 따른다.


# MainActivity.kt

package com.example.hooaitest

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    /*
    Activity 활성화 기본 코드
    고정값, 반복 사용
     */
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    // 랜덤 버튼 선언, 생성
        val rollButton: Button = findViewById(R.id.randomNumbers)
        rollButton.setOnClickListener {
            lotteryNumbers()
        }
    }

    /*
    랜덤 숫자 설정
    같은 숫자 나올 수 있음.
     */
    private fun lotteryNumbers() {
        // Create new Dice object with 6 sides and roll it
        val lotteryNum = lotteryRandomNumber1(45)
        val rollNum1 = lotteryNum.roll()
        
        val lotteryNum2 = lotteryRandomNumber2(45)
        val rollNum2 = lotteryNum2.roll()

        val lotteryNum3 = lotteryRandomNumber3(45)
        val rollNum3 = lotteryNum3.roll()

        val lotteryNum4 = lotteryRandomNumber4(45)
        val rollNum4 = lotteryNum4.roll()

        val lotteryNum5 = lotteryRandomNumber5(45)
        val rollNum5 = lotteryNum5.roll()

        val lotteryNum6 = lotteryRandomNumber6(45)
        val rollNum6 = lotteryNum6.roll()

        val lotteryNum7 = lotteryRandomNumber7(45)
        val rollNum7 = lotteryNum7.roll()

        val hyphen = "-"

        // Update the screen with the dice roll
        val resultTextView: TextView = findViewById(R.id.textView)
        resultTextView.text = (rollNum1.toString() + hyphen + rollNum2.toString() + hyphen + rollNum3.toString()
                + hyphen + rollNum4.toString() + hyphen + rollNum5.toString() + hyphen + rollNum6.toString()
                + hyphen + rollNum7.toString())
    }
}

/*
 랜덤 숫자 클래스 선언
 */
class lotteryRandomNumber1 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

class lotteryRandomNumber2 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

class lotteryRandomNumber3 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

class lotteryRandomNumber4 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

class lotteryRandomNumber5 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

class lotteryRandomNumber6 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

class lotteryRandomNumber7 (private val numSides: Int) {


    fun roll(): Int {
        return (1..numSides).random()
    }
}

 

# activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:textAlignment="center"
    tools:context=".MainActivity"
    android:background="#C277D3">

    <TextView
        android:id="@+id/textView"
        android:layout_width="340dp"
        android:layout_height="190dp"
        android:text="\nClick the Button \n\n then you can get \n\n lucky numbers."
        android:textAlignment="center"
        android:textColor="#FFFFFF"
        android:textSize="25sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.492"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.195" />

    <Button
        android:id="@+id/randomNumbers"
        android:layout_width="150dp"
        android:layout_height="70dp"
        android:text="Random Lottery Number"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView"
        app:layout_constraintVertical_bias="0.275" />

</androidx.constraintlayout.widget.ConstraintLayout>

# In conculsion, 3줄 요약

1. 시리즈 포스트를 통해 로또 추첨 애플리케이션 예제를 만들어 본다.

2. 랜덤 함수를 활용한 초기 단계의 예제 코드이다.

3. 현재 예제 코드에서 중복된 숫자가 나올 수 있는 문제가 있다.


 

728x90

댓글