[b]class[/b] room[teal]:[/teal] [gray]# base room class[/gray]
floor[teal]=[/teal]position[teal]=-[/teal][purple]1[/purple]
[b]def[/b] [COLOR=darkgoldenrod]move[/color][teal]([/teal]self[teal],[/teal]direction[teal]):[/teal]
self[teal].[/teal]position[teal]+=[/teal]direction
[b]class[/b] [COLOR=darkgoldenrod]traproom[/color][teal]([/teal]room[teal]):[/teal] [gray]# room subclass with altered behavior[/gray]
[b]def[/b] [COLOR=darkgoldenrod]move[/color][teal]([/teal]self[teal],[/teal]direction[teal]):[/teal]
self[teal].[/teal]floor[teal]-=.[/teal][purple]1[/purple]
room[teal].[/teal][COLOR=darkgoldenrod]move[/color][teal]([/teal]self[teal],[/teal]direction[teal])[/teal]
[b]def[/b] [COLOR=darkgoldenrod]createobject[/color][teal]([/teal]name[teal],[/teal]clas[teal],[/teal]floor[teal]):[/teal] [gray]# function to create a room of any (sub)class[/gray]
new[teal]=[/teal][COLOR=darkgoldenrod]globals[/color][teal]()[[/teal]clas[teal]]()[/teal]
new[teal].[/teal]name[teal]=[/teal]name
new[teal].[/teal]floor[teal]=[/teal]floor
[b]return[/b] new
building[teal]={}[/teal]
building[teal][[/teal][green][i]'start'[/i][/green][teal]]=[/teal][COLOR=darkgoldenrod]createobject[/color][teal]([/teal][green][i]'start'[/i][/green][teal],[/teal][green][i]'room'[/i][/green][teal],[/teal][purple]1[/purple][teal])[/teal]
building[teal][[/teal][green][i]'pool'[/i][/green][teal]]=[/teal] [COLOR=darkgoldenrod]createobject[/color][teal]([/teal][green][i]'pool'[/i][/green][teal],[/teal][green][i]'room'[/i][/green][teal],[/teal][purple]0[/purple][teal])[/teal]
building[teal][[/teal][green][i]'trap'[/i][/green][teal]]=[/teal] [COLOR=darkgoldenrod]createobject[/color][teal]([/teal][green][i]'trap'[/i][/green][teal],[/teal][green][i]'traproom'[/i][/green][teal],[/teal][purple]1[/purple][teal])[/teal]