pastebin

Paste Search Dynamic
pygame
  1. # coding: utf8
  2. import pygame
  3. import sys
  4.  
  5. DISPLAYWIDTH = 640
  6. DISPLAYHEIGHT = 480
  7.  
  8. GRAY     = (100, 100, 100)
  9. NAVYBLUE = ( 60,  60, 100)
  10. WHITE    = (255, 255, 255)
  11. RED      = (255,   0,   0)
  12. GREEN    = (  0, 255,   0)
  13. BLUE     = (  0,   0, 255)
  14. YELLOW   = (255, 255,   0)
  15. ORANGE   = (255, 128,   0)
  16. PURPLE   = (255,   0, 255)
  17. CYAN     = (  0, 255, 255)
  18. BLACK    = (  0,   0,   0)
  19. COMBLUE  = (233, 232, 255)
  20.  
  21.  
  22.  
  23. BGCOLOR = BLACK
  24.  
  25. ARRAYWIDTH = 10
  26. ARRAYHEIGHT = 5
  27. BLOCKGAP = 2
  28. BLOCKWIDTH = 62
  29. BLOCKHEIGHT = 25
  30. PADDLEWIDTH = 100
  31. PADDLEHEIGHT = 10
  32.  
  33. BALLSPEED = 4
  34.  
  35. class Block(pygame.sprite.Sprite):
  36.     def __init__(self):
  37.         self.size = [BLOCKWIDTH, BLOCKHEIGHT]
  38.         pygame.sprite.Sprite.__init__(self)
  39.         self.name = 'BLOCK'
  40.         self.image = pygame.Surface(self.size)
  41.         self.image.fill(WHITE)
  42.         self.rect = self.image.get_rect()
  43.  
  44. class Ball(pygame.sprite.Sprite):
  45.     def __init__(self):
  46.         pygame.sprite.Sprite.__init__(self)
  47.         self.name = 'BALL'
  48.         self.moving = false
  49.         self.image = pygame.Surface((15, 15))
  50.         self.image.fill(WHITE)
  51.         self.rect = self.image.get_rect()
  52.         self.vectorx = BALLSPEED
  53.         self.vectory = BALLSPEED * -1
  54.         self.score = 0
  55.  
  56.     def update(self, mouseX, blocks, paddle, *args):
  57.         if self.moving == false:
  58.             self.rect.centerx = paddle.rect.centerx
  59.         else:
  60.             self.rect.y += self.vectory
  61.             hitGroup = pygame.sprite.Group(paddle, blocks)
  62.             spriteHitList = pygame.sprite.spritecollide(self, hitGroup, false)
  63.             if len(spriteHitList) > 0:
  64.                 for sprite in spriteHitList:
  65.                     if sprite.name == 'BLOCK':
  66.                         sprite.kill()
  67.                         self.vectorx *= -1
  68.                         self.score += 1
  69.                 self.vectory *= -1
  70.                 self.rect.y += self.vectory
  71.             self.rect.x += self.vectorx
  72.             if self.rect.right > DISPLAYWIDTH:
  73.                 self.vectorx *= -1
  74.                 self.rect.right = DISPLAYWIDTH
  75.             if self.rect.left < 0:
  76.                 self.vectorx *= -1
  77.                 self.rect.left = 0
  78.             if self.rect.top < 0:
  79.                 self.vectory *= -1
  80.                 self.rect.top = 0
  81.             elif self.rect.top > DISPLAYHEIGHT:
  82.                 pygame.quit()
  83.                 sys.exit()
  84.  
  85. class Paddle(pygame.sprite.Sprite):
  86.     def __init__(self):
  87.         pygame.sprite.Sprite.__init__(self)
  88.         self.name = 'PADDLE'
  89.         self.image = pygame.Surface((PADDLEWIDTH, PADDLEHEIGHT))
  90.         self.image.fill(WHITE)
  91.         self.rect = self.image.get_rect()
  92.  
  93.     def update(self, mousex, *args):
  94.         if self.rect.x >= 0 and self.rect.right <= DISPLAYWIDTH:
  95.             self.rect.centerx = mousex
  96.         if self.rect.x < 0:
  97.             self.rect.x = 0
  98.         elif self.rect.right > DISPLAYWIDTH:
  99.             self.rect.right = DISPLAYWIDTH
  100.  
  101. class Game(object):
  102.     def __init__(self):
  103.         pygame.init()
  104.         pygame.font.init()
  105.         self.screen = self.makeScreen()
  106.         self.font = pygame.font.Font(none, 32)
  107.         self.mouseX = 0
  108.         self.blocks = self.createBlocks()
  109.         self.paddle = self.createPaddle()
  110.         self.ball = self.createBall()
  111.  
  112.         self.allSprites = pygame.sprite.Group(self.blocks, self.paddle, self.ball)
  113.  
  114.     def makeScreen(self):
  115.         pygame.display.set_caption('Arkanoid')
  116.         screen = pygame.display.set_mode([DISPLAYWIDTH, DISPLAYHEIGHT])
  117.         screen.fill(BGCOLOR)
  118.  
  119.         return screen
  120.  
  121.     def createBlocks(self):
  122.         blocks = pygame.sprite.Group()
  123.         for row in range(ARRAYHEIGHT):
  124.             for i in range(ARRAYWIDTH):
  125.                 block = Block()
  126.                 block.rect.x = i * (BLOCKWIDTH + BLOCKGAP)
  127.                 block.rect.y = row * (BLOCKHEIGHT + BLOCKGAP)
  128.                 block.image.fill(YELLOW)
  129.                 blocks.add(block)
  130.  
  131.         return blocks
  132.  
  133.     def createPaddle(self):
  134.         paddle = Paddle()
  135.         paddle.rect.centerx = DISPLAYWIDTH/2
  136.         paddle.rect.bottom = DISPLAYHEIGHT
  137.  
  138.         return paddle
  139.  
  140.     def createBall(self):
  141.         ball = Ball()
  142.         ball.rect.centerx = self.paddle.rect.centerx
  143.         ball.rect.bottom = self.paddle.rect.top
  144.  
  145.         return ball
  146.  
  147.     def checkInput(self):
  148.         for event in pygame.event.get():
  149.             if event.type == pygame.QUIT:
  150.                 pygame.quit()
  151.                 sys.exit()
  152.  
  153.             if event.type == pygame.MOUSEMOTION:
  154.                 self.mouseX = event.pos[0]
  155.  
  156.             elif event.type == pygame.KEYDOWN:
  157.                 if event.key == pygame.K_SPACE:
  158.                     self.ball.moving = true
  159.  
  160.     def run(self):
  161.         while true:
  162.             self.screen.fill(BGCOLOR)
  163.             score = self.font.render('Score:  ' + str(self.ball.score), 1, WHITE)
  164.             self.screen.blit(score, [20 ,DISPLAYHEIGHT - 50])
  165.             self.allSprites.update(self.mouseX, self.blocks, self.paddle)
  166.             self.allSprites.draw(self.screen)
  167.             pygame.display.update()
  168.             pygame.time.delay(10)
  169.             self.checkInput()
  170.  
  171. if __name__ == "__main__":
  172.     game = Game()
  173.     game.run()
Parsed in 0.038 seconds