]> git.sommitrealweird.co.uk Git - curses-crossword.git/blobdiff - curses-crossword.py
read crossword file name from args list
[curses-crossword.git] / curses-crossword.py
index d11568a2ebedf894e1b70216b1df5688514ef7a7..92f9b926394fa9ee8df623d348cd0715c4c2ff10 100644 (file)
@@ -4,6 +4,9 @@ import curses
 import curses.ascii
 import locale
 import codecs
+import getopt
+import os
+import sys
 
 locale.setlocale(locale.LC_ALL, '')
 code = locale.getpreferredencoding()
@@ -27,7 +30,26 @@ except:
     for number in range(0,10):
         superscript_numbers[str(number)] = str(number)
 
-crossworddata = codecs.open("g2-20090701.txt", "r", "utf-8").read()
+filename = None
+
+(options, args) = getopt.getopt(sys.argv[1:], "f:", "file=")
+
+for option in options:
+    if option[0] == "-f" or option[0] == "--file":
+        filename = option[1]
+
+if not filename and len(args) > 0:
+    filename = args[0]
+
+if not filename:
+    sys.stderr.write("No crossword file specified, exiting.\n")
+    sys.exit(0)
+
+if os.path.exists(filename) and os.path.isfile(filename):
+    crossworddata = codecs.open(filename, "r", "utf-8").read()
+else:
+    sys.stderr.write("Couldn't open file %s\n" %(filename))
+    sys.exit(0)
 
 def parsecrossword(crossworddata):
     ingrid = False
@@ -58,13 +80,13 @@ def parsecrossword(crossworddata):
                     parts = line.split()
                     question_number = int(parts[0])
                     clue = " ".join(parts[1:])
-                    crossword["across"][int(question_number)] = clue
+                    crossword["across"][int(question_number)] = clue.encode('utf-8')
             if indown:
                 if line != "":
                     parts = line.split()
                     question_number = int(parts[0])
                     clue = " ".join(parts[1:])
-                    crossword["down"][int(question_number)] = clue
+                    crossword["down"][int(question_number)] = clue.encode('utf-8')
     num_cols = len(crossword["grid"][0])
     num_rows = len(crossword["grid"])
 
@@ -178,7 +200,12 @@ def crossword(stdscr, crossworddata):
     gridx = 0
     gridy = 0
 
-    stdscr.move(1,3)
+    while crossword["grid"][gridy][gridx] == "x":
+        curx += 4
+        gridx += 1
+
+    stdscr.move(cury,curx)
+
     while 1:
         c = stdscr.getch()
         if c == curses.ascii.ESC: