Example #1
0
class Engine(object):
    '''
    Class that calculates things
    '''
    def __init__(self):
        pygame.init()
        self.timer=0
        self.music=MusicPlayer()

        #Different sprites:
        self.gamesprites=[]
        self.menu1sprites=[]
        self.menu2sprites=[]
        self.new_objects=[]

        #Stores all buttons:
        self.buttons=[]
        btn1=Button(280,250,"help")
        btn2=Button(280,100,"start")
        self.buttons.append(btn1)
        self.buttons.append(btn2)
        self.menu1sprites.extend(self.buttons)

        #Create cursor and container for selected object:
        self.cursor=Cursor();
        self.menu1sprites.append(self.cursor)
        self.selected=None
        
        #Append game objects:
        self.player=Player(150,150)
        self.gamesprites.append(self.player)
        self.once=True
        self.once2=True
        self.failed=False
        
    
    def update_objects(self,mode):
        self.new_objects=[]
            
        #check mouse collisions:
        self.buttonselect()
        self.collisions(self.gamesprites)
        
        #Idea: all objects have their own update-method that can be called here!
        if(mode=="menu1"):
            for object in self.menu1sprites:
                object.update()
                
        elif(mode=="game"):
            if self.once==True:
                self.music.play_audio(2)
                self.once=False
            for object in self.gamesprites:
                object.update()
                if self.music.has_ended()==True:
                    return 0

            if (self.timer % 10) == 0:
                self.generate_collectible()
            
            self.timer+=1
                
        elif(mode=="menu2"):
            for object in self.menu2sprites:
                object.update()

        if(self.player.lives<=0 and self.once2==True):
            self.player_dies()

        return self.player.lives

    def player_dies(self):
        self.failed=True
        self.music.stop_all()
        self.music.play_audio(0)
        self.once2=False
    
    def buttonselect(self):
        self.selected=None
        for button in self.buttons:
            if self.cursor.rect.colliderect(button.rect):
                button.select()
                self.selected=button
            else:
                button.deselect()
                
    def click(self):
        if self.selected!=None:
            self.music.play_audio(0)
            return self.selected.clicked_on()
        else:
            return None
    
    def generate_collectible(self):
        if (self.timer % 150) == 0 and self.timer > 500:
            x = random.randrange(400, 450, 5)
            p = -5
        if (self.timer % 300) == 0 and self.timer > 100:
            x = random.randrange(10, 60, 5)
            p = -5
        else:
            x = 230 + int(215 * sin(self.timer*0.1))
            p = random.choice([1,5,10])
        new=Collectible(p, 5, x)
        self.gamesprites.append(new)
        self.new_objects.append(new)
    
    def return_gamesprites(self):
        return self.gamesprites
    
    def return_menu1sprites(self):
        return self.menu1sprites
    
    def return_menu2sprites(self):
        return self.menu2sprites
    
    def return_new(self):
        return self.new_objects

    def return_player_lives(self):
        return self.player.lives

    def return_player_score(self):
        return self.player.score

    def calculate_end_score(self):
        lives=self.player.lives
        self.player.score+=lives*500
    
    def collisions(self, things):
        if len(things) > 1:
            for thing in things[1:]:
                if things[0].rect.colliderect(thing.rect):
                    things[0].score += thing.points
                    if thing.points < 0: things[0].lives -= 1
                    things.remove(thing)
                    thing.kill()
Example #2
0
import pygame
import time
from musicplayer import MusicPlayer
pygame.init()
soitin=MusicPlayer()
counter=0
while True:
    time.sleep(3)
    if counter>=2:
        print "playing"
        soitin.play_audio(2)
        counter=0
    counter+=1
    print soitin.has_ended()