From 54c296d53acae19fc3e718386658d1ddac345012 Mon Sep 17 00:00:00 2001 From: panki27 Date: Wed, 18 Apr 2018 14:32:11 +0200 Subject: [PATCH] Playfield generation after first guess --- minebash.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/minebash.py b/minebash.py index ac10864..0dd1ba5 100755 --- a/minebash.py +++ b/minebash.py @@ -12,6 +12,9 @@ FLAG = -2 UNKNOWN = -3 FLAG_MINE = -4 +firstmove = False +FIELD_GENERATED = False + CURSOR_POSITION=[0,0] FIELDS_CLEARED = 0 @@ -46,24 +49,23 @@ def calculate_hint(col, row): hint = MINE return hint -def setup_playfield(w, h): +def setup_playfield(w, h, x, y): #do this only once [AFTER THE FIRST GUESS] #randomly distribute mines across the field - global playfield + global playfield, FIELD_GENERATED minesleft = MINECOUNT while minesleft > 0: for rowindex, row in enumerate(playfield): for colindex, cell in enumerate(row): + if colindex == x and rowindex == y: + continue if minesleft > 0 and playfield[colindex][rowindex] != MINE: if random.random() < 0.1: minesleft -= 1 playfield[colindex][rowindex] = MINE 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) + FIELD_GENERATED = True def gameover(win): stdscr.clear() @@ -177,7 +179,7 @@ def place_flag(x, y): playfield[y][x] = UNKNOWN def handle_input(k): - global CURSOR_POSITION + global CURSOR_POSITION, firstmove if k == curses.KEY_LEFT: if CURSOR_POSITION[0] > 0: CURSOR_POSITION[0] -=1 @@ -193,19 +195,25 @@ def handle_input(k): elif k == ord('f'): place_flag(CURSOR_POSITION[0], CURSOR_POSITION[1]) elif k == ord(' '): - hit(CURSOR_POSITION[0], CURSOR_POSITION[1]) + if not firstmove: + firstmove = True + else: + hit(CURSOR_POSITION[0], CURSOR_POSITION[1]) def main(stdscr): + stdscr.clear() setup_strings(width) #generate mines: - setup_playfield(width, height) #print_playfield(playfield) #TODO: user input while(True): print_playfield(playfield) key = stdscr.getch() handle_input(key) + if (firstmove) and not (FIELD_GENERATED): + setup_playfield(width, height, CURSOR_POSITION[0], CURSOR_POSITION[1]) + handle_input(key) check_score() stdscr.refresh() #stdscr.getkey()