Sign in to follow this  
Naming is hard

Pong

Recommended Posts

Heh, Simplist pong game you could make.

I couldn't get the scoring working for 2players or change the balls direction in mid-game so the ball starts off at an angle.

Still took me about aday though.

EDIT:

Opps i forgot to say, W and S for player one, and Up and Down arrows for player two.

#Pong
#Ryan Luna 7/9/06

import random
from livewires import games, color

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
THE_SCREEN = games.Screen(SCREEN_WIDTH, SCREEN_HEIGHT)

class Player1(games.Sprite):

image = games.load_image("paddle.bmp")
sound = games.load_sound("paddle.wav")

def __init__ (self, screen, x, y):
self.init_sprite(screen = screen, x = x, y = y, image = Player1.image)

def moved(self):
#Moving the paddle for player1
x, y = self.get_pos()
if self.screen.is_pressed(games.K_w):
y -= 1
if self.screen.is_pressed(games.K_s):
y += 1
self.move_to(x, y)
self.check_for_collide()

def check_for_collide(self):
""" Check if pan catches a pizza. """
if self.overlapping_objects():
ball = self.overlapping_objects()[0]
ball.handle_collide()
Player1.sound.play()

class Player2(games.Sprite):

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

def __init__ (self, screen, x, y):
self.init_sprite(screen = screen, x = x, y = y, image = Player2.image)

def moved(self):
#Moving the paddle for player2
x, y = self.get_pos()
if self.screen.is_pressed(games.K_UP):
y -= 1
if self.screen.is_pressed(games.K_DOWN):
y += 1
self.move_to(x, y)
self.check_for_collide()

def check_for_collide(self):
""" Check if pan catches a pizza. """
if self.overlapping_objects():
ball = self.overlapping_objects()[0]
ball.handle_collide()
Player1.sound.play()

class Ball(games.Sprite):

image = games.load_image("ball.bmp")
sound = games.load_sound("lose.wav")

def __init__ (self, screen, x, y, speedy, speedx = 2):
self.init_sprite(screen = screen, x = x, y = y, dx = speedx,
dy = speedy, image = Ball.image)
self.score_value = 0
self.score_text = games.Text(screen = self.screen, x = 250, y = 20,
text = " ", size = 25, color = color.white)

def moved(self):
if self.get_left() < 0:
self.ball_destroy()
self.create_ball()
Ball.sound.play()
if self.get_right() > SCREEN_WIDTH:
self.ball_destroy()
self.create_ball()
Ball.sound.play()
self.scoring()
if self.get_bottom() > SCREEN_HEIGHT:
self.bounce()
if self.get_top() < 0:
self.bounce()

def scoring(self):
self.score_value += 10
self.score_text.set_text("Score: " + str(self.score_value))


def handle_collide(self):
self.reverse()

def ball_destroy(self):
self.destroy()

def reverse(self):
""" Reverse direction. """
dx, dy = self.get_velocity()
self.set_velocity((-dx, dy))

def bounce(self):
""" Bounce off wall """
dx, dy = self.get_velocity()
self.set_velocity((dx, -dy))

def create_ball(self):
y_speed = random.randrange(2) + 1
Ball(screen = self.screen, x = SCREEN_HEIGHT/2, y = SCREEN_WIDTH/2, speedy = y_speed)
def main():
my_screen = THE_SCREEN

bg_image = games.load_image("blackscreen.jpg", transparent = False)
my_screen.set_background(bg_image)
y_speed = random.randrange(2) + 1
Player1(screen = my_screen, x = 10, y = SCREEN_HEIGHT/2)
Player2(screen = my_screen, x = 630, y = SCREEN_HEIGHT/2)
Ball(screen = my_screen, x = SCREEN_HEIGHT/2, y = SCREEN_WIDTH/2, speedy = y_speed)
my_screen.mouse_visible(False)

my_screen.mainloop()

main()

I'd attach it but it wont upload .py

Edited by Naming is hard

Share this post


Link to post
Share on other sites

Here is a link to the livewires module http://www.livewires.org.uk/python/files/LiveWires-2.0.tgz (direct link) which is needed to run. Also there are several references to images I dont have, maybe you can zip the package and attach.

Share this post


Link to post
Share on other sites

I get this error when running on linux with python-2.4.3, pygame-1.6.2, and livewires-2.0

Traceback (most recent call last):
File "pong.py", line 119, in ?
main()
File "pong.py", line 114, in main
Ball(screen = my_screen, x = SCREEN_HEIGHT/2, y = SCREEN_WIDTH/2, speedy = y_speed)
File "pong.py", line 72, in __init__
dy = speedy, image = Ball.image)
TypeError: init_sprite() got an unexpected keyword argument 'dx'
Exception exceptions.AttributeError: "Ball instance has no attribute '_gone'" in <bound method Ball.__del__ of <__main__.Ball instance at 0xb7cb59ec>> ignored

Edited by naraku9333

Share this post


Link to post
Share on other sites

I get the same error in windows as well. Are we using different versoins of livewires?

Share this post


Link to post
Share on other sites

I still wonder about the livewires packages, I had to change all instances of color to colour with my version.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this