def draw_polygon(self, node, screen): pen = RawTurtle(screen) pen.speed(0) pen.hideturtle() pen.penup() try: linecolor = node.attrs['color'] except KeyError: linecolor = None try: fillcolor = node.attrs['fillcolor'] except KeyError: fillcolor = None if linecolor is not None: pen.pencolor(*linecolor) else: pen.pencolor(*(0, 0, 0)) polygon = node.data polygon = [self.translate_coords(screen, x) for x in polygon] points = to_tups(polygon) pen.goto(*(points[0])) pen.pendown() if fillcolor: pen.fillcolor(*fillcolor) pen.pencolor(*fillcolor) pen.begin_fill() for point in points[::-1]: pen.goto(*point) if fillcolor: pen.end_fill()
def DrawGeometry(self,_turtle: t.RawTurtle): self.angle = self.angle % 360 planes = copy.deepcopy(self.plane) p = copy.deepcopy(self.pos) a = copy.deepcopy(self.getRadAngle()) for pl in planes: vertexs = pl[0] _turtle.color(pl[1]) for i,v in enumerate(vertexs): v = np.dot(v,rotx(a[0])) v = np.dot(v,roty(a[1])) v = np.dot(v,rotz(a[2])) vertexs[i] = v + p avec = vertexs[1]-vertexs[0] bvec = vertexs[2]-vertexs[1] cross = np.cross(avec,bvec) _d = np.mean(vertexs,axis = 0) d = np.array([_d[0],_d[1],-(_d[2]+30)]) _turtle.goto(vertexs[0][0]*(vertexs[0][2]+30)/2,vertexs[0][1]*(vertexs[0][2]+30)/2) if np.dot(cross,d) > 0: _turtle.pendown() _turtle.begin_fill() for v in vertexs: _turtle.goto(v[0]*(v[2]+30)/2,v[1]*(v[2]+30)/2) _turtle.end_fill() _turtle.penup()
def draw(list_rectangles, list_squares): """ Opens a window and draws all the Rectangles and Squares using turtle module Args: list_rectangles (list): list of rectangles to draw list_squares (list): list of squares to draw """ screen = Screen() screen.setup() screen.bgcolor("black") colors = ["cyan", "red", "blue", "white", "purple", "green", "brown", "#285078"] square = RawTurtle(screen) rectangle = RawTurtle(screen) # square.speed(10) # rectangle.speed(10) for sq in list_squares: square.penup() square.home() square.color(random.choice(colors)) square.goto(sq.x, sq.y) square.pendown() square.begin_fill() i = 0 while i < 4: square.forward(sq.size) square.left(90) i += 1 square.end_fill() square.hideturtle() for rect in list_rectangles: rectangle.penup() rectangle.home() rectangle.color(random.choice(colors)) rectangle.goto(rect.x, rect.y) rectangle.pendown() i = 0 while i < 2: rectangle.forward(rect.width) rectangle.left(90) rectangle.forward(rect.height) rectangle.left(90) i += 1 rectangle.hideturtle() done()
class Board: """ Area of the screen dedicated to the connect 4 game board. """ def __init__(self,screen,corners,width,height,x,y): self.corners = corners self.screen = screen self.pen = RawTurtle(screen) self.pen.speed(8) self.width = width self.height = height self.x = x self.y = y self.spaces = [] self.draw() self.draw_spaces() def draw(self): self.pen.up() self.pen.goto(self.corners[-1]) self.pen.color("#ddd") self.pen.down() self.pen.begin_fill() for i in self.corners: self.pen.goto(i) self.pen.ht() self.pen.end_fill() return def check_winner(self,space): r, c = space.idx if self.check_row(space,r,c) or \ self.check_column(space,r,c) or \ self.check_direction(space,r,c): return True return False def check_row(self,space,r,c): if space.state*4 in "".join([str(i.state) for i in self.spaces[r]]): return True def check_column(self,space,r,c): if space.state*4 in "".join([str(i[c].state) for i in self.spaces]): return True def check_direction(self,space,r,c): direct,score = [(-1,-1),(-1,1),(1,1),(1,-1)],[0,0] for i,(x,y) in enumerate(direct): idx = 0 if i % 2 == 0 else 1 score[idx] += self.check_angle(space,r,c,x,y,(x,y)) if max(score) >= 3: return True return False def check_angle(self,space,r,c,x,y,i): if r+x >= 0 and r+x < 6 and c+y >= 0 and c+y < 7: if self.spaces[r+x][c+y].state == space.state: return 1 + self.check_diag(space,r,c,x+i[0],y+i[1],i) return 0 return 0 def animate_drop(self,space): r,c = space.idx for i in range(r): self.spaces[i][c].draw() self.spaces[i][c].remove() return def space_empty(self,space): r,c = space.idx if r == len(self.spaces)-1 or self.spaces[r+1][c].state: return space for row in range(r+1,len(self.spaces)): if self.spaces[row][c].state: return self.spaces[row-1][c] return self.spaces[len(self.spaces)-1][c] def find_space(self,x,y): for row in self.spaces: cent,rad = row[0].center, row[0].radius if y > cent[1] - rad and y < cent[1] + rad: return self.search_column(row,x) return False def search_column(self,row,x): for space in row: x2 = space.center[0] if x > x2-space.radius and x < x2 + space.radius: return space return False def draw_spaces(self): row,size = [],self.width/7 radius = (size*.9)/2 x,y = self.corners[0] for j in range(6): for i in range(7): space_x = x + (size*i) space_y = y - (size*j) center = space_x+(size/2),space_y-(size/2) color = "#643" idx = (j,i) space = Space(self,center,radius,color,idx) row.append(space) self.spaces.append(row) row = [] return
pen1.goto(0, 100) pen2.goto(0, 100) pen1.goto(0, -50) pen2.goto(0, -50) pen2.left(40) pen1.left(140) pen2.forward(100) pen1.forward(100) for side in range(185): pen2.forward(1) pen1.forward(1) pen2.left(1) pen1.right(1) # Filling the figure pen2.end_fill() pen1.end_fill() # Deleting the arrows of the pens when the figure is finished pen2.hideturtle() pen1.hideturtle() # Third and forth pen that write the sentence after the figure is finished pen3 = RawTurtle(turtle_screen) pen3.speed(0) pen3.color("deep pink") pen3.width(3) pen3.penup() pen3.goto(0, 150) pen3.pendown() pen3.write('I Love You!', font=('Courier', 40, 'bold'), align='center')
from turtle import TurtleScreen, RawTurtle, TK root = TK.Tk() cv1 = TK.Canvas(root, width=500, height=500, bg="#ddffff") cv1.pack() s1 = TurtleScreen(cv1) s1.bgcolor("orange") p = RawTurtle(s1) t = RawTurtle(s1) p.begin_fill() p.circle(60) p.end_fill() TK.mainloop()
root = TurtleScreen(canvas) turtle = RawTurtle(root, visible=False) root.bgcolor("white") turtle.color('#F09F13') turtle.pensize(4) turtle.speed(15) turtle.hideturtle() turtle.penup() turtle.setposition(70, 90) turtle.pendown() turtle.fillcolor("#F09F13") turtle.begin_fill() turtle.circle(40) turtle.end_fill() turtle.hideturtle() turtle.color('#fe7d96') turtle.pensize(4) turtle.speed(15) turtle.hideturtle() turtle.penup() turtle.setposition(15, -20) turtle.hideturtle() turtle.pendown() turtle.fillcolor("#fe7d96") turtle.begin_fill() turtle.circle(50) turtle.end_fill()