refactor some ugly code

This commit is contained in:
Niles Rogoff 2017-03-18 11:46:16 -04:00
parent 8a93a60ee5
commit 5929241217
No known key found for this signature in database
GPG Key ID: B78B908F23430F80
1 changed files with 19 additions and 16 deletions

View File

@ -17,7 +17,16 @@ import tkinter
import tkinter.messagebox
#import traceback
# Functions
def PrintBoard(final = False):
def is_out_of_bounds(x, y):
return x == -1 or x == MaxX or y == -1 or y == MaxY
def get_surrounding(x, y):
result = []
for i in [x+1,y],[x+1,y+1],[x+1,y-1],[x-1,y],[x-1,y+1],[x-1,y-1],[x,y+1],[x,y-1]: # For each of the 8 surrounding cells
if not is_out_of_bounds(*i):
result.append(i)
return result
def displayBoard(final = False):
global master
# Print the header
if TotalMarked > NumMines:
@ -64,21 +73,17 @@ def reveal(x,y,manual = False):
master[x][y][2] = 1 # Reveal it
if master[x][y][0] == 1: # If it's a mine
tkinter.messagebox.showinfo("Game over","Game over! Better luck next time")
PrintBoard(True)
displayBoard(True)
return False
surroundingMarkedMines = 0
for i in [x+1,y],[x+1,y+1],[x+1,y-1],[x-1,y],[x-1,y+1],[x-1,y-1],[x,y+1],[x,y-1]: # For each of the 8 surrounding cells
if i[0] == -1 or i[0] == MaxX or i[1] == -1 or i[1] == MaxY:
continue
for i in get_surrounding(x, y):
if master[i[0]][i[1]][3] == 1: # If they are marked
surroundingMarkedMines += 1 # Increase surroundingMarkedMines by 1
if surroundingMarkedMines == master[x][y][1]: # If surroundingMarkedMines is equal to the number being displayed
for i in [x+1,y],[x+1,y+1],[x+1,y-1],[x-1,y],[x-1,y+1],[x-1,y-1],[x,y+1],[x,y-1]: # For each of the 8 surrounding cells
if i[0] == -1 or i[0] == MaxX or i[1] == -1 or i[1] == MaxY:
continue
for i in get_surrounding(x, y):
if master[i[0]][i[1]][3] == 0: # If that cell has not been marked
reveal(i[0],i[1]) # Reveal that square
PrintBoard()
displayBoard()
def mark(x,y):
global TotalMarked
if master[x][y][2] == 1:
@ -90,7 +95,7 @@ def mark(x,y):
else:
TotalMarked -= 1
master[x][y][3] = 0
PrintBoard()
displayBoard()
def StartGame():
global master, MaxX, MaxY, NumMines, TimerStart
while(True):
@ -151,16 +156,14 @@ def StartGame():
for x in range(0,MaxX):
for y in range(0,MaxY):
numberToStore = 0
for i in [x+1,y],[x+1,y+1],[x+1,y-1],[x-1,y],[x-1,y+1],[x-1,y-1],[x,y+1],[x,y-1]:
if i[0] == -1 or i[0] == MaxX or i[1] == -1 or i[1] == MaxY:
continue
for i in get_surrounding(x, y):
if master[i[0]][i[1]][0] == 1:
numberToStore += 1
master[x][y][1] = numberToStore
#window.bind("<Button-3>",mark)
reveal(StartingX,StartingY) # Reveal it
PrintBoard()
displayBoard()
def CheckIfGameOver():
# Check if the game is over here
TotalRevealedTiles = 0
@ -170,7 +173,7 @@ def CheckIfGameOver():
TotalRevealedTiles += 1
if TotalRevealedTiles == MaxX*MaxY - NumMines:
tkinter.messagebox.showinfo("Woohoo","You win! All mines found" + "\n\n" + "Your time: " + str(int(time.time() - TimerStart)))
PrintBoard(True)
displayBoard(True)
MarkedCorrect = 0
MarkedIncorrect = 0
for x in range(0,MaxX):
@ -182,7 +185,7 @@ def CheckIfGameOver():
MarkedIncorrect += 1
if MarkedCorrect == NumMines and MarkedIncorrect == 0:
tkinter.messagebox.showinfo("Woohoo","You win! All mines found" + "\n\n" + "Your time: " + str(int(time.time() - TimerStart)))
PrintBoard(True)
displayBoard(True)
# Variables