colossal cave wip
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user