SHARE
TWEET

alvare

a guest Jan 17th, 2009 121 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import pygame
  2. from pygame.locals import *
  3. from random import randint,choice
  4.  
  5. scr = pygame.display.set_mode((800,600))
  6. w,h = scr.get_size()
  7.  
  8. class Cholo:
  9.         def __init__(self,kontrol,pos):
  10.                 self.img = pygame.Surface((10,100))
  11.                 self.img.fill((255,255,255))
  12.                 self.x,self.y = pos
  13.                 self.up,self.down = kontrol
  14.         def update(self):
  15.                 keys = pygame.key.get_pressed()         #Handle keyboard and move "Pad"
  16.                 if keys[self.up]: self.y -= 9
  17.                 elif keys[self.down]: self.y += 9
  18.                 if self.y < 0: self.y = 0
  19.                 elif self.y+self.img.get_height() > h: self.y = h-self.img.get_height()
  20.                 scr.blit(self.img,(self.x,self.y))
  21.  
  22. class Ball:
  23.         def __init__(self):
  24.                 self.radius = 10
  25.                 self.x = w/2
  26.                 self.y = h/2
  27.                 self.xdir = choice((-1,1))
  28.                 self.ydir = choice((-1,1))
  29.                 self.spd = 2
  30.                 self.bounce = 100
  31.                 self.bota = 0
  32.         def draw(self):
  33.                 self.x += int(self.xdir*self.spd)
  34.                 self.y += int(self.ydir*self.spd)
  35.                 self.bounce += 1 if self.bounce < 101 else 0
  36.                 try:            #Bounce balls if they touch the "Pads" (color diferent from background)
  37.                         if (scr.get_at((self.x-self.radius,self.y+self.radius)) != (0,0,0,255) or scr.get_at((self.x+self.radius,self.y+self.radius)) != (0,0,0,255)) and self.bounce > 100:
  38.                                 self.xdir *= -1
  39.                                 self.bounce = 1
  40.                                 self.spd += 0.1
  41.                                 self.bota = 1
  42.                 except: pass            #Balls also bounce between them in a buggy/random way
  43.                 if self.y-self.radius < 0 or self.y+self.radius > h: self.ydir *= -1
  44.                 pygame.draw.circle(scr,(200,40,40),(self.x,self.y),self.radius)
  45.                 if self.x < 0: return 2
  46.                 elif self.x > w: return 1
  47.                 else: return 0
  48.  
  49. p1 = Cholo((K_a,K_z),(10,h/2))
  50. p2 = Cholo((K_UP,K_DOWN),(800-20,h/2))
  51. bola = [Ball()]
  52. loop = 0
  53. while not loop:
  54.         #if 1 == randint(0,700): bola += [Ball()]
  55.         if bola[0].bota == 1:           #When players touch the ball create another one adding it to the array
  56.                 bola += [Ball()]
  57.                 bola[0].bota = 0
  58.         scr.fill((0,0,0))
  59.         p1.update()
  60.         p2.update()
  61.         for a in range(len(bola)):              #Update balls in the array
  62.                 loop = bola[a].draw()
  63.                 if loop: break
  64.         pygame.display.flip()
  65.         for e in pygame.event.get():
  66.                 if e.type == KEYDOWN and e.key == K_ESCAPE or e.type == QUIT:
  67.                         loop = 3
  68. pygame.time.wait(500)
  69. if loop != 3: print "Player %i Winns" % (loop)
RAW Paste Data
Top