Single player 'pong' game

Posted by Jam on Stack Overflow See other posts from Stack Overflow or by Jam
Published on 2010-04-20T10:32:16Z Indexed on 2010/04/21 14:03 UTC
Read the original article Hit count: 789

Filed under:
|
|
|

I am just starting out learning pygame and livewires, and I'm trying to make a single-player pong game, where you just hit the ball, and it bounces around until it passes your paddle (located on the left side of the screen and controlled by the mouse), which makes you lose. I have the basic code, but the ball doesn't stay on the screen, it just flickers and doesn't remain constant. Also, the paddle does not move with the mouse. I'm sure I'm missing something simple, but I just can't figure it out. Help please! Here's what I have:

from livewires import games
import random

games.init(screen_width=640, screen_height=480, fps=50)

class Paddle(games.Sprite):

    image=games.load_image("paddle.bmp")

    def __init__(self, x=10):
        super(Paddle, self).__init__(image=Paddle.image,
                                    y=games.mouse.y,
                                    left=10)
        self.score=games.Text(value=0, size=25, top=5, right=games.screen.width - 10)
        games.screen.add(self.score)

    def update(self):
        self.y=games.mouse.y
        if self.top<0:
            self.top=0
        if self.bottom>games.screen.height:
            self.bottom=games.screen.height
        self.check_collide()

    def check_collide(self):
        for ball in self.overlapping_sprites:
            self.score.value+=1
            ball.handle_collide()

class Ball(games.Sprite):

    image=games.load_image("ball.bmp")
    speed=5

    def __init__(self, x=90, y=90):
        super(Ball, self).__init__(image=Ball.image,
                                   x=x, y=y,
                                   dx=Ball.speed, dy=Ball.speed)

    def update(self):
        if self.right>games.screen.width:
            self.dx=-self.dx
        if self.bottom>games.screen.height or self.top<0:
            self.dy=-self.dy
        if self.left<0:
            self.end_game()
            self.destroy()

    def handle_collide(self):
        self.dx=-self.dx

    def end_game(self):
        end_message=games.Message(value="Game Over",
                                  size=90,
                                  x=games.screen.width/2,
                                  y=games.screen.height/2,
                                  lifetime=250,
                                  after_death=games.screen.quit)
        games.screen.add(end_message)



def main():

    background_image=games.load_image("background.bmp", transparent=False)
    games.screen.background=background_image

    paddle_image=games.load_image("paddle.bmp")
    the_paddle=games.Sprite(image=paddle_image,
                            x=10,
                            y=games.mouse.y)
    games.screen.add(the_paddle)

    ball_image=games.load_image("ball.bmp")
    the_ball=games.Sprite(image=ball_image,
                          x=630,
                          y=200,
                          dx=2,
                          dy=2)
    games.screen.add(the_ball)

    games.mouse.is_visible=False

    games.screen.event_grab=True

    games.screen.mainloop()

main()

© Stack Overflow or respective owner

Related posts about python

Related posts about beginner