July 2018
Intermediate to advanced
400 pages
12h 14m
English
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 ...