오도원입니다.

건강과 행복을 위하여

Development/Kotlin

Kotlin. 소프트웨어 설계 및 실험 8주차 과제 - 주사위

오도원공육사 2020. 5. 12. 10:36
반응형
// 학번 : 201624516
// 이름 : 오도원
// 학과 : 정보컴퓨터공학부
import java.util.Random
fun main(args: Array<String>){
    var dice = Dice()
    var scoreboard = Scoreboard()
    dice.play(scoreboard)
}

// 주사위 클래스
class Dice(){
    var number : Int = 0 
    	get() {
            return field
        }
        set(value) {
            field = value
        }
    // 주사위를 굴리는 메소드
    fun roll(sb: Scoreboard) {
        var random = Random()
       	this.number = random.nextInt(10) + 1 // 1~10 사이에 점수를 생성
        sb.record(this.number) // 굴려서 나온 점수를 점수판에 기록한다.
    }
    
    // 주사위를 20번 굴리는 메소드
    fun play(sb: Scoreboard) {
        for(i in 0..19){
            this.roll(sb)
        }
    }
}

// 점수판 클래스
class Scoreboard() {
    var score : Array<Int> = Array(20, {i->0}) // 20개의 점수를 기록하는 점수 프로퍼티, 0으로 초기화
    	get() {
            return field
        }
        set(value) {
            field = value
        }
    var count : Int = 0 // 기록된 점수 개수 카운트 프로퍼티
    	get() {
            return field
        }
        set(value) {  
            field = value
        }
    var before : Int = 0 // 이전 점수 프로퍼티
    	get() {
            return field
        }
        set(value) {
            field = value
        }
    
    // 점수를 기록하는 메소드
    fun record(value:Int) {
        if (this.before == value) { // 이전 점수와 같을 경우 추가점수 10점
            this.score[this.count] = value + 10
        }else { // 그렇지 않을 경우 그대로 기록
            this.score[this.count] = value
        }
        this.before = value // 이전 점수 갱신
        this.count += 1 // 카운트 +1
        if(this.count > 19){ // 20번 기록할 경우 점수 출력
            this.print_score()
        }
    }
    
    // 20개 점수 출력하는 함수
    fun print_score() {
        println("총 20개의 점수를 출력합니다.")
        for(i in 0..count-1) { // 20개 출력
            if(i == 10) {
			    println()
            }
            if(this.score[i] > 15) { // 점수 15초과시 15로 출력
                print("<${i+1}번:15(초과)> ")
            }else {
                print("<${i+1}번:${this.score[i]}> ")
            }
        }
        println()
        println("총점 : ${this.score.sum()} / 평균 : ${this.score.sum()/this.score.size}")
        println("모든 점수를 출력하고 점수판을 초기화합니다.")
        this.score = Array(20, {i->0}) // 출력 후 점수판 초기화
        this.count = 0
        this.before = 0
     
    }
    
}

 

반응형

'Development > Kotlin' 카테고리의 다른 글

1. 코틀린의 시작  (0) 2021.04.28
Kotlin. 클래스 상속  (0) 2020.05.09
Kotlin. 클래스 생성자  (0) 2020.05.09
Kotlin. 기본적인 클래스 사용법  (0) 2020.05.09