def GrayscaleImage(): gw = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT) image = GImage(IMAGE_FILENAME) gw.add(image, (gw.getWidth() - IMAGE_SEP) / 2 - image.getWidth(), (gw.getHeight() - image.getHeight()) / 2) grayscale = createGrayscaleImage(image) gw.add(grayscale, (gw.getWidth() + IMAGE_SEP) / 2, (gw.getHeight() - image.getHeight()) / 2)
def Pacman(): def bodyAnimation(): def step(): nonlocal d_ang arc.move(dx, 0) START = arc.getStartAngle() SWEEP = arc.getSweepAngle() if START == abs(d_ang): d_ang *= -1 if SWEEP == SWEEP_ANGLE: d_ang *= -1 arc.setStartAngle(START + d_ang) arc.setSweepAngle(SWEEP - 2 * d_ang) if arc.getX() > gw.getWidth() - d: timer.stop() d_ang = (360 - (SWEEP_ANGLE + START_ANGLE)) / M_STEPS timer = gw.createTimer(step, TIME_STEP) timer.setRepeats(True) timer.start() gw = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT) dx = (gw.getWidth() - d) / N_STEPS arc = GArc(0, 0, d, d, START_ANGLE, SWEEP_ANGLE) arc.setFilled(True) arc.setFillColor('yellow') gw.add(arc, 5, (GWINDOW_HEIGHT / 2) - (d / 2)) bodyAnimation()
def CreateMaze(): g = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT) maze = Maze(MAZE_ROWS, MAZE_COLS, SQUARE_SIZE) x = (g.getWidth() - maze.getWidth()) / 2 y = (g.getHeight() - maze.getHeight()) / 2 createRandomMaze(maze) g.add(maze, x, y)
def tester(): sideLen = 100 print( "How many sides do you want your regular polygon to have? Enter a positive integer." ) iPut = int(input()) gw = GWindow(sideLen * 3, sideLen * 3) gr = GRegularPolygon(iPut, 30) gw.add(gr, gw.getWidth() / 2, gw.getHeight() / 2)
def CreateMaze2(): g = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT) maze = Maze(MAZE_ROWS, MAZE_COLS, SQUARE_SIZE) x = (g.getWidth() - maze.getWidth()) / 2 y = (g.getHeight() - maze.getHeight()) / 2 #createRandomMaze(maze) #g.add(maze, x, y) #g.setInterval(g.add(wall.setColor("Black")), 2000) walls = maze.getWalls() random.shuffle(walls) squares = maze.getSquares() for square in squares: square.setColor(randomColor()) for wall in walls: updateMaze(maze, wall, g)
def Kindergarten(): gw = GWindow(GWINDOW_WIDTH,GWINDOW_HEIGHT) x0 = (gw.getWidth() - N_COLUMNS * SQUARE_SIZE) / 2 y0 = (gw.getHeight()- N_ROWS * SQUARE_SIZE) / 2 for row in range(N_ROWS): for col in range(N_COLUMNS): x = x0 + col * SQUARE_SIZE y = y0 + row * SQUARE_SIZE if row % 4 == 0: sq = GRect(x, y, SQUARE_SIZE, SQUARE_SIZE) sq.setFilled((row + col) % 2 != 0) gw.add(sq) elif row % 2 != 0: sq = GRect(x + ((1/3) * SQUARE_SIZE), y, SQUARE_SIZE, SQUARE_SIZE) sq.setFilled((row + col) % 2 != 0) gw.add(sq) else: sq = GRect(x + ((1/2) * SQUARE_SIZE), y, SQUARE_SIZE, SQUARE_SIZE) sq.setFilled((row + col) % 2 != 0) gw.add(sq) end_sq = GRect(x0, y0 + row * SQUARE_SIZE, SQUARE_SIZE * (1/2), SQUARE_SIZE) end_sq.setFilled(True) gw.add(end_sq) line = GLine(x0, y, x0 + N_COLUMNS * SQUARE_SIZE, y) line.setColor('darkgrey') width = line.getWidth() line.setLineWidth(width * 2) gw.add(line) rect = GRect(x0 + SQUARE_SIZE * N_COLUMNS, y0, SQUARE_SIZE * .5, y0 + SQUARE_SIZE * N_ROWS) rect.setFilled(True) rect.setColor('white') gw.add(rect) for i in range(2): line = GLine(x0 + (i * SQUARE_SIZE * N_COLUMNS), y0, x0 + (i * SQUARE_SIZE * N_COLUMNS), y0 + (SQUARE_SIZE * N_ROWS)) line.setColor('darkgrey') gw.add(line) end = GLine(x0, y0 + N_ROWS * SQUARE_SIZE, x0 + N_COLUMNS * SQUARE_SIZE, y0 + N_ROWS * SQUARE_SIZE) end.setColor('darkgrey') gw.add(end)
def Swirl(): gw = GWindow(GW_WIDTH,GW_HEIGHT) allFlowers=[] theta=0 steps=0 angleNumber=4 diamondAngle=THETA[3] limChanger=0 stepChanger=10 angularOffset=(.5*diamondAngle) aOchanger=0 def setUp():#sets up scene nonlocal allFlowers,theta,diamondAngle,angularOffset lim=GW_WIDTH*2 while(lim>=1): flower=drawFlowerz(lim,theta,diamondAngle) gw.add(flower,MIDX,MIDY) theta+= angularOffset lim= changeLim(lim) allFlowers.append(flower) def changeDiamondAngle():#changes the number of diamonds, or the number of colors nonlocal diamondAngle,angleNumber,angularOffset angleNumber+=1 if angleNumber>len(THETA)-1: angleNumber=0 diamondAngle=THETA[angleNumber] angularOffset=(.5*diamondAngle) def click(e): buttonPressed=gw2.getElementAt(e.getX(),e.getY()) if buttonPressed==changeAngleButton: changeDiamondAngle() if buttonPressed==changeSpaceOffsetButton: changeSpace() if buttonPressed==changeAngularOffsetButton: changeAngularOff() def changeAngularOff():#changes angular offset of each flower with respect to the previous nonlocal diamondAngle,angularOffset,aOchanger aOchanger+=1 if aOchanger>2: aOchanger=0 if aOchanger==0: angularOffset=(.5*diamondAngle) if aOchanger==1: angularOffset=(.75*diamondAngle) if aOchanger==2: angularOffset=(2*diamondAngle) def step(): nonlocal allFlowers,theta,steps,diamondAngle,stepChanger,angularOffset for i in allFlowers: gw.remove(i) allFlowers.clear() lim=GW_WIDTH*2 steps+=stepChanger theta=0+(steps) while(lim>=1): flower=drawFlowerz(lim,theta,diamondAngle) gw.add(flower,MIDX,MIDY) theta+= angularOffset lim= changeLim(lim) allFlowers.append(flower) def changeSpace(): nonlocal limChanger limChanger+=1 def changeLim(lim): #changes space offset between each flower nonlocal limChanger,stepChanger if limChanger>=4: limChanger=0 if limChanger==0: stepChanger=10 return ((.5* lim)/cos((radians(.5*diamondAngle)))) if limChanger==1: stepChanger=30 return lim-60 if limChanger==2: stepChanger=20 return lim-100 if limChanger==3: stepChanger=40 return lim-40 setUp() gw2=GWindow(GW_WIDTH,100) gw.setInterval(step,TIME_STEP) gw2.addEventListener("click",click) space=gw2.getWidth()//4 changeAngleButton=createButton("Change Number of Colors") #changes the number of diamonds changeSpaceOffsetButton=createButton("Change Space Offset")#changes the space between each flower changeAngularOffsetButton=createButton("Change Angular Offset")#changes offset of each flower with respect to the previous gw2.add(changeAngleButton,space,gw2.getHeight()//2) gw2.add(changeSpaceOffsetButton,space*2,gw2.getHeight()//2) gw2.add(changeAngularOffsetButton,space*3,gw2.getHeight()//2)
def DrawHexagon(): gw = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT) hexagon = createHexagon(HEXAGON_SIDE) gw.add(hexagon, gw.getWidth() / 2, gw.getHeight() / 2)
def TestSierpinskiTriangle(): gw = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT) triangle = GSierpinskiTriangle(100, 1) gw.add(triangle, gw.getWidth() / 2, gw.getHeight() / 2)