O'Reilly logo

Kotlin Programming: The Big Nerd Ranch Guide, First Edition by David Greenhalgh, Josh Skeen

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Combat in NyetHack

Adding combat to NyetHack will put to use all that you have learned about object-oriented programming.

Each room in NyetHack will contain a monster for your hero to vanquish in the most graphic way that you know how: by nullifying it.

Add a monster property of nullable type Monster? to the Room class, and initialize it by assigning it a Goblin. Update Room’s description to let the player know whether the room has a monster to fight.

Listing 16.8  Adding a monster to each room (Room.kt)

open class Room(val name: String) {
    protected open val dangerLevel = 5
    var monster: Monster? = Goblin()

    fun description() = "Room: $name\n" +
            "Danger level: $dangerLevel\n" +
            "Creature: ${monster?.description ?: "none."}" open ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required