2016-11-16 3 views
0

既に描画されているイメージを視覚的に移動できますか? 移動するたびに再描画する必要はありませんか? したがって、正方形をそのまま表示して、ある方向に動いてください。既に描画されているイメージを移動するPython turtle

from turtle import * 
def drawing(): 
    forward(50) 
    left(90) 
    forward(50) 
    left(90) 
    forward(50) 
    left(90) 
    forward(50) 
drawing() 
done() 
+0

タートルで移動することはできません。それを再描画する必要があります。 'Turtle'はキャンバスにオブジェクトを移動するために' move'関数を持つ 'Canvas'を使う' Tkinter'を使いますが、キャンバスにアクセスしてキャンバス上のオブジェクトにアクセスするのは難しいでしょう。 – furas

答えて

1

turtleには、すべての要素を移動する特別な機能はありません。

しかし、turtleは、Canvasオブジェクトを使用して要素を表示するtkinterを使用します。
Canvasには、表示されているすべての要素を取得して移動する機能があります。

turtleはキャンバス(get_canvas())にアクセスできますが、後でキャンバスと要素で何かを行うにはtkinterを知る必要があります。

この例では、要素を描画し、次に(300, 50)を移動します。
また、カメをクリックしてドラッグすると、すべての要素を移動できます。あなたが非で白塗りの色を使って塗りつぶされていないポリゴンをエミュレートすることができますが、あなたが移動する必要があるすべては(シンプル、満たされたポリゴンの集合体である場合

import turtle 

t = turtle.Turtle() 

# --- move all elements --- 

def move(offset_x, offset_y): 

    canvas = turtle.getcanvas() # `turtle`, not `t` 
    for element_id in canvas.find_all(): 
     canvas.move(element_id, offset_x, offset_y) 

# --- move all on draging turtle --- 

old_x = 0 
old_y = 0 

# get mouse current position 
def on_click(x, y): 
    global old_x, old_y 

    old_x = x 
    old_y = y 

# move elements 
def on_drag(x, y): 
    global old_x, old_y 

    move(x-old_x, old_y-y) 

    old_x = x 
    old_y = y 

t.onclick(on_click) 
t.ondrag(on_drag) 

# --- example --- 

# draw something 

for a in range(8): 
    for _ in range(8): 
     t.left(45) 
     t.fd(20) 
    t.right(45) 
    t.up() 
    t.fd(60) 
    t.down() 

# move 

move(300, 50) 

# --- 

turtle.done() # `turtle`, not `t` 
0

あなたはtkinterレベルにまで落とすことなく亀でそれを移動することができます白いペンの色です。)あなたは自分の形をしたカメを作り、そのカメを画面の周りに動かすことができます:

from turtle import Turtle, Screen, Shape 

screen = Screen() 

turtle = Turtle(visible=False) 
turtle.speed("fastest") 
turtle.penup() 

shape = Shape("compound") 

for octogon in range(8): 
    turtle.begin_poly() 
    for _ in range(8): 
     turtle.left(45) 
     turtle.fd(20) 
    turtle.end_poly() 
    shape.addcomponent(turtle.get_poly(), "blue", "red") 

    turtle.right(45) 
    turtle.fd(60) 

screen.register_shape("octogons", shape) 

octopus = Turtle(shape="octogons") 
octopus.penup() 
octopus.speed("slowest") 

octopus.goto(300, 200) 
octopus.goto(-200, 200) 

screen.exitonclick() 
関連する問題