Пример #1
0
 def applyBonus(self, pybreakout):
     #print "this is where I add two additional balls"
     ball1 = Ball(rm.getImagePath("ball-mini.png"))
     ball2 = Ball(rm.getImagePath("ball-mini.png"))
     self.adjustBall(ball1,5,pybreakout)
     self.adjustBall(ball2,-5,pybreakout)
     pybreakout.balls.append(ball1)
     pybreakout.balls.append(ball2)
Пример #2
0
 def applyBonus(self, pybreakout):
     #print "this is where I add two additional balls"
     ball1 = Ball(rm.getImagePath("ball-mini.png"))
     ball2 = Ball(rm.getImagePath("ball-mini.png"))
     self.adjustBall(ball1, 5, pybreakout)
     self.adjustBall(ball2, -5, pybreakout)
     pybreakout.balls.append(ball1)
     pybreakout.balls.append(ball2)
Пример #3
0
 def reset(self):
     "Reset Ball, Paddle, and Speed to default positions and states. Called after a ball falls into the abyss."
     
     self.balls = []
     self.balls.append(Ball(rm.getImagePath("ball-mini.png")))
     self.paddle = Paddle(rm.getImagePath("paddle.png"),self.balls[0], self.size)
     
     self.pointsColor = RGB_WHITE
     self.running = True
     self.speed = self.level
Пример #4
0
    def reset(self):
        "Reset Ball, Paddle, and Speed to default positions and states. Called after a ball falls into the abyss."

        self.balls = []
        self.balls.append(Ball(rm.getImagePath("ball-mini.png")))
        self.paddle = Paddle(rm.getImagePath("paddle.png"), self.balls[0],
                             self.size)

        self.pointsColor = RGB_WHITE
        self.running = True
        self.speed = self.level
Пример #5
0
 def drawMiniPaddles(self):
     if(self.numLives == 0):
         return
     drawPos = 0
     miniPaddleImage = pygame.image.load(rm.getImagePath("paddle-mini.png"))
     miniPaddleRect = miniPaddleImage.get_rect()
     for numLife in range(self.numLives):
         self.screen.blit(miniPaddleImage,(0+drawPos,GB_HEIGHT-miniPaddleRect.height))
         drawPos = drawPos + 22
Пример #6
0
 def drawMiniPaddles(self):
     if (self.numLives == 0):
         return
     drawPos = 0
     miniPaddleImage = pygame.image.load(rm.getImagePath("paddle-mini.png"))
     miniPaddleRect = miniPaddleImage.get_rect()
     for numLife in range(self.numLives):
         self.screen.blit(miniPaddleImage,
                          (0 + drawPos, GB_HEIGHT - miniPaddleRect.height))
         drawPos = drawPos + 22
Пример #7
0
    def createBrick(self, brickChar):
        "Given a brickChar, create the appropriate instance object of the Brick class and return it"

        if brickChar == 'R':
            newBrick = Brick(rm.getImagePath("brick-red.png"),
                             self.drawLocation)
            luckyNum = randint(0, 4)
            #luckyNum = 3
            if luckyNum == 3:
                newBrick.addBonus(Triball(newBrick))
        elif brickChar == 'P':
            newBrick = Brick(rm.getImagePath("brick-purple.png"),
                             self.drawLocation)
            luckyNum = randint(0, 4)
            if luckyNum == 3:
                newBrick.addBonus(Triball(newBrick))
        elif brickChar == 'G':
            newBrick = Brick(rm.getImagePath("brick-green.png"),
                             self.drawLocation)
            luckyNum = randint(0, 7)
            if luckyNum == 3:
                newBrick.addBonus(Slowball(newBrick))
        elif brickChar == 'O':
            newBrick = Brick(rm.getImagePath("brick-orange.png"),
                             self.drawLocation)
            luckyNum = randint(0, 5)
            if luckyNum == 5:
                newBrick.addBonus(Triball(newBrick))
        elif brickChar == 'B':
            newBrick = Brick(rm.getImagePath("brick-blue.png"),
                             self.drawLocation)
            luckyNum = randint(0, 5)
            if luckyNum == 0:
                newBrick.addBonus(Triball(newBrick))
        elif brickChar == 'Q':
            newBrick = Brick(rm.getImagePath("brick-grey.png"),
                             self.drawLocation, 0, False)
        elif brickChar == '.':
            newBrick = Brick(rm.getImagePath("brick-grey.png"),
                             self.drawLocation, 0, True, True)
        if newBrick.isDestructible and not (newBrick.isDestroyed):
            self.numDestructibleBricks += 1
        self.drawLocation = self.drawLocation[0] + 40, self.drawLocation[1]
        return newBrick
Пример #8
0
 def createBrick(self, brickChar):
     "Given a brickChar, create the appropriate instance object of the Brick class and return it"
     
     if brickChar == 'R':
         newBrick = Brick(rm.getImagePath("brick-red.png"), self.drawLocation)
         luckyNum = randint(0,4)
         #luckyNum = 3
         if luckyNum == 3:
             newBrick.addBonus(Triball(newBrick))
     elif brickChar == 'P':
         newBrick = Brick(rm.getImagePath("brick-purple.png"), self.drawLocation)
         luckyNum = randint(0,4)
         if luckyNum == 3:
             newBrick.addBonus(Triball(newBrick))
     elif brickChar == 'G':
         newBrick = Brick(rm.getImagePath("brick-green.png"), self.drawLocation)
         luckyNum = randint(0,7)
         if luckyNum == 3:
             newBrick.addBonus(Slowball(newBrick))
     elif brickChar == 'O':
         newBrick = Brick(rm.getImagePath("brick-orange.png"), self.drawLocation)
         luckyNum = randint(0,5)
         if luckyNum == 5:
             newBrick.addBonus(Triball(newBrick))
     elif brickChar == 'B':
         newBrick = Brick(rm.getImagePath("brick-blue.png"), self.drawLocation)
         luckyNum = randint(0,5)
         if luckyNum == 0:
             newBrick.addBonus(Triball(newBrick))
     elif brickChar == 'Q':
         newBrick = Brick(rm.getImagePath("brick-grey.png"), self.drawLocation, 0, False)
     elif brickChar == '.':
         newBrick = Brick(rm.getImagePath("brick-grey.png"), self.drawLocation, 0, True, True)
     if newBrick.isDestructible and not(newBrick.isDestroyed):
         self.numDestructibleBricks +=1
     self.drawLocation = self.drawLocation[0]+40,self.drawLocation[1]
     return newBrick
Пример #9
0
    def play(self):
        "The main game loop occurs here, checks for keyboard input, updates game state, etc..."
        self.running = True
        lastLevelUpTime = time.time()
        i = 0
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT: exit()

            keys = pygame.key.get_pressed()
            if keys[K_q]:
                exit(0)
            elif keys[K_RETURN]:
                if (len(self.balls) <= 0) or (len(self.balls) == 1
                                              and not self.balls[0].stuck):
                    if self.numLives >= 1:
                        self.numLives -= 1
                        self.reset()
                        print "self.numLives = %s" % self.numLives
                    else:
                        self.running = False
                        self.endgame()
            elif keys[K_y]:
                if self.gameOver:
                    self.startGame()

            if self.running:
                if (i % 4 == 0):
                    self.cventry.run()
                # update paddle
                if self.move_right > 0:
                    self.paddle.moveRight(self.move_right * 1.5)
                if self.move_right < 0:
                    self.paddle.moveLeft(-self.move_right * 1.5)
                if self.move_down > 0:
                    self.paddle.moveDown(self.move_down * 1.5)
                if self.move_down < 0:
                    self.paddle.moveUp(-self.move_down)
                self.paddle.setAngle(self.paddle_angle)

                self.checkBonusCollision()

                for ball in self.balls[:]:
                    self.checkBallCollision(ball)
                    hitWall = ball.autoMove()
                    if hitWall:
                        self.soundManager.play('cartoon-spring-sound',
                                               [0.2, 0.2])
                    if (ball.rect.top >= GB_HEIGHT):
                        self.balls.remove(ball)

                for boni in self.bonuses:
                    boni.moveDown(1)
                    if boni.rect.y > GB_HEIGHT:
                        #if it reaches the bottom of the screen remove it from the bonuses list
                        self.bonuses.remove(boni)

                self.pointsString = self.font.render(str(self.points), True,
                                                     self.pointsColor)
                self.updateScreen()
                if (i % 4 == 0):
                    self.dumpScreen()
                i += 1

                #All balls have left the gameboard, need to pause and wait for Right Click
                # or if numLives == 0, then end game.
                if len(self.balls) == 0:
                    self.running = False
                    self.pointsColor = RGB_RED
                    if self.numLives == 0:
                        self.endgame()

                if self.checkLevelUp():
                    self.speed = self.level
                    if self.level == LAST_LEVEL:
                        self.level = -1
                    self.level += 1
                    self.levelString = self.font.render(
                        str(self.level), True, RGB_WHITE)
                    self.bricks = self.loadBricks()

                    self.balls = []
                    self.balls.append(Ball(rm.getImagePath("ball-mini.png")))
                    self.paddle = Paddle(rm.getImagePath("paddle.png"),
                                         self.balls[0])

                #Wait a couple of milliseconds
                currentTime = time.time()
                if (currentTime - lastLevelUpTime > 15):
                    lastLevelUpTime = currentTime
                    if (STARTSPEED - self.speed > 0):
                        #print "15 s elapsed increasing speed by 1"
                        self.speed += 1
Пример #10
0
 def __init__(self, myBrick):
     Bonus.__init__(self, rm.getImagePath("slowball-bonus.png"))
     self.rect.move_ip(myBrick.position)
Пример #11
0
    def play(self):
        "The main game loop occurs here, checks for keyboard input, updates game state, etc..."
        self.running = True
        lastLevelUpTime = time.time()
        i = 0
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT: exit()
                
            keys = pygame.key.get_pressed()
            if keys[K_q]:
               exit(0)
            elif keys[K_RETURN]:
                if (len(self.balls) <= 0) or (len(self.balls) == 1 and not self.balls[0].stuck):
                    if self.numLives >=1:
                        self.numLives -=1
                        self.reset()
                        print "self.numLives = %s"%self.numLives
                    else:
                        self.running = False
                        self.endgame()
            elif keys[K_y]:
                if self.gameOver:
                    self.startGame()
        
            if self.running:
                if (i % 4 == 0):
                    self.cventry.run()
                # update paddle
                if self.move_right > 0:
                    self.paddle.moveRight(self.move_right*1.5)
                if self.move_right < 0:
                    self.paddle.moveLeft(-self.move_right*1.5)
                if self.move_down > 0:
                    self.paddle.moveDown(self.move_down*1.5)
                if self.move_down < 0:
                    self.paddle.moveUp(-self.move_down)
                self.paddle.setAngle(self.paddle_angle)

                self.checkBonusCollision()
                
                for ball in self.balls[:]:
                    self.checkBallCollision(ball)
                    hitWall = ball.autoMove()
                    if hitWall:
                        self.soundManager.play('cartoon-spring-sound',[0.2,0.2])
                    if(ball.rect.top >= GB_HEIGHT):
                        self.balls.remove(ball)
                
                for boni in self.bonuses:
                    boni.moveDown(1)
                    if boni.rect.y > GB_HEIGHT:
                        #if it reaches the bottom of the screen remove it from the bonuses list
                        self.bonuses.remove(boni)
                
                self.pointsString = self.font.render(str(self.points), True, self.pointsColor)
                self.updateScreen()
                if (i % 4 == 0):
                   self.dumpScreen()
                i += 1
                
                #All balls have left the gameboard, need to pause and wait for Right Click
                # or if numLives == 0, then end game.
                if len(self.balls) == 0:
                    self.running = False
                    self.pointsColor = RGB_RED
                    if self.numLives == 0:
                        self.endgame()
                
                if self.checkLevelUp():
                    self.speed = self.level
                    if self.level == LAST_LEVEL:
                        self.level = -1
                    self.level += 1
                    self.levelString = self.font.render(str(self.level), True, RGB_WHITE)
                    self.bricks = self.loadBricks()
                    
                    self.balls = []
                    self.balls.append(Ball(rm.getImagePath("ball-mini.png")))
                    self.paddle = Paddle(rm.getImagePath("paddle.png"),self.balls[0])
                    
            
                #Wait a couple of milliseconds
                currentTime = time.time()
                if(currentTime - lastLevelUpTime > 15):
                    lastLevelUpTime = currentTime
                    if (STARTSPEED - self.speed > 0):
                        #print "15 s elapsed increasing speed by 1"
                        self.speed +=1
Пример #12
0
 def __init__(self, myBrick):
     Bonus.__init__(self,rm.getImagePath("slowball-bonus.png"))
     self.rect.move_ip(myBrick.position)