2017-03-01 2 views
0

Ich lerne derzeit, Kivy mit Python zu verwenden. Ich folge dieser Anleitung von einem einfachen Pong-SpielTyper Fehler in Kivy beim Ausführen eines einfachen Pong Tutorials

https://kivy.org/docs/tutorials/pong.html

Schaffung Und wenn ich das Teil erreichen, wo ich bin versucht, den Ball zu animieren. Ich habe den Code genau wie das Tutorial geschrieben. Ich benutze F5, um das Programm von IDLE zu laufen und ich bekomme eine

return game() 
Type Error: 'PongGame' object is not callable 

Nachricht in dem interaktiv Shell und das Fenster des Spiels selbst gefriert. Irgendwelche Gedanken darüber, wie das zu beheben ist? Vielen Dank im Voraus

Hier ist der Code I (genau wie das Tutorial) schrieb: -

Code für main.py

from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.properties import NumericProperty, ReferenceListProperty,\ 
ObjectProperty 
from kivy.vector import Vector 
from kivy.clock import Clock 
from random import randint 


class PongBall(Widget): 
    velocity_x = NumericProperty(0) 
    velocity_y = NumericProperty(0) 
    velocity = ReferenceListProperty(velocity_x, velocity_y) 

    def move(self): 
     self.pos = Vector(*self.velocity) + self.pos 


class PongGame(Widget): 
    ball = ObjectProperty(None) 

    def serve_ball(self): 
     self.ball.center = self.center 
     self.ball.velocity = Vector(4, 0).rotate(randint(0, 360)) 

    def update(self, dt): 
     self.ball.move() 

     # bounce off top and bottom 
     if (self.ball.y < 0) or (self.ball.top > self.height): 
      self.ball.velocity_y *= -1 

     # bounce off left and right 
     if (self.ball.x < 0) or (self.ball.right > self.width): 
      self.ball.velocity_x *= -1 


class PongApp(App): 
    def build(self): 
     game = PongGame() 
     game.serve_ball() 
     Clock.schedule_interval(game.update, 1.0/60.0) 
     return game 


if __name__ == '__main__': 
    PongApp().run() 

Code für pong.kv

#:kivy 1.0.9 

<PongBall>: 
    size: 50, 50 
canvas: 
    Ellipse: 
     pos: self.pos 
     size: self.size   

<PongGame>: 
    ball: pong_ball 

    canvas: 
     Rectangle: 
      pos: self.center_x-5, 0 
      size: 10, self.height 

    Label: 
     font_size: 70 
     center_x: root.width/4 
     top: root.top - 50 
     text: "0" 

    Label: 
     font_size: 70 
     center_x: root.width * 3/4 
     top: root.top - 50 
     text: "0" 

    PongBall: 
     id: pong_ball 
     center: self.parent.center 
+0

seltsam. 'return game()' in der Fehlermeldung, aber in Ihrem Code 'return game' (letzteres ist korrekt, der erste versucht das Objekt aufzurufen!) –

Antwort

Verwandte Themen