Киви падает.Не знаю почему - PullRequest
0 голосов
/ 08 декабря 2018

Во-первых, я знаю, что это не конкретно, но сейчас я не могу понять, почему, поэтому я буду редактировать вопрос, когда у меня будет причина.Извините!.

Я начинаю с Kivy, и у меня много вопросов, но в этом случае у меня даже нет сообщения об ошибке!

Вот код, это простоадаптация учебника Pong Game, но с использованием только одного файла .py (без файла .kv):

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
from kivy.graphics import Color, Ellipse, Line, Rectangle
from kivy.core.window import Window
from kivy.uix.label import Label
from kivy.graphics.instructions import InstructionGroup
from kivy.uix.gridlayout import GridLayout

class PongBall(Widget):
    def __init__(self):
        self.id = "ball"
        velocity_x = NumericProperty(0)
        velocity_y = NumericProperty(0)
        velocity = ReferenceListProperty(velocity_x, velocity_y)
        self.canvas = Ellipse(pos=(Window.width*0.5, Window.height*0.5), size=(50,50), Color=(1.0, 1.0, 0.5))
        #self.canvas.add(Ellipse(pos=(width*0.5, height*0.5), size=(50,50), Color=(1.0, 1.0, 0.5)))#This way doesn't works

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

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


class PongGame(Widget):
    def __init__(self):
        mainLayout = GridLayout(cols=1)
        ball = PongBall()
        ball.id = "pong_ball"
        ball.center = Window.center
#        mainLayout.add_widget(Rectangle(pos=(Window.width*0.5, 0), size=(10, Window.height)))#Unresearched error.
        mainLayout.add_widget(Label(id="playerOneScore", font_size=70, center_x = Window.width*0.25, top=Window.height-50, text="0"))
        mainLayout.add_widget(Label(id="playerTwoScore", font_size=70, center_x = Window.width*0.75, top=Window.height-50, text="0"))
        mainLayout.add_widget(ball)
        print "Hello"
        ball.serve_ball()

    def update(self, dt):
        print "updated!"
        ball.move()

        # bounce off top and bottom
        if (self.ball.y < 0) or (self.ball.top > self.heightt):
            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()
        print "game created!"
        Clock.schedule_interval(game.update, 1.0 / 60.0)#Clock statement neverminds for the error.
        return game


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

Кто-то, кто имел опыт работы с Kivy, мог понять, почему Kivy дает сбой с этим кодом?

Я использую Python 2.7.9 и Kivy 1.10.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...