Я пытаюсь завершить окончательный проект для моего курса Python.Требования следующие:
- Использование концепций объектно-ориентированного программирования - классов, объектов и методов
- Рисование двумерной фигуры
- Разработка рекурсивных алгоритмоврисовать рекурсивные фигуры
- Написать вложенный цикл для обработки двумерной сетки
Я написал некоторый код, но у меня возникли проблемы с получением результата для отображения на экране черепахи:
import turtle
from PIL import Image
kel = turtle.Turtle()
class Draw_pattern(object):
def __init__(self,posx,posy,size):
self.posx = posx
self.posy = posy
self.size = size
def draw_grid(self,initx, inity):
# Drawing grid
kel.penup()
kel.color("black")
for i in range(7):
kel.goto(self.posx, self.posy)
kel.pendown()
kel.forward(self.size*6)
self.posy = self.posy+self.size;
self.posx = initx;
kel.penup()
self.posx = initx;
self.posy = inity;
kel.left(90)
for i in range(7):
kel.goto(self.posx, self.posy)
kel.pendown()
kel.forward(self.size*6)
self.posx = self.posx+self.size;
self.posy = inity;
kel.penup()
def draw_shape(self,initx, inity):
self.posx = initx;
self.posy = inity;
# Drawing yellow portion
kel.penup()
kel.goto(self.posx, self.posy)
kel.pendown()
kel.fillcolor("yellow")
kel.begin_fill()
kel.goto(self.posx, self.posy+self.size*6)
kel.goto(self.posx+self.size*6, self.posy+self.size*6)
kel.goto(self.posx+self.size*6, self.posy)
kel.goto(self.posx, self.posy)
kel.end_fill()
# Drawing red portion
kel.penup()
kel.goto(self.posx, self.posy+self.size*2)
kel.pendown()
kel.fillcolor("red")
kel.begin_fill()
kel.goto(self.posx+self.size, self.posy+self.size*3)
kel.goto(self.posx, self.posy+self.size*4)
kel.goto(self.posx+self.size*2, self.posy+self.size*4)
kel.goto(self.posx+self.size*2, self.posy+self.size*6)
kel.goto(self.posx+self.size*3, self.posy+self.size*5)
kel.goto(self.posx+self.size*4, self.posy+self.size*6)
kel.goto(self.posx+self.size*4, self.posy+self.size*4)
kel.goto(self.posx+self.size*6, self.posy+self.size*4)
kel.goto(self.posx+self.size*5, self.posy+self.size*3)
kel.goto(self.posx+self.size*6, self.posy+self.size*2)
kel.goto(self.posx+self.size*4, self.posy+self.size*2)
kel.goto(self.posx+self.size*4, self.posy)
kel.goto(self.posx+self.size*3, self.posy+self.size)
kel.goto(self.posx+self.size*2, self.posy)
kel.goto(self.posx+self.size*2, self.posy+self.size*2)
kel.goto(self.posx, self.posy+self.size*2)
kel.end_fill()
# recursive function to draw repeating shape
def repeat_shape(self,intx, inty):
if intx>=3 | inty>=3:
return
else:
self.draw_shape(intx*180, inty*180)
kel.right(90)
self.repeat_shape(intx+1,inty)
self.repeat_shape(intx,inty+1)
class image_play(object):
def __init__(self,im_name):
self.im_name = im_name
def rgb_to_gray_image(self):
im = Image.open(self.im_name)
im = im.convert('LA')
# editing pixels of image to white
def loop_over_image(self):
im = Image.open(self.im_name)
width, height = im.size
# nested loop over all pixels of image
for i in range(width):
for j in range(height):
im[i][j] = 255;
kel.speed("fastest")
# object of class Draw_pattern
obj = Draw_pattern(0,0,30)
obj.draw_grid(0,0)
obj.repeat_shape(0,0)
AttributeErrorTraceback (most recent call last)
<ipython-input-14-8b7bbac27093> in <module>
103 obj = Draw_pattern(0,0,30)
104 obj.draw_grid(0,0)
--> 105 obj.repeat_shape(0,0)
AttributeError: 'Draw_pattern' object has no attribute 'repeat_shape'