[여러가지 시도]/코틀린 결과물

[결과물_앱] 로또번호 생성기

시간 확보러 2022. 10. 28. 22:16
728x90

처음으로 만들어본 어플 결과물이다.

이번에 만든 로또번호 생성기를 통해 매주 로또에 도전해 볼 예정이다.

 

□ 작성한 코드

package com.jeong.lotto

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.Button
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.jeong.lotto.ui.theme.LottoTheme
import kotlin.random.Random

fun Color.Companion.random() : Color {
    val red = Random.nextInt(256)
    val green = Random.nextInt(256)
    val blue = Random.nextInt(256)
    return Color(red, green, blue)
}


class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            LottoTheme {

                //데이터
                //상수

                val buttonTitle = "로또번호 생성"

                var generatedCount by remember { mutableStateOf(0)}

                var number01 by remember { mutableStateOf(0)}
                var number02 by remember { mutableStateOf(0)}
                var number03 by remember { mutableStateOf(0)}
                var number04 by remember { mutableStateOf(0)}
                var number05 by remember { mutableStateOf(0)}
                var number06 by remember { mutableStateOf(0)}
                var number07 by remember { mutableStateOf(0)}

                val lottoNumberRange = (1..45)


                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colors.background
                ) {
                   Column(horizontalAlignment = Alignment.CenterHorizontally){
                       Row(
                           modifier = Modifier
                               .fillMaxWidth()
                               .padding(all=10.dp)
                               .padding(vertical=40.dp),
                           horizontalArrangement = Arrangement.SpaceBetween
                       ){
                           LottoBall(number01)
                           LottoBall(number02)
                           LottoBall(number03)
                           LottoBall(number04)
                           LottoBall(number05)
                           LottoBall(number06)
                           LottoBall(number07)

                       }
                       Spacer(modifier = Modifier.height(150.dp))

                       Text("생성된 횟수 : $generatedCount", fontSize = 30.sp)

                       Spacer(modifier = Modifier.height(30.dp))



                       Button(onClick ={
                           number01 = lottoNumberRange.random()
                           number02 = lottoNumberRange.random()
                           number03 = lottoNumberRange.random()
                           number04 = lottoNumberRange.random()
                           number05 = lottoNumberRange.random()
                           number06 = lottoNumberRange.random()
                           number07 = lottoNumberRange.random()
                           generatedCount = generatedCount+1
                       }){
                           Text(buttonTitle, fontSize = 30.sp)
                       }
                   }
                }
            }
        }
    }
}

@Composable
fun LottoBall(number : Int){
    Box(
        modifier = Modifier
            .size(50.dp)
            .clip(CircleShape)
            .background(Color.random()),
        contentAlignment = Alignment.Center
    ){
        Text(
            number.toString(),
            fontSize = 20.sp,
            color = Color.White

        )



    }
}


@Composable
fun Greeting(name: String) {
    Text(text = "Hello $name!")
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    LottoTheme {
        Greeting("Android")
    }
}
728x90

'[여러가지 시도] > 코틀린 결과물' 카테고리의 다른 글

[결과물_앱] 챗봇앱  (0) 2022.11.12
[결과물_앱] 계산기  (0) 2022.10.31
[결과물_앱] 타이머  (0) 2022.10.29