colossal cave wip

This commit is contained in:
Dmitry Jemerov
2011-05-30 21:51:16 +04:00
parent 0a1161f5c1
commit 5413bebd33
+36 -12
View File
@@ -1,30 +1,54 @@
namespace ColossalCave; namespace ColossalCave;
import java.util.*
import java.io.* import java.io.*
class World() { class World() {
class Room { class Room(val name: String) {
public abstract val name: String
public val west: Room? get() = null public val west: Room? get() = null
public val east: Room? get() = null public val east: Room? get() = null
public val world: World get() = this@World
} }
public val atEndOfRoad: Room public val items = new ArrayList<Item>
public val atHillInRoad: Room
class AtEndOfRoad(): Room { class Item(val name: String, var room: Room) {
public val name: String = "At End of Road" {
items.add(this)
}
}
fun describeRoom(room: Room) {
System.out?.println(room.name)
for(val anItem: Any? in items) {
val item = anItem as Item
if (item.room === room) {
System.out?.println("You see " + item.name)
}
}
}
public val atEndOfRoad = new AtEndOfRoad()
public val atHillInRoad = new AtHillInRoad()
public val insideBuilding = new InsideBuilding()
public val brassLantern = new BrassLantern()
class AtEndOfRoad(): Room("At End of Road") {
public val west: Room? get() = atHillInRoad public val west: Room? get() = atHillInRoad
public val east: Room? get() = insideBuilding
} }
class AtHillInRoad(): Room { class AtHillInRoad(): Room("At Hill in Road") {
public val name: String = "At Hill in Road"
public val east: Room? get() = atEndOfRoad public val east: Room? get() = atEndOfRoad
} }
{ class InsideBuilding(): Room("Inside Building") {
atEndOfRoad = new AtEndOfRoad() public val west: Room? get() = atHillInRoad
atHillInRoad = new AtHillInRoad() }
class BrassLantern(): Item("Brass Lantern", insideBuilding) {
} }
fun startRoom() = atEndOfRoad fun startRoom() = atEndOfRoad
@@ -51,7 +75,7 @@ class MoveCommand: Command {
return return
} }
p.room = room as World.Room p.room = room as World.Room
System.out?.println(p.room.name) room?.world.describeRoom(p.room)
} }
} }