def paste(g, fichier, x, y): g.addlayer() g.open(fichier) g.select([-1000, -1000, 2000, 2000]) g.copy() g.dellayer() g.paste(x - 1000, y - 1000, 'or')
def write(asm): binary = translateAll(asm) g.open("computer.mc") g.duplicate() g.setname("programmed", 0) g.movelayer(1, 0) g.dellayer() g.select([-25950, 1890, 450, 240]) g.cut() for i in range(len(binary)): for j in range(21): if int(binary[i][j]): g.select([-23639+i*600+j*300, 2159+i*600-j*300, 450, 240]) g.clear(0) g.paste(-23639+i*600+j*300, 2159+i*600-j*300, "or")
ref2 = [0, -60, 11, 23] ref3 = [30, -60, 23, 11] ref4 = [60, -60, 23, 11] d1 = delta * 15 + 9 d2 = 0 d3 = 9 g.open("reflecteur.mc") # 2eme reflecteur g.select(ref2) g.cut() g.run(29 + 4 * d1) g.paste(-19 - d1, 16 + d1, "or") # 3eme reflecteur g.select(ref3) g.cut() g.run(4 * d1) g.run(4 + 4 * d2) g.paste(d2 + 1 - d1, 34 + d2 + d1, "or") # 4eme reflecteur g.select(ref4) g.cut() g.run(4 * (d1 + d2)) g.run(3 + 4 * d3) g.paste(d2 + 17 - d1 + d3, 15 + d2 + d1 - d3, "or")
def Main(self): g.show("left click on a pattern to change, 'h' for help") gollyMode = False while True: event = g.getevent() if ("key" in event and "return" in event) or (gollyMode and " a " in event): gollyMode = not gollyMode if gollyMode: g.show("In golly mode") g.update() else: g.show("left click on a pattern, right click to finish") g.setrule("B3/S23") g.setalgo("HashLife") g.reset() g.update() continue if gollyMode: if " delete " in event: g.clear(0) if "click" in event and "ctrl" in event and g.getxy() != "": x, y = g.getxy().split() cell = g.getcell(int(x), int(y)) if cell >= 0 and cell <= 1: g.setcell(int(x), int(y), 1 - cell) g.update() if " c " in event and "ctrl" in event and g.getselrect() != []: g.copy() if " v " in event and "ctrl" in event and g.getxy() != "": x, y = g.getxy().split() g.paste(int(x), int(y), "or") if " space " in event: if "ctrl" in event: g.run(10) else: g.run(1) g.doevent(event) continue if "click" in event: if "left" in event: if self.ExistinCircuitHandler() == None: if self.SignalClickHandler(event) == None: g.show("left click on a pattern, h for help") elif "key" in event: if " space " in event: for i in xrange(0, 30): g.run(60) g.update() g.reset() g.update() if " a " in event: if g.getrule() == "Perrier": g.setrule("B3/S23") g.setalgo("HashLife") g.update() else: g.setrule("Perrier") for key in self.smarCells: x, y = key.split(":") g.setcell(int(x), int(y), self.smarCells[key] + 2) gollyMode = True g.show("In golly mode") g.update() if " s " in event: fname = os.path.join(g.getdir("data"), "MetadataManager.json") #self.Save(fname) if " h " in event: noteMessage = "Viewing and Selecting\n\n" noteMessage += "'left click' to chose gun or glider\n" noteMessage += "'a' to see in colors, a to go back \n" noteMessage += "'space' see ahead 1800 generations \n" noteMessage += "'enter' gollyMode, stays in the script \n" noteMessage += "\n Editing Gun \n\n" noteMessage += "'left click' to place\n" noteMessage += "'right click' to switch gun/orientation \n" noteMessage += "'delete' to delete the gun \n" noteMessage += "'left-right arrow' - one step adjustment\n" noteMessage += "\n In Golly Mode \n\n" noteMessage += "'delete' to clear selection\n" noteMessage += "'ctrl' + 'click' to draw \n" noteMessage += "'ctrl' + 'c' to copy selection \n" noteMessage += "'ctrl' + 'v' to paste in mouse location \n" noteMessage += "'space' + to run 1 generation \n" noteMessage += "'ctrl' +'space' to run 10 generations \n" g.note(noteMessage)
b_OK.remove(i) execfor = 0 for j in range(0, s * execfor): g.run(1) try: dlist = list(chunks(g.getcells(g.getrect()), 2)) mcc = min(dlist) dlist = [[x[0] - mcc[0], x[1] - mcc[1]] for x in dlist] if not(clist[j] == dlist): b_OK.remove(i) break except: b_OK.remove(i) break g.new('') g.paste(0, 0, 'or') g.select(g.getrect()) b_OK.sort() if not i in s_OK: s_OK.append(i) execfor = 1 # B0 and nontotalistic rulestrings are mutually exclusive try: g.setrule(rulestringopt('B' + ruleArr[0] + '/S' + ''.join(s_OK))) except: s_OK.remove(i) execfor = 0 for j in range(0, s * execfor): g.run(1) try: