전체 글
64Kotlin :: 반복문 do~while
do~while 은 기본적으로 while 과 같지만 하나, 조건문이 마지막에 온다. do{ // 조건이 참일때 이 구간을 반복한다. } while(조건) 아래 예는 변수 i가 10이 넘지 않을 때까지 코드를 반복한다. fun main(args: Array): Unit{ var i = 0; do { println(i) i++ } while(i < 10) } // 결과 : 012345678910 while 속 조건문이 참(true)일 때 블록 속 문장을 반복한다. 변수 i 는 while이 반복될 때마다 1씩 증가하고 있다. 따라서 i 가 10이 될 때 반복문이 종료된다. 하지만 조건문이 마지막에 오기 때문에 i 는 10까지 출력된다. (동일한 조건의 while문 이었으면 9까지 출력된다.) 반복문을 사용할 ..
Android/Kotlin 2020.10.21 moonsuKotlin :: 반복문 while
코틀린에서 반복문 while를 사용하는 방법이다. while 은 특정 문장을 반복할 때 사용하는 키워드이다. while (조건){ // 조건이 참일때 이 구간을 반복한다. } 아래 예는 변수 i가 10이 넘지 않을 때까지 코드를 반복한다. fun main(args: Array): Unit{ var i = 0; while(i < 10){ println(i) i++ } } // 결과 : 0123456789 while 속 조건문이 참(true)일 때 블록 속 문장을 반복한다. 변수 i 는 while이 반복될 때마다 1씩 증가하고 있다. 따라서 i 가 10이 될 때 반복문이 종료된다. 반복문을 사용할 때는 무한루프에 빠지지 않도록 주의해야 한다. fun main(args: Array): Unit{ var i =..
Android/Kotlin 2020.10.21 moonsuKotlin :: 조건문 when
when도 if와 같이 조건에 따라 문장 실행 여부를 결정한다. when은 자바의 switch~case를 대체하는 문장이다. 아래 when을 사용한 예제가 있다. fun main(args: Array): Unit { val result = 20 when (result) { result > 50 -> { println('A') } result > 40 -> { println('B') } result > 30 -> { println('C') } result > 20 -> { println('D') } else -> { println('E') } } } // 결과 : E result 값에 따라 알맞은 println() 이 호출된다. 위 모든 비교값과도 일치하지 않을 때 else 문장이 실행되며, 생략할 수 있..
Android/Kotlin 2020.10.21 moonsu세븐하츠 리뷰 :: 디펜스게임, 그 이하
세븐하츠 리뷰 (플레이타임 : 6시간 18분) 는 개발사 브로크신드리에서 개발한 디펜스RPG이다. 20년 10월 15일에 정식 출시했다. 는 북유럽 신화를 기반으로 언데드의 침략으로 전쟁에 패배... 어쨌든 이런 스토리로 인해 대부분의 몬스터, 영웅은 한번쯤은 들어볼법 한 신화에 나오는 이름들로 무장되어 있다. 하지만 아무도 관심 없다. 유저는 그저 좋은 몬스터 뽑고 더 많이 즐길 수 있으면 된다. 여러 던전, 영웅(별), 그리고 북유럽 신화가 배경이라 그런지 전차(별)를 통한 대전이 있다. (디펜스 게임에 다 있다.) 전투는 기를 모아서 영웅을 뽑고, 상대방 기지를 부수면 승리한다. 개인적으로 이런 류의 디펜스 게임은 물량이 와장창 쏟아져야 전투할 맛(보는 맛)이 난다고 생각한다. 멋드러진 영웅들이 있..
기타/게임 2020.10.21 moonsu라루나 판타지 리뷰 :: 판사님 장도연씨는 아무런 잘못이 없습니다
다른 모바일 게임을 기다리면서 가볍게 즐겨볼까 하여 사전예약을 했다. 게임 소개를 보니 라테일 느낌이 좀 나고.. 캐쥬얼하고 가볍게 즐길만한 게임이라 생각했다. 그리고 20년 10월 15일, 정식으로 서비스를 시작했다. 전혀 예상하지 못한 것들이 보였다. 전혀 생각하지 못한 모습에 당황했지만 게임의 전반적인 분위기를 보고 이내 납득했다. 사실 VIP를 보기 전, 조이스틱을 움직였을 때부터 이미 익숙한 냄새를 맡았던 것 같다. 그래도 여느 게임 답게 구색은 맞췄다. 아레나, 필드보스, 길드, 레이드, 별의 별 던전... 그냥 다른거 하자 그리고 개인적으로 이 게임의 가장 큰 특징을 꼽자면 바로 깨알같이 나오는 개그우먼 장도연. 어처구니 없는.. 웃음이 나왔다.
기타/게임 2020.10.15 moonsuKotlin :: 표현식으로 if else 사용하기
코틀린에서는 if-else문을 표현식으로도 사용할 수 있다. fun main(args: Array): Unit { val result: Int = if( 1 > 0 ) { println("큰 값은 1") 1 } else { println("큰 값은 0") 0 } println(result) } // 큰 값은 1 // 1 Int 타입의 변수 result 에 if문을 대입하고 있다. if가 참이라면 if 블록 내의 마지막 표현식인 1이 result의 값으로 반환된다. 반대로 거짓이라면 else 블록 내의 마지막 표현식인 0이 반환된다. 이 때 if 와 else 블록의 표현식은 타입이 일치해야한다. if 의 마지막 표현식 타입이 Int 였다면 else 도 마찬가지로 Int 여야 한다. 그렇다면 아래와 같이 마..
Android/Kotlin 2020.10.15 moonsuKotlin :: 문자열 안에 표현식 값 넣기
fun main(args: Array): Unit{ val a = 10 val b = 20 println("a : $a") println("b : $b") println("a + b = ${a+b}") } // a : 10 // b : 20 // a + b = 30 변수 a와 b에 각각 10과 20을 저장한다. 큰 따옴표("") 안에 있는 문자가 출력되고 $ 뒤에 변수 이름을 적으면 해당 부분은 변수 값으로 대체된다. $ 자체를 출력하고 싶다면 $ 대신 \$ 를 사용해야 한다. fun main(args: Array): Unit{ println("a : \$a") } // a : $a 일반 변수의 값이 아닌 표현식의 값을 문자열에 포함하고 싶다면 ${표현식} 의 형식을 사용한다.
Android/Kotlin 2020.10.15 moonsu상수와 리터럴
상수(constant)와 리터럴(literal)이란 무엇이고 어떻게 다를까? 1. 상수 (constant) 상수란 변하지 않는 값이다.하지만 프로그래밍을 처음 배울 땐 int 타입의 변수를 상수로 지정해 값을 변경하게 하지 못하는 예제를 주로 접해 상수는 r-value 를 지칭한다던가 숫자만 넣어야 한다는 오해를 하곤 한다. 상수는 변하지 않는 변수이다. 아래 예제와 같은 경우 final int A = 50; 상수는 변하지 않는 변수 즉, A를 지칭한다. 변수는 int, string 타입의 간단한 데이터가 올 수도 있지만 구조체, 클래스 등의 객체 값으로도 사용될 수 있다. 그래서 이러한 객체를 갖는 변수를 상수화 했을 때, 객체 내 데이터까지 변하지 않는다고 착각하는 경우가 있지만 참조한 주소를 변경할..
프로그래밍 용어 2020.10.15 moonsu안드로이드 스튜디오 :: Broadcast 에 권한 부여하기
안드로이드 스튜디오 :: Broadcast Receiver 안드로이드 스튜디오 :: Broadcast 전송하기 브로드캐스트에 특정 권한을 부여해 제한할 수 있다. 권한은 브로드캐스트 발신자, 수신자 모두 적용해 제한할 수 있다. 1. 권한을 사용해 전송하기 sendBroadcast(Intent, String) 또는 sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle) 를 호출할 때 권한 매개변수를 지정할 수 있다. 예를 들어 다음 코드는 메세지 발송 권한이 필요한 브로드캐스트를 전송한다. 더보기 sendBroadcast(new Intent("com.example.NOTIFY"), Manifest.permi..
Android/공통 2020.10.14 moonsu안드로이드 스튜디오 :: Broadcast 전송하기
안드로이드 스튜디오 :: Broadcast Receiver 브로드캐스트 전송 안드로이드 앱에서 브로드캐스트를 전송하는 방법으로 다음 세 가지를 제공한다. 1. sendBroadcast(Intent) 가장 일반적인 브로드캐스트, 순서에 상관 없이 모든 수신자에게 브로드캐스트를 전송한다. 상당히 효율적이지만 수신자가 수신한 데이터를 전파하거나 중단할 수 없다. 2. sendOrderedBroadcast(Intent, String) 한 번에 하나의 수신자에게 브로드캐스트를 전송한다. 우선순위가 높은 순으로 진행되고 우선순위가 같다면 임의의 순서를 매긴다. 3. LocalBroadcastManager.sendBroadcast 발신자와 동일한 앱에 있는 수신자에 브로드캐스트를 전달한다. 앱 간에 전송할 필요가 없..
Android/공통 2020.10.14 moonsu안드로이드 스튜디오 :: Broadcast Receiver
브로드캐스트 특정 상황에서 시스템이나 다른 앱으로 메세지를 주고 받을 수 있는 개념이 Broadcast 이다. 예를들어 기기는 재부팅 또는 충전 시작과 같은 다양한 이벤트가 발생할 때 시스템은 브로드캐스트를 전송한다. 이 때 내가 만든 앱에서 이것을 수신할 수 있다. '배터리가 15% 이하다!' 라는 시스템의 브로드캐스트 메세지를 수신받아 '절전' 상태로 변경해주는 앱을 만들 수 있다는 얘기다. 반대로 내가 메세지를 전송하는 것도 가능하다. 먼저 Broadcast 를 수신하기 위한 두 가지 방법을 소개한다. 첫째는 manifest에 선언하는것, 둘째는 context에 등록하는 것. 1. manifest 에 선언 manifest에서 다음과 같이 작성한다. (1) exported : 외부 앱이나 시스템에서 ..
Android/공통 2020.10.14 moonsu안드로이드 스튜디오 :: Broadcast 관련 인텐트 액션
본 문서는 안드로이드 개발자 가이드 를 토대로 작성되었습니다. Broadcast receiver 와 관련된 Intent action 리시버가 브로드캐스트를 받는 시점 Java XML 비행기 모드를 바꿀 때 ACTION_AIRPLANE_MODE_CHANGED android.intent.action.AIRPLANE_MODE 앱 제한이 변경될 때 ACTION_APPLICATION_RESTRICTIONS_CHANGED android.intent.action.APPLICATION_RESTRICTIONS_CHANGED 충전 등 배터리에 대한 정보가 바뀔 때 ACTION_BATTERY_CHANGED android.intent.action.BATTERY_CHANGED 배터리가 부족할 때 ACTION_BATTERY_LO..
Android/공통 2020.10.13 moonsu