import java.util.*
object Main {
fun main(args: Array<String>) {
val mercedes = Mercedes()
val ferrari = Ferrari()
val bmw = BMW()
while (true) {
mercedes.go(Random().nextInt(10))
ferrari.go(Random().nextInt(10))
bmw.go(Random().nextInt(10))
println(mercedes.name + ":" + mercedes.position)
println(ferrari.name + ":" + ferrari.position)
println(bmw.name + ":" + bmw.position)
if (mercedes.position >= 200) {
println("The winner is:" + mercedes.name)
break
}
if (ferrari.position >= 200) {
println("The winner is:" + ferrari.name)
break
}
if (bmw.position >= 200) {
println("The winner is:" + bmw.name)
break
}
}
}
internal open class RacingCar {
var position = 0
}
internal interface Run {
fun go(distance: Int)
}
internal class Mercedes : RacingCar(), Run {
var name = "Mercedes"
override fun go(distance: Int) {
position += distance
}
}
internal class Ferrari : RacingCar(), Run {
var name = "Ferrari"
override fun go(distance: Int) {
position += distance
}
}
internal class BMW : RacingCar(), Run {
var name = "BMW"
override fun go(distance: Int) {
position += distance
}
}
}