X-Git-Url: https://git.sommitrealweird.co.uk/curses-crossword.git/blobdiff_plain/a7519a0456f7f937e3c724f422b2a49ccbdf19b6..63cdf0aacdd38a6a5d14f8e142288e75a6fad0d1:/curses-crossword.py diff --git a/curses-crossword.py b/curses-crossword.py index 5554f30..d11568a 100644 --- a/curses-crossword.py +++ b/curses-crossword.py @@ -1,6 +1,7 @@ #!/usr/bin/python import curses +import curses.ascii import locale import codecs @@ -156,10 +157,86 @@ def crossword(stdscr, crossworddata): curx += 4 curx -= 1 stdscr.addch(cury, curx, curses.ACS_LRCORNER) + # draw the clues in + cury = (len(crossword["grid"]) * 2) + 1 + curx = 0 + stdscr.addstr(cury, curx, "Across") + cury += 1 + for cluenumber in crossword["across"].keys(): + stdscr.addstr(cury, curx, "%3s: %s" %(str(cluenumber), crossword["across"][cluenumber])) + cury += 1 + + cury += 1 + stdscr.addstr(cury, curx, "Down") + cury += 1 + for cluenumber in crossword["down"].keys(): + stdscr.addstr(cury, curx, "%3s: %s" %(str(cluenumber), crossword["down"][cluenumber])) + cury += 1 + + curx = 3 + cury = 1 + gridx = 0 + gridy = 0 + + stdscr.move(1,3) while 1: c = stdscr.getch() - if c == ord('q'): + if c == curses.ascii.ESC: break + 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) + curses.wrapper(crossword, crossworddata) -print parsecrossword(crossworddata)