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 ...

Get Kotlin Programming: The Big Nerd Ranch Guide, First Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.