-1

저는 Python을 처음 사용합니다. 내 나무 딸기 파이에 IDLE (Python 2.7 사용)을 사용합니다. 내 튜토리얼, 고양이 및 마우스 게임에서 최신 프로그램을 컴파일 할 수 없었습니다. 나는 다음과 같은 오류가 발생합니다 :Python 속성 오류 onkeypress

Traceback (most recent call last) : 
    File "/home/pi/pyth-prog/Python_Cat_and-mouse.py", line 47, in <module> window.onkeypress(up, "Up") 
AttributeError: '__Screen' object has no attribute 'onkeypress' 

내 코드는 다음과 같습니다

import turtle 
import time 


boxsize =200 
caught= False 
score= 0 


#function that are called keypresses 
def up(): 
    mouse.forward(10) 
    checkbound() 


def left(): 
    mouse.left(45) 


def right(): 
    mouse.right(45) 


def back(): 
    mouse.back(10) 


def quitTurtles(): 
    window.bye() 


#stop the ;ouse fro; leaving the square set by box sizes 

def checkbound(): 
    global boxsize 
    if mouse.xcor() > boxsize: 
     mouse.goto(boxsize, mouse.ycor()) 
    if mouse.xcor() < -boxsize: 
     mouse.goto(-boxsize, mouse.ycor()) 
    if mouse.ycor() > boxsize: 
     mouse.goto(mouse.xcor(), boxsize) 
    if mouse.ycor < -boxsize: 
     mouse.goto(mouse.xcor(), -boxsize) 


#Set up screen 
window=turtle.Screen() 
mouse=turtle.Turtle() 
cat=turtle.Turtle() 
mouse.penup() 
mouse.penup() 
mouse.goto(100, 100) 


#add key listeners 
window.onkeypress(up, "Up") 
window.onkeypress(left, "Left") 
window.onkeypress(right, "Right") 
window.onkeypress(back, "Down") 
window.onkeypress(quitTurtles, "Escape") 


difficulty=window.numinput("Difficulty", "Enter a difficulty from easy (1), for hard (5) ", minval=1, maxval=5) 


window.listen() 




#main loop 
#note how it changes with difficulty 




while not caught: 
    cat.setheading(cat.towards(mouse)) 
    cat.forward(8+difficulty) 


    score=score+1 
    if cat.distance(mouse) < 5: 
     caught=True 
    time.sleep(0.2-(0.01*difficulty)) 
window.textinput("GAME OVER", "Well done. You scored:"+ str(score*difficulty)) 
window.bye() 
+2

후 실행되는, 당신은 더 많은 정보를 제공해야합니다. [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)를 참조하십시오. – glibdud

+0

'window'는 여러분이 생각하는 것과 다르지만 코드를 보지 않고는 말할 수 없습니다. – zondo

+0

코드를 포함 시켰 으면 좋겠지 만 많은 코드가 필요합니다 (링크의 "최소"섹션 참조). 다른 사람들이 당신을 도울 수 있도록 돕는다면 도움받을 기회가 더 많을 것입니다. – glibdud

답변

0

I use IDLE(Using python 2.7) on my raspberry pi

파이썬 2.7의 turtle.py는 onkey() 정의 - onkeypress() 변형이 파이썬 3 (에 추가되었습니다 onkey()의 동의어 인 onkeyrelease())

짧은 대답은 onkeypress()에서로 변경하십시오..

difficulty=window.numinput("Difficulty", "Enter a difficulty from easy (1), for hard (5) ", minval=1, maxval=5) 
... 
window.textinput("GAME OVER", "Well done. You scored:"+ str(score*difficulty)) 

그래서 그들도 처리해야 할 수 있습니다 : 당신이 장애물을지나 일단

numinput()textinput() 또한 파이썬 3입니다.

0

파이썬 3.5에서 turtle을 기반으로합니다. 당신이 당신의 코드로 문제를 해결하는 도움이 필요하면

그것은 window.을 neeed하지만이되지 않습니다이 turtle.Screen()

import turtle 

# --- based on turtle in Python 3.5 --- 

import tkSimpleDialog 

def numinput(title, prompt, default=None, minval=None, maxval=None): 
    return tkSimpleDialog.askfloat(title, prompt, initialvalue=default, 
            minvalue=minval, maxvalue=maxval) 

def textinput(title, prompt): 
    return tkSimpleDialog.askstring(title, prompt) 

# --- main --- 

window = turtle.Screen() 

# doesn't need `window.` but has to be executed after `turtle.Screen()` 

difficulty = numinput("Difficulty", "Enter a difficulty from easy (1), for hard (5) ", minval=1, maxval=5) 

textinput("GAME OVER", "Well done. You scored:" + str(0))