+ if c == curses.KEY_RIGHT:
+ if gridx < (len(crossword["grid"][0]) - 1):
+ gridx += 1
+ curx += 4
+ while gridx < (len(crossword["grid"][0]) -1) \
+ and crossword["grid"][gridy][gridx] == "x":
+ gridx += 1
+ curx += 4
+ while crossword["grid"][gridy][gridx] == "x":
+ gridx -= 1
+ curx -= 4
+ stdscr.move(cury, curx)
+ if c == curses.KEY_LEFT:
+ if gridx > 0:
+ curx -= 4
+ gridx -= 1
+ while gridx > 0 \
+ and crossword["grid"][gridy][gridx] == "x":
+ gridx -= 1
+ curx -= 4
+ while crossword["grid"][gridy][gridx] == "x":
+ gridx += 1
+ curx += 4
+ stdscr.move(cury, curx)
+ if c == curses.KEY_UP:
+ if gridy > 0:
+ gridy -= 1
+ cury -= 2
+ while gridy > 0 \
+ and crossword["grid"][gridy][gridx] == "x":
+ gridy -= 1
+ cury -= 2
+ while crossword["grid"][gridy][gridx] == "x":
+ gridy += 1
+ cury += 2
+ stdscr.move(cury, curx)
+ if c == curses.KEY_DOWN:
+ if gridy < (len(crossword["grid"]) - 1):
+ gridy += 1
+ cury += 2
+ while gridy < (len(crossword["grid"]) - 1) \
+ and crossword["grid"][gridy][gridx] == "x":
+ gridy += 1
+ cury += 2
+ while crossword["grid"][gridy][gridx] == "x":
+ gridy -= 1
+ cury -= 2
+ stdscr.move(cury, curx)
+ if curses.ascii.isalpha(c) or c == ord(" "):
+ stdscr.addch(cury, curx, c)
+ stdscr.move(cury, curx)
+ if c == curses.KEY_BACKSPACE or c == curses.KEY_DC:
+ stdscr.addch(cury, curx, ord(" "))
+ stdscr.move(cury, curx)
+