110 lines
2.9 KiB
Python
110 lines
2.9 KiB
Python
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()
|