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()
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()