emPYre/test.py
2022-10-17 19:17:22 +02:00

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()