import curses # Import my own libraries from state import State gamestate = State() gamestate.load() # Print (portion of the) map #def fillMap(stdscr,gamestate): # for y in range(1,height): # for x in range(1,width-3): # if y < 0 or y > gamestate.metadata['height'] or x < 0 or x > gamestate.metadata['width']: # stdscr.addstr( y-1, x-1, " ", curses.color_pair(7)) # elif gamestate.terrain[x][y] == "l": # stdscr.addstr( y-1, x-1, "+", curses.color_pair(1) ) # elif gamestate.terrain[x][y] == "w": # stdscr.addstr( y-1, x-1, ".", curses.color_pair(2) ) # elif gamestate.terrain[x][y] == "c": # stdscr.addstr( y-1, x-1, "O" ) # return stdscr # -- Initialize -- stdscr = curses.initscr() curses.noecho() curses.cbreak() stdscr.keypad(1) stdscr.notimeout(1) height, width = stdscr.getmaxyx() curses.start_color() curses.init_pair(1, curses.COLOR_GREEN, curses.COLOR_BLACK) # Neutral Land curses.init_pair(2, curses.COLOR_BLUE, curses.COLOR_BLACK) # Neutral Sea curses.init_pair(3 , curses.COLOR_RED, curses.COLOR_BLACK) # Hostile curses.init_pair(7, curses.COLOR_BLACK, curses.COLOR_BLACK) # Outside of the map # Print (portion of the) map for y in range(1,height): for x in range(1,width-3): if y < 0 or y > gamestate.metadata['height'] or x < 0 or x > gamestate.metadata['width']: stdscr.addstr( y-1, x-1, " ", curses.color_pair(7)) elif gamestate.terrain[x][y] == "l": stdscr.addstr( y-1, x-1, "+", curses.color_pair(1) ) elif gamestate.terrain[x][y] == "w": stdscr.addstr( y-1, x-1, ".", curses.color_pair(2) ) elif gamestate.terrain[x][y] == "c": stdscr.addstr( y-1, x-1, "O" ) #stdscr = fillMap(stdscr, gamestate) # Print horizontal ruler xruler = "" xrulery = 0 xrulerx = 0 if width < gamestate.metadata['width']: xrulerx = width else: xrulerx = gamestate.metadata['width'] if gamestate.metadata['height']-1 < height-1: xrulery = gamestate.metadata['height']-1 else: xrulery = height-1 for scale in range(0,100): xruler += "{:.<10}".format(scale*10) if (xrulerx - 10) - len(xruler) < 6 : xruler += str((scale+1)*10) break while len(xruler) < width-4 and len(xruler) < gamestate.metadata['width']: xruler += "." stdscr.addstr( xrulery, 0, xruler ) # Print the verticle ruler yruler = 0 yrulerx = 0 if gamestate.metadata['width'] < width-4: yrulerx = gamestate.metadata['width'] else: yrulerx = width-4 while yruler < height-1 and yruler < gamestate.metadata['height']: if yruler%5==0: yruler_text = "{: >3}".format( yruler ) stdscr.addstr( yruler, yrulerx, yruler_text ) else: stdscr.addstr( yruler, yrulerx, "{: >3}".format(".") ) yruler+=1 #stdscr.addstr( 1, 22, "a", curses.color_pair(3)) #stdscr.addstr( 5, 5, "p", curses.color_pair(3)) while True: # stay in this loop till the user presses 'q' ch = stdscr.getch() if ch == ord('q'): break stdscr.keypad(0) curses.echo() curses.nocbreak() curses.endwin()