반응형
// 학번 : 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 |