Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Hacksaar
Haxotel
Commits
220b7e3e
Commit
220b7e3e
authored
Jul 31, 2014
by
Constantin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
labyrinth class
parent
44af3105
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
65 additions
and
13 deletions
+65
-13
labyrinth.py
labyrinth.py
+65
-0
readlab.py
readlab.py
+0
-13
No files found.
labyrinth.py
0 → 100644
View file @
220b7e3e
# class for the labyrinth
from
enum
import
Enum
class
Labyrinth
:
class
GroundType
(
Enum
):
FLOOR
=
1
WALL
=
2
class
Field
:
def
__init__
(
self
,
groundtype
,
column
,
row
,
labyrinth
):
# please only read from these members
self
.
groundtype
=
groundtype
self
.
column
=
column
self
.
row
=
row
self
.
labyrinth
=
labyrinth
# the following usually change
self
.
things
=
[]
# list of things/players on this field
def
_removeThing
(
self
,
thing
):
self
.
things
.
remove
(
thing
)
def
_addThing
(
self
,
thing
):
assert
self
.
things
.
count
(
thing
)
==
0
assert
self
.
groundtype
!=
Labyrinth
.
GroundType
.
WALL
self
.
things
.
append
(
thing
)
def
toString
(
self
):
# always starts with there is/there are
if
self
.
groundtype
==
Labyrinth
.
GroundType
.
WALL
:
return
"there is a wall"
else
:
if
len
(
self
.
things
)
==
0
:
return
"there is nothing"
elif
len
(
self
.
things
)
==
1
:
return
"there is "
+
self
.
things
[
0
].
toString
()
else
:
return
"there are "
+
(
", "
.
join
([
x
.
toString
()
for
x
in
self
.
things
[:
-
1
]]))
+
" and "
+
self
.
things
[
-
1
].
toString
()
# constructor for a completely read labyrinth
def
__init__
(
self
,
width
=
None
,
height
=
None
,
stream
=
None
):
if
width
is
not
None
:
# empty labyrinth of given size
assert
height
is
not
None
assert
stream
is
None
self
.
tiles
=
[[
Labyrinth
.
Field
(
GroundType
.
FLOOR
,
col
,
row
,
self
)
for
col
in
range
(
width
)]
for
row
in
range
(
height
)]
elif
height
is
not
None
:
assert
False
# width None, height not
elif
stream
is
not
None
:
self
.
tiles
=
self
.
_readlab
(
stream
)
# function for reading a labyrinth from a file
def
_readlab
(
self
,
stream
):
tiles
=
[]
for
rownum
,
line
in
enumerate
(
stream
):
row
=
[]
for
colnum
,
char
in
enumerate
(
line
):
if
char
in
[
' '
,
'0'
]:
row
.
append
(
Labyrinth
.
Field
(
GroundType
.
FLOOR
,
colnum
,
rownum
,
self
))
elif
char
in
[
'W'
,
'w'
,
'#'
,
'1'
]:
row
.
append
(
Labyrinth
.
Field
(
GroundType
.
WALL
,
colnum
,
rownum
,
self
))
tiles
.
append
(
row
)
return
tiles
def
onThingMoved
(
self
,
thing
,
oldField
,
newField
):
assert
oldField
.
labyrinth
==
self
assert
newField
.
labyrinth
==
self
oldField
.
_removeThing
(
thing
)
newField
.
_addThing
(
thing
)
\ No newline at end of file
readlab.py
deleted
100644 → 0
View file @
44af3105
# function for reading a labyrinth
def
readlab
(
stream
):
field
=
[]
for
line
in
stream
:
row
=
[]
for
char
in
line
:
if
char
in
[
' '
,
'0'
]:
row
.
append
(
' '
)
elif
char
in
[
'W'
,
'w'
,
'#'
,
'1'
]:
row
.
append
(
'W'
)
field
.
append
(
row
)
return
field
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment