html_contents.append ("<h2>Across clues</h2>")
html_contents.append ("<p>")
for word, clue in clues_across:
+ # clue should be: <num> - clue text (chars)
clue_str = str (self.data[word[1]][word[2]].numbered) + " - " \
- + clue
+ + clue + " (" + str (word[3]) + ")"
html_contents.append (clue_str)
html_contents.append ("<br />")
html_contents.append ("</p>")
html_contents.append ("<p>")
for word, clue in clues_down:
clue_str = str (self.data[word[1]][word[2]].numbered) + " - " \
- + clue
+ + clue + " (" + str (word[3]) + ")"
html_contents.append (clue_str)
html_contents.append ("<br />")
html_contents.append ("</p>")
if i > 0 and i < len(word) - 1:
if self.data[row+i][col-1].occupied_down is True:
raise IntersectWordException (word, len(word))
+ # if the previous column is the end of an across word
+ if (self.data[row+i][col-1].occupied_across is True and
+ self.data[row+i][col].occupied_across is False):
+ raise IntersectWordException (word, len(word))
+
# on the next column except last column
if col < len(word) - 1:
# except the first and last row check if there is any
if i > 0 and i < len(word) - 1:
if self.data[row-1][col+i].occupied_across is True:
raise IntersectWordException (word, len(word))
+ # if the previous row is the end of a down word
+ if (self.data[row-1][col+i].occupied_down is True and
+ self.data[row][col+i].occupied_down is False):
+ raise IntersectWordException (word, len(word))
+
# on a next row
if (row < (self.rows - 1)):
# except the first and last letter check if there is
self.data[row][col].reset ()
self.frozen_grid = False
+
+ # remove an across word at position
+ def remove_word_across (self, row, col):
+ # if grid is frozen don't allow removal of word
+ if self.frozen_grid is True:
+ raise FrozenGridException
+
+ word, brow, bcol, l = self.get_word_across (row, col)
+
+ # traverse from the beginning to end of the word and erase it
+ c = bcol
+ while True:
+ if self.data[brow][c].occupied_across is True:
+ self.data[brow][c].clear_across_data ()
+ else:
+ break
+ c += 1
+
+ # remove a down word at position
+ def remove_word_down (self, row, col):
+ # if grid is frozen don't allow removal of word
+ if self.frozen_grid is True:
+ raise FrozenGridException
+
+ word, brow, bcol, l = self.get_word_down (row, col)
+ # traverse from the beginn to end of the word and erase it
+ r = brow
+ while True:
+ if self.data[r][bcol].occupied_down is True:
+ self.data[r][bcol].clear_down_data ()
+ else:
+ break
+ r += 1
+
+
+