Как я могу самостоятельно передвигать 2 объекта в черепахе? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть два объекта черепахи, gamer и bot. Я контролирую gamer с помощью мыши. Я хочу, чтобы в то же время я управлял им, bot мог двигаться самостоятельно. Возможно ли это?

import turtle as t
gamer = t.Turtle()
bot = t.Turtle()

...
...

def move_gamer(x, y):

    if gamer.xcor() < -bc_x or gamer.ycor() < -bc_y or gamer.xcor() > bc_x or gamer.ycor() > bc_y:
        screen.done()

    gamer.ondrag(None)
    gamer.goto(x, y)
    gamer.ondrag(move_gamer)


def move_bot():
    bot.forward(10)


def ondrag_event(x, y):
    move_gamer(x, y)
    move_bot()

gamer.ondrag(ondrag_event)
screen.mainloop()

1 Ответ

0 голосов
/ 25 февраля 2020

Это должно примерно сделать то, что вы описываете. Одна черепаха контролируется пользователем, другая работает по таймеру и движется (в основном) независимо:

from turtle import Screen, Turtle

CURSOR_SIZE = 20

bc_x, bc_y = 400, 400

def move_gamer(x, y):
    gamer.ondrag(None)

    if  -bc_x/2 < gamer.xcor() < bc_x/2 and -bc_y/2 < gamer.ycor() < bc_y/2:
        gamer.goto(x, y)
        gamer.ondrag(move_gamer)

def move_bot():
    bot.setheading(bot.towards(gamer))
    bot.forward(10)
    screen.ontimer(move_bot, 100)

def ondrag_event(x, y):
    move_gamer(x, y)
    move_bot()

screen = Screen()

box = Turtle('square')
box.color('pink')
box.shapesize(bc_y / CURSOR_SIZE, bc_x / CURSOR_SIZE)

gamer = Turtle('circle')
gamer.penup()
gamer.goto(bc_x/3, bc_y/3)

bot = Turtle('turtle')
bot.penup()
bot.goto(-bc_x/3, -bc_y/3)

gamer.ondrag(move_gamer)

move_bot()

screen.mainloop()

Я бросил дополнительную черепаху, чтобы очертить арену - это можно сделать другими способами.

...