2017-01-31 22 views
-1

私はPythonを初めて使用しています。私は私のラズベリーパイにIDLE(Python 2.7を使用)を使用します。チュートリアル、猫とマウスのゲームから最新のプログラムをコンパイルできませんでした。私は次のエラーを取得する:Python属性エラー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

のPython 2.7用turtle.pyだけonkey()を定義する - onkeypress()バリアントはPython 3で追加されました(:

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' 

私のコードは次のようになりますonkey()と同義語のように、onkeyrelease()と呼ばれる)

短い回答、試してみてくださいonkeypress()からに変更してください。

あなたはそのハードルを乗り越えるたら、numinput()textinput()もPythonの3のとおりです。

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)) 

ので、彼らはあまりにもに対処する必要があるかもしれません。

0

Python 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)) 
関連する問題