Размещение нарисованных черепахами букв в Python - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в этом, но хотел попробовать Python с черепахой. Но у меня есть проблема с моим кодом, когда я говорю, чтобы курсор переместился под буквой H. Он просто выбрасывает курсор в начало, где находится H. Я хочу написать:

HAPPY
BDAY

в таком порядке. Вот код, который у меня пока есть.

import turtle
frame = turtle.Screen().bgcolor("Red")
hi = turtle.Turtle()

hi.color("Black")
hi.width (3)
hi.speed (3)

# H
hi.left(90)
hi.forward(70)
hi.penup()
hi.goto(0, 35)
hi.pendown()
hi.right(90)
hi.forward(30)
hi.penup()
hi.goto(30, 70)
hi.pendown()
hi.right(90)
hi.forward(70)

# A
hi.penup()
hi.goto(40, 0)
hi.pendown()
hi.right(200)
hi.forward(75)
hi.right(140)
hi.forward(75)
hi.penup()
hi.goto(50, 35)
hi.pendown()
hi.right(-70)
hi.forward(31)

# P
hi.penup()
hi.goto(105, 70)
hi.pendown()
hi.right(90)
hi.forward(70)
hi.penup()
hi.goto(105,35)
hi.pendown()
hi.right(275)
hi.circle(18, 200)

# PP
hi.penup()
hi.goto(140, 70)
hi.pendown()
hi.right(285)
hi.forward(70)
hi.penup()
hi.goto(140,35)
hi.pendown()
hi.right(275)
hi.circle(18, 200)

# Y
hi.penup()
hi.goto(170, 70)
hi.pendown()
hi.right(255)
hi.forward(40)
hi.right(30)
hi.forward(35)
hi.penup()
hi.goto(190, 35)
hi.pendown()
hi.right(215)
hi.forward(40)

#B
hi.penup()
hi.goto(200, 70)
hi.pendown()
hi.forward(70)

turtle.mainloop()

https://imgur.com/QFx5nub белые точки - это то место, где я хочу, чтобы слово Bday начиналось, но черепаха находится в положении, в котором находится стрелка. .

1 Ответ

0 голосов
/ 29 апреля 2020

Пока можно только догадываться и гадать. Для текста, подобного этому, полезно иметь блок фиксированного размера, в который будет вписываться каждая буква, и постоянное местоположение, в котором курсор будет находиться в этом блоке, когда начнется рисование букв. Это также помогает использовать относительное позиционирование, например forward(), а не абсолютное позиционирование, например goto(), при попытке отладки ваших писем:

from turtle import Screen, Turtle

screen = Screen()
screen.bgcolor('red')

turtle = Turtle()
turtle.width(3)

# letters are in a box 30 wide by 70 tall with 10px between
# the pen starts at the lower left of each letter box

# H
turtle.left(90)
turtle.forward(70)
turtle.backward(35)
turtle.right(90)
turtle.forward(30)
turtle.left(90)
turtle.forward(35)
turtle.backward(70)

turtle.penup()
turtle.right(90)
turtle.forward(10)
turtle.pendown()

# A
turtle.left(78)  # 77.9 degrees is rise 70 over run 15
turtle.forward(74)
turtle.right(156)
turtle.forward(37)
turtle.right(102)
turtle.forward(16)
turtle.backward(16)
turtle.left(102)
turtle.forward(37)

turtle.penup()
turtle.left(78)
turtle.forward(10)
turtle.pendown()

# P
turtle.left(90)
turtle.forward(70)
turtle.backward(35)
turtle.right(90)
turtle.forward(17.5)
turtle.circle(17.5, 180)
turtle.forward(17.5)

turtle.penup()
turtle.left(90)
turtle.forward(70)
turtle.left(90)
turtle.forward(40)
turtle.pendown()

# PP
turtle.left(90)
turtle.forward(70)
turtle.backward(35)
turtle.right(90)
turtle.forward(17.5)
turtle.circle(17.5, 180)
turtle.forward(17.5)

turtle.penup()
turtle.left(90)
turtle.forward(70)
turtle.left(90)
turtle.forward(40)
turtle.pendown()

# Y
turtle.penup()
turtle.forward(15)
turtle.pendown()
turtle.left(90)
turtle.forward(35)
turtle.left(23)  # 90 - 67 as 66.8 degrees is rise 35 over run 15
turtle.forward(38)
turtle.backward(38)
turtle.right(46)
turtle.forward(38)
turtle.backward(38)
turtle.left(23)
turtle.backward(35)

turtle.penup()
turtle.right(90)
turtle.goto(0, -75)  # 5px between lines of text
turtle.pendown()

# B
turtle.forward(17.5)
turtle.circle(17.5, 180)
turtle.forward(17.5)
turtle.right(180)
turtle.forward(17.5)
turtle.circle(17.5, 180)
turtle.forward(17.5)
turtle.left(90)
turtle.forward(70)

turtle.penup()
turtle.left(90)
turtle.forward(40)
turtle.pendown()

screen.mainloop()

enter image description here

Теперь вы можете нарисовать букву «D» в поле размером 70x30 с курсором в левом нижнем углу, указывающим вправо.

...