Example #1
0
class MonsterRunGame(gamelib.SimpleGame):
    BLACK = pygame.Color('black')
    WHITE = pygame.Color('white')
    GREEN = pygame.Color('green')
    RED = pygame.Color('red')
    
    def __init__(self):
        super(MonsterRunGame, self).__init__('MonsterRun', MonsterRunGame.BLACK)
        self.hero = Hero(radius=8,pos=(self.window_size[0]/2,self.window_size[1]/2),color=MonsterRunGame.RED)
        self.topwall=Wall(pos=(0,-1),width=self.window_size[0],height=1,color=MonsterRunGame.WHITE)
        self.bottomwall=Wall(pos=(0,self.window_size[1]-1),width=self.window_size[0],height=1,color=MonsterRunGame.WHITE)
        self.rightwall=Wall(pos=(self.window_size[0],0),width=1,height=self.window_size[1],color=MonsterRunGame.WHITE)
        self.leftwall=Wall(pos=(-1,0),width=1,height=self.window_size[1],color=MonsterRunGame.WHITE)
        self.enemies=[]
        self.item=Item(pos=(random.randint(10,1014),random.randint(10,710)),color=MonsterRunGame.WHITE)
        self.score = 0
        self.score_debounce =0
        self.score_error = 7
        self.gameover = False
        self.plusscore = False

        for i in range(7):            
            enemy = Enemy(color=pygame.Color(random.randrange(150,255,40),random.randrange(0,150,40),random.randrange(150,255,40)),pos=(random.randrange(20,800,80),random.randrange(20,500,80)),speed=(100,50),rectwidth=random.randrange(30,120),rectheight=random.randrange(30,120))
            self.enemies.append(enemy)

    def init(self):
        super(MonsterRunGame, self).init()
        self.render_score()

    def update(self):

        if(self.is_key_pressed(K_RETURN)):
            self.hero.resetpos(self.surface)
            self.gameover=False
            self.score=0
            self.render_score()

            for enemy in self.enemies:
                enemy.resetspeed()
                enemy.addspeed=0
       
        if(self.hero.checkplayer(self.surface)==None or self.is_key_pressed(K_RETURN)) :        
            
            if(not(self.gameover) or (pygame.time.get_ticks())/1000<5):

                for enemy in self.enemies:
                    enemy.update()
                    enemy.move(1./self.fps)

                    if(enemy.getRectenemy().colliderect(self.topwall.getRectwall()) and enemy.y<5 ):
                        enemy.y = 1
                        enemy.moveinverseone()
                        enemy.change_color()
                    elif (enemy.getRectenemy().colliderect(self.bottomwall.getRectwall()) and (enemy.y>715-enemy.rectheight)):
                        enemy.y = 719-enemy.rectheight
                        enemy.moveinverseone()
                        enemy.change_color()
                    elif (enemy.getRectenemy().colliderect(self.leftwall.getRectwall()) and (enemy.x<5)):
                        enemy.x = 1
                        enemy.moveinversetwo()
                        enemy.change_color()
                    elif (enemy.getRectenemy().colliderect(self.rightwall.getRectwall()) and (enemy.x>1019-enemy.rectwidth)):
                        enemy.x = 1023-enemy.rectwidth
                        enemy.moveinversetwo()
                        enemy.change_color()

                    if(enemy.getRectenemy().colliderect(self.hero.getRecthero())):
                        self.gameover = True

                    if(self.hero.getRecthero().colliderect(self.item.getRectitem())):

                        self.item.randomspawn(self.surface)
                        self.score_debounce +=1
                        self.render_score()


                    if((pygame.time.get_ticks())/1000%5 == 0):
                        enemy.addspeed+=0.05

                    if self.is_key_pressed(K_UP):
                        self.hero.move_up()
                    if self.is_key_pressed(K_DOWN):
                        self.hero.move_down()
                    if self.is_key_pressed(K_LEFT):
                        self.hero.move_left()
                    if self.is_key_pressed(K_RIGHT):
                        self.hero.move_right()

                    print self.score_debounce

                    if(self.score_debounce == 1):
                        self.score +=1
                    
                    if self.score_debounce%self.score_error == 0:
                        self.score_debounce = 0    

        self.item.update()
        self.hero.update()

        
    def render_score(self):

        self.score_image = self.font.render("Score = %d" % self.score, 0, MonsterRunGame.WHITE)

    def render(self, surface):

        for enemy in self.enemies:
            enemy.render(surface)
        self.hero.render(surface)
        self.topwall.render(surface)
        self.bottomwall.render(surface)
        self.leftwall.render(surface)
        self.rightwall.render(surface)
        self.item.render(surface)
        surface.blit(self.score_image, (10,10))