2017-10-21 188 views
1

我試圖找到一種方法,當我按住一個鍵時,玩家會不斷移動,或者只是讓玩家不斷向前移動,只是龜圖形,(我確實有pygame中還安裝)Python,Turtle Graphics,鍵綁定

import turtle 
from turtle import * 

#Setup Screen 
wn = turtle.Screen() 
wn.setup(700,700) 
wn.title("white") 
wn.bgcolor("black") 

#Create Player 
player = turtle.Turtle() 
player.penup() 
player.shape("triangle") 
player.color("white") 

def forward(): 
    player.forward(20) 

def lef(): 
    player.left(90) 

def forward(): 
    player.right(90) 

onkey(forward,"Up") 
onkey(left,"Left") 
onkey(right,"Right") 

listen() 

回答

0

我建議你閱讀this post on repeating key events並首先確定您的操作系統是否提供了關鍵的重複,你是否可以/需要來調整和/或如何將其關閉,以實現自己的。該鏈接包含用於在龜中實現自己的關鍵重複行爲的代碼。

我返工下面的代碼和鍵重複對我很好,因爲我的操作系統(OSX)實現重複按鍵:

from turtle import Turtle, Screen 

# Setup Screen 
wn = Screen() 
wn.setup(700, 700) 
wn.title('white') 
wn.bgcolor('black') 

# Create Player 
player = Turtle('triangle') 
player.speed('fastest') 
player.color('white') 
player.penup() 

def forward(): 
    player.forward(20) 

def left(): 
    player.left(90) 

def right(): 
    player.right(90) 

wn.onkey(forward, 'Up') 
wn.onkey(left, 'Left') 
wn.onkey(right, 'Right') 

wn.listen() 
wn.mainloop() 

在OSX,我可以控制的速率(並且將其關閉)在系統偏好設置的鍵盤面板。看看你的操作系統提供了什麼。

一些編程注意事項:避免兩種不同的方式導入相同的模塊,這總是會導致混淆。如果您發現在高重複率的鍵盤事件之間發生干擾,請爲所有三個事件處理程序考慮以下事項:

def forward(): 
    wn.onkey(None, 'Up') # disable event in handler 
    player.forward(20) 
    wn.onkey(forward, 'Up') # reenable event