Python - 键盘多龟对象

时间:2014-03-09 19:18:39

标签: python turtle-graphics

我想创建一个程序,其中Turtle对象响应按键。我可以这样做,但我似乎无法理解如何移动第二个Turtle对象,它由计算机控制,而第一个正在移动。任何帮助将不胜感激。

这是我的代码:

from turtle import *
from Tkinter import Tk
root = Tk()
root.withdraw()
turtle = Turtle()
def h1():turtle.forward(10)
def h2():turtle.left(45)
def h3():turtle.right(45)
def h4():turtle.back(10)
def h5(root=root):root.quit()
onkey(h1,"Up")
onkey(h2,"Left")
onkey(h3,"Right")
onkey(h4,"Down")
onkey(h5,"q")
listen()
root.mainloop()

2 个答案:

答案 0 :(得分:1)

在使用键w,a,s,d移动的listen()之前插入第二只乌龟:

turtle2 = Turtle()
def h11():turtle2.forward(10)
def h21():turtle2.left(45)
def h31():turtle2.right(45)
def h41():turtle2.back(10)
onkey(h11,"w")
onkey(h21,"a")
onkey(h31,"d")
onkey(h41,"s")

答案 1 :(得分:0)

  

我似乎无法理解如何移动第二个Turtle对象   由计算机控制,而第一个正在移动。

以下是您描述的一些最小代码。 Green turtle Pokey是由计算机控制的,而红龟Hokey是由用户控制的(首先点击窗口,以便听到你的击键):

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

这不是完成的代码(关闭计时器事件应该更干净,Hokey的处理程序应该在运行时锁定其他事件等)但是应该给你一个基本的想法如何去做。