def runrecording(): # reset the checkboxes inframe.reset() anigrid.delete(ALL) recd = open("record.txt") ngrid = [] # get the rows and columns from the first line layout = recd.readline().split(" ") rows = int(layout[0]) cols = int(layout[1]) for line in recd: # decode the line decode = "" for a in line: if a == '0': space = "0"*int(a) decode+=space else: decode+=a ngrid = cagrid(rows, cols, 0, 0 ,0 , decode) anigrid.after(100, PrintGrid(ngrid)) if inframe.interrupt(): break recd.close()
def startrun(): """ Start the simulation """ # catch errors try: time1 = time.time() inframe.reset() # set grid size, get the values from the entry boxes # reset the checkboxes rows = int(inframe.rows()) cols = int(inframe.columns()) empty = float(inframe.empty()) lions = float(inframe.lions()) antelopes = float(inframe.antelopes()) grid = cagrid(rows, cols, empty, lions, antelopes, False) # enter how many generations it should run, if nothing is entered # gen stays -1 and the generations loop runs indefinately gen = -1 run = inframe.generations() if run: gen = int(run) # print the initial grid PrintGrid(grid) # record the initial grid firstRecording(grid) # run the generation stop = 0 ext = False # the generation runs until "gen" or indefinately # and while the user has not pressed stop while stop!=gen and not ext: grid = Generation.run(grid, inframe.features(), inframe.recording()) # the canvas is only changed after a period of time anigrid.after(100, PrintGrid(grid)) # increment the loop counter stop+=1 # check whether the stop button has been pressed ext = inframe.interrupt() finished(grid) time2 = time.time() print (time2-time1) # display an error message box except ValueError: tkMessageBox.showerror(title = "Error", message = "Please enter only numbers") except IndexError: tkMessageBox.showerror(title = "Error", message = "Please enter positive numbers") except TclError: pass except Exception, e: print e tkMessageBox.showerror(title = "Error", message = "Unknown error:\nPlease try again")