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
seltsam. 'return game()' in der Fehlermeldung, aber in Ihrem Code 'return game' (letzteres ist korrekt, der erste versucht das Objekt aufzurufen!) –