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
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.

Link to post
Share on other sites
  • 2 weeks later...

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
Link to post
Share on other sites
  • 4 years later...

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...