From 7d433d50f30aaa97fda9ddf998b76958dc7149bc Mon Sep 17 00:00:00 2001 From: panki27 Date: Tue, 17 Apr 2018 23:07:14 +0200 Subject: [PATCH] Activation off fields and really a lot of other stuff i dont remember --- minebash.py | 102 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 81 insertions(+), 21 deletions(-) diff --git a/minebash.py b/minebash.py index 51aa7f1..08e9865 100644 --- a/minebash.py +++ b/minebash.py @@ -1,11 +1,17 @@ #!/usr/bin/python -import readline, random +import readline, random, io, sys + +import curses +stdscr = curses.initscr() +curses.noecho() +curses.cbreak() NOTHING = 0 MINE = -1 FLAG = -2 UNKNOWN = -3 +CURSOR_POSITION=[0,0] width, height = 9, 9 minecount = 20 @@ -53,33 +59,87 @@ def setup_playfield(w, h): else: break #now that's done, we'll have to calculate the hint numbers - for rowindex, row in enumerate(playfield): - for colindex, cell in enumerate(row): - playfield[colindex][rowindex] = calculate_hint(colindex, rowindex) + #for rowindex, row in enumerate(playfield): + # for colindex, cell in enumerate(row): + # playfield[colindex][rowindex] = calculate_hint(colindex, rowindex) def print_playfield(playfield): - print headline - for index, row in enumerate(playfield): + currentline = 0 + stdscr.addstr(currentline, 0, headline) + currentline +=1 + #print headline + for rowindex, row in enumerate(playfield): rowstring = '|' - for cell in row: + for colindex, cell in enumerate(row): + # is the cell selected? + selected = False + if [colindex, rowindex] == CURSOR_POSITION: + rowstring += '[' + selected = True + else: + rowstring += ' ' # did we find a hint? if cell >= 0: - rowstring += '[' + str(cell) + ']|' - elif cell == UNKNOWN: - rowstring+='[#]|' - elif cell == MINE: - rowstring+='[X]|' - print rowstring - if(index < len(row)-1): - print midline - print tailline + rowstring += str(cell) + elif cell == UNKNOWN or cell == MINE: + rowstring+='#' + if selected: + rowstring += ']|' + else: + rowstring+=' |' + #print rowstring + stdscr.addstr(currentline, 0, rowstring) + currentline +=1 + if(rowindex < len(row)-1): + stdscr.addstr(currentline, 0, midline) + currentline +=1 + #print midline + stdscr.addstr(currentline, 0, tailline) + currentline +=1 + #print tailline + +def hit(x, y): + global playfield + if playfield[y][x] == UNKNOWN: + hint = calculate_hint(x, y) + playfield[y][x] = hint + +def handle_input(k): + global CURSOR_POSITION + if k == curses.KEY_LEFT: + if CURSOR_POSITION[0] > 0: + CURSOR_POSITION[0] -=1 + elif k == curses.KEY_RIGHT: + if CURSOR_POSITION[0] < width-1: + CURSOR_POSITION[0] +=1 + elif k == curses.KEY_UP: + if CURSOR_POSITION[1] > 0: + CURSOR_POSITION[1] -=1 + elif k == curses.KEY_DOWN: + if CURSOR_POSITION[1] < height-1: + CURSOR_POSITION[1] +=1 + elif k == ord(' '): + hit(CURSOR_POSITION[0], CURSOR_POSITION[1]) + + -def main(): +def main(stdscr): + stdscr.clear() setup_strings(width) - #print_playfield(playfield) - #TODO: user input #generate mines: setup_playfield(width, height) - print_playfield(playfield) + #print_playfield(playfield) + #TODO: user input + while(True): + print_playfield(playfield) + key = stdscr.getch() + handle_input(key) + stdscr.refresh() + #stdscr.getkey() if __name__ == "__main__": - main() \ No newline at end of file + curses.wrapper(main) + #finally: + curses.nocbreak() + stdscr.keypad(False) + curses.echo() + curses.endwin() \ No newline at end of file