def main_loop(self): while 1: self.clock.tick(60) events = pygame.event.get() self.menu.choose(events) for event in events: if event.type == KEYDOWN and event.key == K_ESCAPE: pygame.mixer.music.fadeout(1000) start.Menu(self.screen) return self.screen.blit(self.title, (0, 0)) text = self.font.render('Choose your character!',1,(255,255,255)) self.screen.blit(text,(120,140)) mario = pygame.transform.scale(data.load_image('mchar.png'),(125,125)) self.screen.blit(mario,(105,215)) luigi = pygame.transform.scale(data.load_image('lchar.png'),(75,125)) self.screen.blit(luigi,(220,215)) toad = pygame.transform.scale(data.load_image('tchar.png'),(120,125)) self.screen.blit(toad,(315,215)) yoshi = pygame.transform.scale(data.load_image('yoshi.png'),(75,125)) self.screen.blit(yoshi,(440,215)) self.menu.create(self.screen) pygame.display.flip() #placeholder
def __init__(self, count, pos_x, pos_y, *groups): if count > 1: label = "%d" % count else: label = "" pos_y -= 2 spr = data.load_image("ghost.png") w, h = spr.get_size() fnt = data.load_image("digits.png") fnt_w = 4 fnt_h = 5 txt_x = w + 1 txt_y = 2 self.image = pygame.Surface((txt_x + fnt_w * len(label), h), pygame.SRCALPHA) self.image.blit(spr, (0, 0)) for i, c in enumerate(label): fnt_x = int(c) * fnt_w self.image.blit(fnt, (txt_x + i * fnt_w, txt_y), (fnt_x, 0, fnt_w, fnt_h)) self.rect = pygame.Rect(pos_x, pos_y, *self.image.get_size()) self.targ_y = pos_y - DEAD_TTL // 2 pygame.sprite.Sprite.__init__(self, *groups)
def __init__(self, g): self.g = g #store globals self.dlog = dialog.ChoiceDialog(self.g, "standard") #initialize new dialog for choices #initialize new surface to draw stuff on self.surf = pygame.Surface((settings.screen_x, settings.screen_y)) #load and create surfaces for all the title screen parts self.logo = data.load_image("titlescreen/bronzelogo.png") self.logo.convert_alpha() self.bg = data.load_image("titlescreen/background.png") self.bg.convert() self.logomask = data.load_image("titlescreen/logomask.png") self.logomask.convert() self.shine = data.load_image("titlescreen/shine.png") self.shine.convert_alpha() self.textbg = data.load_image("titlescreen/fadetoblack.png") self.textbg.convert_alpha() #create a surface to draw the shine on with the same dimensions as the logo self.shinesurf = pygame.Surface(self.logo.get_size(), SRCALPHA) #create a surface for the text self.textsurf = pygame.Surface(self.textbg.get_size(), SRCALPHA) #now, we need to draw Press X! on screen f = font.Font("fonts/selfdialog_font.xml") #load font to draw with f.render("Press X!", self.textbg, (15, 2)) #calculate dimensions for everything self.shine_y = (self.logo.get_height()-self.shine.get_height())/2 self.shine_x = -40 #current x position of shine #set up variables for fading text self.fadein = True self.textopacity = 10 #opacity goes backwards for faster drawing self.check_environment() #make sure the environment is up to snuff self.start_main() #start main function
def __init__(self, game, name, index, config=None): super(HowtoScene, self).__init__(game, name, index, config) self.bg_text = data.load_image('howtoplay.png') self.bg_text = pygame.transform.scale(self.bg_text, (534, 400)) self.bg_textrect = self.bg_text.get_rect() fontText = data.load_font(data.FONT_MAIN, 20) fontText.set_bold(True) texts = [ {'text':'1) The boss generates 1 to 9 sounds', 'top':30, 'left':50}, {'text':'2) You must copy the generated sequence', 'top':250, 'left':20} ] for phrase in texts: text = fontText.render(phrase['text'], True, (255, 255, 255)) textrect = text.get_rect() textrect.top = phrase['top'] textrect.left = phrase['left'] self.bg_text.blit(text, textrect) self.text = data.render_text(data.FONT_MAIN, 37, 'Push the button !', (255, 255, 255)) self.textrect = self.text.get_rect() # bg_text.blit(self.text, self.textrect) self.background = data.load_image('credits.png') self.music_bg = data.load_sound('credits.ogg')
def load_animations(): global ANIMATION_PLAYER_STILL global ANIMATIONS_PLAYER ANIMATION_PLAYER_WALK = [data.load_image("bizniezwalkin.png")] ANIMATION_PLAYER_STILL = [data.load_image("bizstill.png")] ANIMATION_PLAYER_RUN = [data.load_image("bizniezrun.gif")] ANIMATIONS_PLAYER = [ANIMATION_PLAYER_STILL, ANIMATION_PLAYER_WALK, ANIMATION_PLAYER_RUN]
def __init__(self, pos, correction): Baddie.__init__(self, pos, correction) self.dead_image = data.load_image("monster3.png") self.shell_image = data.load_image("monster3.png") self.shell_direction = 1 #Death-related variables self.life = 2
def __init__(self, x, y): self.sprite1 = data.load_image("checkpoint1.png") self.sprite2 = data.load_image("checkpoint2.png") self.sprite = self.sprite1 self.width = self.sprite.get_width() self.height = self.sprite.get_height() self.xPos = x self.yPos = y
def info_objects(): #return lists of data for each object type in the game #['name','image'.. maybe turn image into animations later..] OBJ_BOOTH = ["booth",data.load_image("objects/phonebooth.png")] OBJ_STAPLER = ["stapler",data.load_image("objects/stapler.png")] OBJ_TPSBOX = ["tpsbox",data.load_image("objects/tpsbox.png")] #0-booth 1-stapler 2-tpsbox OBJECTS = [OBJ_BOOTH,OBJ_STAPLER,OBJ_TPSBOX] return OBJECTS
def __init__(self, pos, name, object_id): sprites.Collidable.__init__(self, pos, object_id=object_id) self.left_images = [] for i in self.right_images: self.left_images.append(pygame.transform.flip(i, 1, 0)) self.image = self.right_images[0] self.rect = self.image.get_rect(topleft = pos) self.frame = 0 self.direction = 1 self.angle = 0 self.dying = False self.shooting = False self.shoot_timer = 0 self.still_timer = 0 self.hp = 1 self.hit_timer = 0 self.jump_sound = data.load_sound("jump.ogg") self.hit_sound = data.load_sound("stomp.ogg") self.spring_sound = data.load_sound("jump2.ogg") self.springing = False self.dx = 1 self.speed = 0 self.won = False self.flag = None # self.JUMP_KEY = jumpKey #Images self.win_image = data.load_image("mariowin-%d.png" % (int(self.object_id)+1)) self.slide_image = data.load_image("mario_slide-%d.png" % (int(self.object_id)+1)) self.dead_image = data.load_image("mariodie-%d.png" % (int(self.object_id)+1)) self.thrust = NO_THRUST self.state = STILL self.name = name self.walking = False self.braking = False self.direction = 1 self.trying_to_walk = False self.jump_speed = 0 self.jump_accel = 0.3 self.jumping = False self.keep_jumping = False #This is for the dying animation self.life = 1 self.dead_step = -3 self.state_observers = [] #Collision group not in use right now self.collision_group = sprites.player_collision_group
def __init__(self, image_file, name=None, full_image=None): self.count = 1 self.image = data.load_image(image_file) if full_image: self.full_image = data.load_image(full_image) else: self.full_image = None if not name: name = image_file.split(".")[0] self.name = name self.rect = None self.selected = None
def __init__(self, pos, screen_width, images, speed=1, direction=LEFT, speed_change=1): pygame.sprite.Sprite.__init__(self) self.image, self.rect = data.load_image(images[0]) self.actual_img = 0 self.images = [data.load_image(img)[0] for img in images] self.set_pos(pos) self.screen_width = screen_width self.speed = speed self.speed_change = speed_change self.alive = True self.direction = direction self.last_img_change = 0 if direction == RIGHT: self.images = [pygame.transform.flip(img,1,0) for img in self.images] self.image = self.images[0]
def finish(self): ######################################### # HANDLES LEVEL COMPLETION ######################################### pygame.time.wait(3000) pygame.display.flip() try: self.lvl += 1 #i'm sorry <3 except: self.lvl = self.lvl ######################################### # CHANGES LAVA TO WATER! ######################################### if self.lvl == 9: Lava.images = [data.load_image('water%s.png'%image)for image in xrange(0,2)] self.clear_level() self.level = Level(self.lvl) self.bg = self.bgcolor[self.lvl][0] self.player = Player((0,0),self.toon) self.camera = Camera(self.player,self.level.width()) self.screen.fill((0,0,0)) pygame.display.flip() data.play_music(self.bgcolor[self.lvl][1]) self.mworld = 1 + (self.lvl-1)/4 if self.lvl != 9: pygame.display.set_caption('World %s-%s'%(self.mworld,(self.lvl-1)%4+1)) else: pygame.display.set_caption('Princess Peach\'s Castle') self.info()
def __init__(self, screen, client, game_info, game_id, level_name): game.Game.__init__(self, game_info, game_id, level_name) self.sprites = pygame.sprite.OrderedUpdates() player.Player.groups = self.sprites for c in sprites.baddie_collider_list: c.set_role(network.ROLE_CLIENT) for p in self.players: p.set_role(network.ROLE_CLIENT) self.screen = screen self.client = client self.mario = self.players[self.game_id] self.bg = data.load_image("background-2.png") self.server_stopped = False self.show_names = False # self.camera = Camera(self.player[self.game_id], self.level.get_size()[0], self.player) self.font = pygame.font.Font(data.filepath("fonts/font.ttf"), 16) # self.heart1 = data.load_image("mario1.png") # self.heart2 = data.load_image("mario-life2.png") # self.heroimg = data.load_image("mario5.png") # self.baddie_sound = data.load_sound("jump2.ogg") # self.coin_sound = data.load_sound("coin.ogg") # self.up_sound = data.load_sound("1up.ogg") self.music = "maintheme.ogg"
def __init__(self, surface, screen_rect, world, world_rect, bg = None): """ surface: surf to draw on screen_rect: rect on screen to drawon world: tilemap world_rect: initial position and size to draw """ super(ViewPort, self).__init__() self.surface = surface.subsurface(screen_rect) self.screen_rect = screen_rect self.half_view_x = screen_rect.centerx self.half_view_y = screen_rect.centery if bg: self.bgd = data.load_image(bg)[0] else: self.bgd = pygame.Surface(screen_rect.size) self.bgd.fill((0,0,0)) self.world = world diagonal = hypot(world_rect.width, world_rect.height)+2 r = pygame.Rect((0,0), (diagonal, diagonal)) r.center = world_rect.center self.world_rect = r self._wsurf = pygame.Surface(self.world_rect.size)
def __init__(self,position,orient): gameObject.__init__(self, self.groups) self.rect = self.image.get_rect(topleft=position) self.orientation = orient self.hits = -1 self.breaking = [data.load_image('break%s.png'%image)for image in xrange(1,4)] self.breaknoise = data.load_sound('break.wav')
def load_graphics(self): self.frames = [] self.actual_frame = 0 for i in range(3): self.frames.append(data.load_image('fly-%d.png' % (i+1))) self.image = self.frames[self.actual_frame] self.rect = self.image.get_rect()
def __init__(self, x, y): self.sprite = data.load_image("battery.png") self.xPos = x self.yPos = y self.width = self.sprite.get_width() self.height = self.sprite.get_height() self.used = False
def _build_buttons(self): bt_imgs = [ "bt_add_above.png", "bt_edit_row.png", "bt_add_below.png", "bt_move_up.png", "bt_del_row.png", "bt_move_down.png" ] callbacks = [ self._add_above, self._edit_row, self._add_below, self._move_up, self._del_row, self._move_down ] for pic_name in bt_imgs: bt_img = data.load_image(pic_name) gui.PictureButton(self, 'name', bt_img, (0,0)) for i,cb in enumerate(callbacks): self.children[i].add_listener('on_click', cb) self._move_buttons()
def __init__(self,position): gameObject.__init__(self,self.groups) self.rect = self.image.get_rect(topleft=position) self.name = 'Bowser' self.x = position[0] self.y = position[1]-2 #temp fix -.- self.up = data.load_image('bowserjump.png') self.down = data.load_image('bowser.png') self.shoot = data.load_image('bowserfire.png') self.pic = 0 self.dead = data.load_image('bowserdie.png') self.winner = data.load_sound('win.wav') self.ping = data.load_sound('bowserfire.wav') self.fall = data.load_sound('bowserdie.wav') self.fallsound = -1 self.victory = -1
def __init__(self, game, element): self.g = game.g objects.NPC.__init__(self, game, element) #initialize our parent self.vision = int(data.get_xml_prop(element, "vision")) #load properties self.reward = int(data.get_xml_prop(element, "reward")) self.class_name = data.get_xml_prop(element, "class") self.trainer_name = data.get_xml_prop(element, "name") self.pre_script = data.get_node(element, "pre_script") self.post_script = data.get_node(element, "post_script") #load spotted icon self.spotted_pic = data.load_image("objects/spotted.png") self.spotted_pic.convert_alpha() #get whether we have been fought or not self.fought = self.g.save.get_prop(self.id, "fought", False) self.moving = True self.seen = False #set if we've seen somebody self.move_data = [0, 0, 0] #store the movement we're going to do self.wait_time = 0 #amount of time to display icon #load party data party = [] for node in data.get_node(element, "party").childNodes: #loop through pokemon if node.localName == "pokemon": #if it's a pokemon t = [node.getAttribute("type"), node.getAttribute("level")] #generate data party.append(t) #and save it self.party = party
def __init__(self, position, name): """inicializa una imagen como sprite""" pygame.sprite.Sprite.__init__(self) #call Sprite initializer self.image, self.rect = load_image(name) self.position = position self.rect = self.image.get_rect() self.rect.center = self.position
def __init__(self, world_map, x, y): if FlyDribble.image is None: FlyDribble.image = data.load_image("bullet-2.png") self.rect = self.image.get_rect() BasicBullet.__init__(self, world_map, x, y, world_map.group, world_map.enemy_bullet_group) self.speed = 5
def __init__(self, game, name, index, config=None): super(GameOverScene, self).__init__(game, name, index, config) gameovermessage = config['message'] if 'message' in config else 'Game Over' gameovermusic = config['music'] if 'music' in config else 'gameover.ogg' self.gameovertxt = data.render_text(data.FONT_TITLE, 30, gameovermessage, (255, 255, 255)) self.gameovertxtRect = self.gameovertxt.get_rect() self.background = data.load_image('gameover.png') self.music_bg = data.load_sound(gameovermusic) self.teaserText = data.render_text(data.FONT_MAIN, 17, 'Who\'s the rockstar with '+str(self.game.points)+' points ?', (255, 255, 255)) self.teaserTextrect = self.teaserText.get_rect() #temp self.teaserTextInputRect = self.teaserTextrect self.blinkInputCounter = 0 self.blinkInputTime = 400 self.userFilledStr = [] self.usernickText = None self.usernickTextRect = None self.userFillingTextField = True self.showUnderscore = True self.lScoreFile = None self.userscores = None self.orderedTabScore = [] self.buildTabScore()
def __init__(self, game_info, game_id, level_name): self.sprites = [] #Sync variables self.frame = 0 self.stopped = True self.jumping = False self.game_id = game_id print "My id is ", self.game_id self.game_info = game_info self.highscore = 0 self.score = 0 self.lives = 3 #This determines which players have arrived self.arrived = [] self.lost = False self.clock = pygame.time.Clock() self.bg = data.load_image("background-2.png") self.running = True self.level_name = level_name self.done = False #Hum... self.i = 0 #======================================================================= # Players initialization #======================================================================= i = 0 self.players = [] if game_info[0] == "players": game_info.pop(0) for p in game_info: plyr = player.Player((0, 0), p.get_name(), i) self.players.append(plyr) print "Adding player ", str(p), " with id ", plyr.get_object_id() print len(self.players) , " players" i += 1 self.player_collision_group = [] self.baddie_collision_group = [] self.mushroom_collision_group = [] self.colliders = sprites.collider_list self.colliders.append(self.players) self.initialize_images() self.initialize_level() #TODO quitar old sprites #TODO Add deaths, mushrooms, anything left self.obt_sprites.add(self.players) for s in self.obt_sprites: s.add_to_collider_list()
def __init__(self,screen): self.screen = screen self.clock = pygame.time.Clock() self.rulesheet = pygame.transform.scale(data.load_image('rules.bmp'),(640,460)) self.font = pygame.font.Font(data.filepath('smb256.ttf'),28) self.font2 = pygame.font.Font(None,14) pygame.display.set_caption('Super Mario Bros. 3 Help') self.main_loop()
def __init__(self,screen): self.screen = screen self.clock = pygame.time.Clock() self.fox = pygame.transform.scale(data.load_image('fox.bmp'),(640,460)) self.font = pygame.font.Font(data.filepath('smb256.ttf'),28) data.play_music('fox.wav') pygame.display.set_caption('WHAT DOES THE FOX SAY?!') self.main_loop()
def __init__(self, sprite, xDir, yDir, time, x, y): if xDir < 0: self.sprite = data.load_image(sprite+'1.png') elif xDir > 0: self.sprite = data.load_image(sprite+'2.png') else: self.sprite = data.load_image(sprite) self.width = self.sprite.get_width() self.height = self.sprite.get_height() self.xDir = xDir self.yDir = yDir self.xPos = x self.yPos = y self.lives = time
def __init__(self, num, image='grass'): terrain = TERRAIN_GRASS[num] num_details = 4 freq_details = 18 Terrain.__init__(self, terrain, 1, image, image + str(num), num_details, freq_details) self.objects = { "a": [ load_image('map', 'objects', 'rock_01'), False, (0,0,0,0), [20,20], [6,6] ], "b": [ load_image('map', 'objects', 'rock_02'), False, (0,0,0,0), [22,16], [6,4] ], "c": [ load_image('map', 'objects', 'tree_04'), False, (0,0,32,32), [32,32], [0,32] ], "d": [ load_image('map', 'objects', 'tree_05'), False, (0,0,64,32), [64,32], [0,32] ], "e": [ load_image('map', 'objects', 'tree_06'), False, (0,0,64,32), [64,32], [0,32] ] }
def __init__(self, game, name, index, config=None): self.background = data.load_image('menu.png') self.logoStep = 750 self.logoImages = [] self.logoNumber = 0 self.logoTime = pygame.time.get_ticks() + self.logoStep for i in range(0,9): self.logoImages.append(data.load_image('menu' + str(i + 1) + '.png')) menus = (('Start Game', self.play), ('How to play', self.howto), ('Credits', self.credits), ('Exit', self.exit)) MenuScene.__init__(self, game, name, index, config, (320, 270), menus)
def draw_details(self, layer, offset): """Draw details on the terrain.""" if self.num_details > 0: detail = choice(range(1, self.num_details+1)) if Die(20).roll() >= self.freq_details: tile = load_image('map', 'details', self.image_name + str(detail)) layer.image.blit(tile, offset)
def __init__(self, game, name, index, config=None): super(LevelScene, self).__init__(game, name, index, config) self.font = data.load_font(data.FONT_FIX, 23) self.count = config['count'] if 'count' in config else 9 self.delta = config['delta'] if 'delta' in config else 1000 self.points = config['points'] if 'points' in config else 500 self.volume = config['volume'] if 'volume' in config else 0.3 self.pointsMulti = config[ 'pointsMulti'] if 'pointsMulti' in config else 1 self.pointsText = None self.sequence = button.SequenceButtonGroup((20, 20), (210, 100), 15, 5, self.count, self.delta) self.buttons = button.PlayableButtonGroup((50, 150), (35, 300), 20, 15, self.count, 750) self.seqindex = 0 self.sequencing = False self.play = [] self.playing = False self.background = data.load_image('background.png') self.ray = data.load_image('ray.png') self.piano = data.load_image('piano.png') self.music_bg = data.load_sound('background.ogg', self.name) self.music_bg.set_volume(self.volume) self.music_pre_bg = data.load_sound('pre-background.ogg', self.name) self.music_pre_bg.set_volume(0.3) self.sequence.associateTheme(self.name) self.buttons.associateTheme(self.name) self.pre_bg_channel = None self.bg_channel = None # step counter management self.stepElapsingInTime = 1 self.stepElapsedTimeCounter = 0 self.counterStepPerClick = config[ 'timetoclick'] if 'timetoclick' in config else 200 self.currentCounterStep = self.counterStepPerClick # counting only when button animation is over self.stepCountElapsingTime = False self.stepCounterText = None self.rectWidth = 0 boss = data.load_image('boss.png', self.name) boss.set_colorkey((255, 0, 255)) miniboss = data.load_image('boss_mini.png', self.name) miniboss.set_colorkey((255, 0, 255)) self.animMiniBossImage = miniboss # pygame.transform.scale(boss, (170, 170)) self.animMiniBossRect = self.animMiniBossImage.get_rect() self.animMiniBossRect.left = 302 self.animMiniBossRect.bottom = 243 self.animBossAction = 'scale' self.animBossActionCount = 0 self.animBossImage = boss # pygame.transform.scale(boss, (170, 170)) self.animBossRect = self.animBossImage.get_rect() self.animBossRect.left = 350 self.animBossRect.bottom = 280 self.animBossTime = 0 self.animBossShowRaw = False self.counterRect = [266, 250, 110, 8] self.counterRectDecSizePerStep = 110.0 / self.counterStepPerClick self.incrRedColorUnit = 255.0 / self.counterStepPerClick self.decrBlueColorUnit = 255.0 / self.counterStepPerClick self.bottomPanel = pygame.Surface((640, 240)) self.bottomPanel.fill((100, 100, 100)) self.bottomPanel.set_alpha(200) self.bottomText = data.render_text( data.FONT_MAIN, 30, self.name.replace('-', ' ') + " starting in...", (255, 0, 0)) self.bottomTextRect = self.bottomText.get_rect() self.bottomTextRect.center = (320, 360)
def handle_board_changed(self): """Am I special or not?""" name = self.square_model.special and 'special' or 'normal' # This is pretty much a NULL operation unless name has changed. self.image = load_image('%s_square.png' % name)
def main(): # Inicializamos la pantalla pygame.init() screen = pygame.display.set_mode((800, 700)) pygame.display.set_caption('BaronBeer v0.01') clock = pygame.time.Clock() # rellenamos el fondo background = pygame.Surface(screen.get_size()) organic = Spriteador((0, 0), 'organic.jpg') background = background.convert() background.fill((163, 108, 54)) # mostramos un texto #font = pygame.font.Font(None, 36) #text = font.render("TUBERIA 0.1", 1, (10, 10, 10)) #textpos = text.get_rect() #textpos.centerx = background.get_rect().centerx #background.blit(text, textpos) spriter = Spriteador((0, 0), 'bola1.gif') ciudad_fondo, ciudad_fondo_rect = load_image('ciudad_fondo.jpg') #generamos los Mapas bolas = Bola(spriter.image, spriter.position, background, 1000) m = bolas.graphMap(500, 100, 0, 150) for t in m: background.blit(t.image, t.position) bolas.state_change_view() #fin generar Mapas # Los bares bares = {} for i in range(5): key = 'nodo' + str(6 + i) bares[key] = bar.Bar() bares[key].draw(screen, 70 * i, 10) # El Sotano sotano = Escenario(100, 1000) sotano.draw(screen, 300, 400) # actualizamos(blit) todo en la pantalla screen.blit(background, (0, 0)) pygame.display.flip() # Event loop release1 = 1 release2 = 2 while 1: tictoc = clock.tick(60) for event in pygame.event.get(): if event.type == QUIT: return if pygame.mouse.get_pressed( )[0] == 1 and release1 == 1: # event.type == MOUSEBUTTONDOWN[1]: print "BOTON 1 MOUSE" mouse_pos = pygame.mouse.get_pos() estado = bolas.hit_or_not(mouse_pos) #print estado release1 = 0 if estado: # Actualizar bares bares[bolas.final_bar].alcohol = True if pygame.mouse.get_pressed()[0] == 0: release1 = 1 if pygame.mouse.get_pressed()[2] == 1 and release2 == 1: print "BOTON 2 MOUSE" release2 = 0 if pygame.mouse.get_pressed()[2] == 0: release2 = 1 screen.blit(background, (0, 0)) screen.blit(ciudad_fondo, (0, 0)) sotano.draw(screen, 230, 450) j = 1 for i in bolas.mapa.ids_bares: bares[i].update() bares[i].draw(screen, 70 * (2 * j) - 70, 50) j = j + 1 pygame.display.flip()
def showScores(screen, score, reason_game_end): from data import load_image, filepath gameScore = Score() FONT_NAME = 'HEMIHEAD.TTF' FONT_SIZE = 24 font = pygame.font.Font(filepath(FONT_NAME), FONT_SIZE) font2 = pygame.font.Font(filepath(FONT_NAME), FONT_SIZE + 6) backgrounds = ['badgimp.png', 'venger.png'] SCREEN_SIZE = (800, 600) background, a = load_image(choice(backgrounds)) screen.blit(background, (0, 0)) INITIAL_POS = (110, 110) TITLE_POS = (30, 110) RECORD_POS_X = 560 color = (20, 60, 240) colorUp = (255, 0, 0) QUANTITY = 10 nickName = [] NIKNAME_MAX_LEN = 18 # Nickname * * * * * * * * * Score # nueces..... * * * * * * * * * $0000000000 TEXT_FORMAT = '%(position)-3i - %(name)-' + str(NIKNAME_MAX_LEN + 20) + 's ' RECORD_FORMAT = '$%(score)-12d ' INTERLINE = 1.4 listScores = gameScore.get_records_arround(score, QUANTITY) position = gameScore.get_position(score) + 1 text_position = INITIAL_POS scoresSprites = pygame.sprite.RenderUpdates() recordsSprites = pygame.sprite.RenderUpdates() scoreNewSprite = pygame.sprite.RenderUpdates() font2.set_bold(True) hsc = HighScore(font2, "Game Over: " + reason_game_end, color, TITLE_POS) scoresSprites.add(hsc) text_position = (text_position[0], text_position[1] + hsc.height * 2) font2.set_bold(False) font.set_bold(True) text = "..:: Nickname ::.." hsc = HighScore(font, text, color, text_position) scoresSprites.add(hsc) record = "..:: Score ::.." score_position = (RECORD_POS_X - 20, text_position[1]) recordsSprites.add(HighScore(font, record, color, score_position)) font.set_bold(False) text_position = (text_position[0], text_position[1] + hsc.height * INTERLINE) score_position = (RECORD_POS_X, text_position[1]) for item in listScores[0]: text = TEXT_FORMAT % item hsc = HighScore(font, text, color, text_position) scoresSprites.add(hsc) record = RECORD_FORMAT % item recordsSprites.add(HighScore(font, record, color, score_position)) text_position = (text_position[0], text_position[1] + hsc.height * INTERLINE) score_position = (RECORD_POS_X, text_position[1]) item = { 'position': position, 'name': u'Insert your Nickname here', 'score': score } text = TEXT_FORMAT % item hsc = HighScore(font, text, colorUp, text_position) scoreNewSprite.add(hsc) record = RECORD_FORMAT % {'score': score} recordsSprites.add(HighScore(font, record, colorUp, score_position)) text_position = (text_position[0], text_position[1] + hsc.height * INTERLINE) score_position = (RECORD_POS_X, text_position[1]) for item in listScores[1]: text = TEXT_FORMAT % item hsc = HighScore(font, text, color, text_position) scoresSprites.add(hsc) record = RECORD_FORMAT % item recordsSprites.add(HighScore(font, record, color, score_position)) text_position = (text_position[0], text_position[1] + hsc.height * INTERLINE) score_position = (RECORD_POS_X, text_position[1]) scoresSprites.draw(screen) recordsSprites.draw(screen) scoreNewSprite.draw(screen) pygame.display.update() Enter = False while not Enter: event = pygame.event.wait() if event.type == QUIT: sys.exit() elif event.type == KEYDOWN: if event.key == K_RETURN and len(nickName) > 0: gameScore.add(u''.join(nickName), score) gameScore.save() Enter = True elif event.key in [K_DELETE, K_BACKSPACE]: if len(nickName) >= 1: nickName.pop() elif len(nickName) <= NIKNAME_MAX_LEN - 1: nickName.append(event.unicode) item = { 'position': position, 'name': u''.join(nickName), 'score': score } text = TEXT_FORMAT % item record = RECORD_FORMAT % item scoreNewSprite.clear(screen, background) scoreNewSprite.update(font, text, colorUp) recordsSprites.update(font, record, colorUp) scoreNewSprite.draw(screen) pygame.display.update()
# "desc" Long description # "effdesc" Short effect description # "reqdesc" Requirement-text # "type" useabe/weapon, etc. # "atteff" [hp, mp, at, ac, dm, ep] between -1000 and 1000 # "siaveff" [str,int,agi,vit] between -100 and 100 # "coneff" [dead, asleep, poison, blind, mute, weak, dazed, confused] # "dur" Duration in turns (0=permanent) # "req" [str, int, agi, vit, warrior, rogue, mage] - Requirements import data img_unknown = data.load_image("items/unknown.png") quest_item = 0 useable = 1 weapon = 2 a_head = 3 a_body = 4 a_hands = 5 a_legs = 6 a_feet = 7 a_ring = 8 a_shield = 9 item = {} ###Quest-Items item["Map"] = {
def __init__(self): super(MenuMode, self).__init__() # Customise the interface. interface.set_default_style(self.MenuStyle) self.MenuStyle.proxy = self # Interface proxy method. self.get_shape = lambda: self.fake_pos + self.window.get_size() self.fake_pos = (0.0, 0.0) ## Interface components ####################### # Background self.bee_background = data.load_svg("menubee.svg") self.flowers_background = data.load_svg("menuflowers.svg") self.frame = data.load_svg("frame.svg", anchor_y="top") # Title self.title = interface.TextBox( xpos = 0.0, ypos = 0.75, width = 1.0, height = 0.25, halign = "center", valign = "bottom", font_size = 0.08, text = CAPTION, ) # Main self.main_menu = interface.TextMenu( xpos = 0.0, ypos = 0.0, width = 1.0, height = 0.7, halign = "center", valign = "top", outline = (0.0, 0.0, 0.5, 1.0), background = (0.0, 0.0, 0.0, 0.4), font_size = 0.05, ) self.main_menu.add_options( ("Play Game", self.option_gardens), ("Bestiary", self.option_bestiary), ("Awards", self.option_achievements), ("Options", self.option_options), ("Credits", self.option_credits), ("Quit", self.option_quit), ) self.show_main = False # Gardens self.gardens = GardenGrid( xpos = 0.18, ypos = -0.02, width = 0.82, height = 0.62, halign = "center", valign = "top", scrolling = True, direction = "vertical", activate = self.option_gardens_activate, select = self.option_gardens_select, deselect = self.option_gardens_deselect, frame = self.frame, dimensions = (4, 2), spacing = 0.06, padding = 0.01, ) self.gardens.row_factor = 0.0 for idx, g in enumerate(garden.all_gardens): self.gardens.add_images(g.img_name or 'garden.png') self.gardens_back = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "center", scale_h = 0.15, graphic = data.load_image("back.png", centered=True), callback = self.option_gardens_back, ) self.show_gardens = False # Bestiary self.bestiary = BestiaryGrid( xpos = 0.18, ypos = -0.02, width = 0.82, height = 0.62, halign = "center", valign = "top", scrolling = True, direction = "vertical", activate = self.option_bestiary_activate, select = self.option_bestiary_select, deselect = self.option_bestiary_deselect, frame = self.frame, dimensions = (7, 3), ) for c in creature.Creature.all_creatures: self.bestiary.add_images(c.img_name) i = data.load_image(c.img_name) self.bestiary_textboxes = [] for c in creature.Creature.all_creatures: creature_box = interface.TextBox( xpos = 0.4, ypos = 0.0, width = 0.6, height = 0.6, padding = 0.02, margin = 0.05, halign = "left", valign = "center", outline = (0.5, 0.5, 0.5, 1.0), background = (0.0, 0.0, 0.0, 0.8), expand = "horizontal", font_size = 0.025, text = descriptions.creature_descriptions[c], html = True, ) self.bestiary_textboxes.append(creature_box) self.bestiary_left = interface.ImageBox( xpos = 0.0, ypos = 0.0, width = 0.4, height = 0.6, padding = 0.02, margin = 0.05, ) self.bestiary_right = None self.bestiary_back = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "center", scale_h = 0.15, graphic = data.load_image("back.png", centered=True), callback = self.option_bestiary_back, ) self.bestiary_scroll_up = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "top", scale_h = 0.15, graphic = data.load_image("up.png", centered=True), callback = self.option_bestiary_scroll_up, ) self.bestiary_scroll_down = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "bottom", scale_h = 0.15, graphic = data.load_image("down.png", centered=True), callback = self.option_bestiary_scroll_down, ) self.show_bestiary = False self.show_bestiary_entry = False # Achievements self.achievements = AchievementsGrid( xpos = 0.18, ypos = -0.02, width = 0.82, height = 0.62, halign = "center", valign = "top", scrolling = True, direction = "vertical", activate = self.option_achievements_activate, select = self.option_achievements_select, deselect = self.option_achievements_deselect, frame = self.frame, dimensions = (9, 14), ) for ach in achievement.handler.achievements: self.achievements.add_images(ach.img_name) self.achievements_mouseover = interface.TextBox( xpos = 0.18, ypos = 0.0, width = 0.82, height = 0.2, outline = (0.5, 0.5, 0.5, 1.0), background = (0.0, 0.0, 0.0, 0.8), font_size = 0.03, ) self.achievements_back = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "center", scale_h = 0.15, graphic = data.load_image("back.png", centered=True), callback = self.option_achievements_back, ) self.achievements_scroll_up = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "top", scale_h = 0.15, graphic = data.load_image("up.png", centered=True), callback = self.option_achievements_scroll_up, ) self.achievements_scroll_down = PopupButton( xpos = 0.0, ypos = 0.0, width = 0.15, height = 0.65, halign = "center", valign = "bottom", scale_h = 0.15, graphic = data.load_image("down.png", centered=True), callback = self.option_achievements_scroll_down, ) self.show_achievements = False # Options self.options_menu = interface.TextMenu( xpos = 0.0, ypos = 0.0, width = 1.0, height = 0.7, halign = "center", valign = "top", outline = (0.0, 0.0, 0.5, 1.0), background = (0.0, 0.0, 0.0, 0.4), font_size = 0.05, ) self.options_menu.add_options( ("Fullscreen: On", self.option_options_fullscreen), ("Music: On", self.option_options_music), ("Sound effects: On", self.option_options_sound_effects), ("Back", self.option_options_back), ) self.options_map = { 0: "fullscreen", 1: "music", 2: "sound_effects", } for idx, name in self.options_map.items(): if not getattr(config, name): text = self.options_menu.options[idx].label.text text = text.rsplit(":", 1)[0] + ": Off" self.options_menu.options[idx].label.text = text self.options_menu.clear_cache() self.show_options = False self.refresh_options = False self.no_avbin_box = interface.TextBox( xpos = 0.0, ypos = 0.0, width = 1.0, height = 1.0, halign = "center", valign = "center", outline = (0.0, 0.0, 0.5, 1.0), background = (0.0, 0.0, 0.0, 0.7), font_size = 0.04, html = False, text = """Sorry! In order to hear sounds or music, you'll need to install AVBin from http://code.google.com/p/avbin/""", ) self.show_no_avbin = False # Credits self.credits_box = interface.TextBox( xpos = 0.0, ypos = 0.0, width = 1.0, height = 0.7, halign = "center", valign = "center", outline = (0.0, 0.0, 0.5, 1.0), background = (0.0, 0.0, 0.0, 0.4), font_size = 0.04, html = True, text = descriptions.credits_text, ) self.show_credits = False # All components self.interface_components = [self.title, self.main_menu, self.gardens, self.gardens_back, self.bestiary, self.bestiary_left, self.bestiary_back, self.bestiary_scroll_up, self.bestiary_scroll_down, self.achievements, self.achievements_mouseover, self.achievements_back, self.achievements_scroll_up, self.achievements_scroll_down, self.options_menu, self.no_avbin_box, self.credits_box] + self.bestiary_textboxes interface.set_default_style(None) ## Animation ############ self.title_opacity = 1.0 self.flowers_offset = 0.0 self.main_menu_offset = 0.0 self.gardens_offset = 0.0 self.bestiary_offset = 0.0 self.bestiary_entry_offset = 0.0 self.achievements_offset = 0.0 self.options_menu_offset = 0.0 self.credits_offset = 0.0
def __init__(self, screen,toon, level=1,lives=3): ######################################### # SET UP SCREEN, FPS MONITOR (CLOCK), AND SPRITES ######################################### self.screen = screen self.clock = pygame.time.Clock() self.sprites = pygame.sprite.OrderedUpdates() self.character = pygame.sprite.OrderedUpdates() self.flags = pygame.sprite.OrderedUpdates() self.death = pygame.sprite.OrderedUpdates() self.platforms = pygame.sprite.OrderedUpdates() self.enemies = pygame.sprite.OrderedUpdates() self.mushrooms = pygame.sprite.OrderedUpdates() self.coins = pygame.sprite.OrderedUpdates() self.questions = pygame.sprite.OrderedUpdates() self.stationary = pygame.sprite.OrderedUpdates() self.traps = pygame.sprite.OrderedUpdates() self.movingplatforms = pygame.sprite.OrderedUpdates() self.cannons = pygame.sprite.OrderedUpdates() self.bases = pygame.sprite.OrderedUpdates() self.coinquestions = pygame.sprite.OrderedUpdates() self.upplat = pygame.sprite.OrderedUpdates() self.brickquestions = pygame.sprite.OrderedUpdates() self.breakable = pygame.sprite.OrderedUpdates() self.powerup = pygame.sprite.OrderedUpdates() self.starquestions = pygame.sprite.OrderedUpdates() self.missles = pygame.sprite.OrderedUpdates() self.fire = pygame.sprite.OrderedUpdates() self.bridges = pygame.sprite.OrderedUpdates() self.switches = pygame.sprite.OrderedUpdates() self.hazards = pygame.sprite.OrderedUpdates() self.flares = pygame.sprite.OrderedUpdates() ######################################### # IMAGES - all images cited in citations.txt ######################################### if toon == 'Mario': Player.move_images = [data.load_image('mario1.png'), data.load_image('mario2.png'), data.load_image('mario3.png'), data.load_image('mario4.png'), data.load_image('mario1.png'), data.load_image('mario5.png')] if toon == 'Luigi': Player.move_images = [data.load_image('luigi1.png',1.435), data.load_image('luigi2.png',1.513), data.load_image('luigi3.png',1.513), data.load_image('luigi4.png',1.47), data.load_image('luigi1.png',1.435), data.load_image('luigi5.png',1.55)] if toon == 'Yoshi': Player.move_images = [data.load_image('yoshi1.png',1.75), data.load_image('yoshi2.png',1.694), data.load_image('yoshi3.png',1.696), data.load_image('yoshi4.png',1.694), data.load_image('yoshi1.png',1.75), data.load_image('yoshirand.png',1.6)] if toon == 'Toad': Player.move_images = [data.load_image('toad1.png'), data.load_image('toad2.png'), data.load_image('toad3.png'), data.load_image('toad4.png'), data.load_image('toad1.png'), data.load_image('toad5.png')] Cloud.image = data.load_image('cloud.png') Question.images = [data.load_image('q%s.png'%image) for image in xrange(0,4)] MushroomQuestion.images = [data.load_image('q%s.png'%image) for image in xrange(0,4)] StarBox.images = [data.load_image('q%s.png'%image) for image in xrange(0,4)] BrickQuestion.images = [data.load_image('q%s.png'%image) for image in xrange(0,4)] CoinQuestion.images = [data.load_image('q%s.png'%image) for image in xrange(0,4)] Coin.images = [data.load_image('coin%s.png'%image) for image in xrange(1,9)] Platform.image = data.load_image('platform-top.png') Brick.image = data.load_image('platform-brick.png') Bush.image = data.load_image('bush-1.png') Goomba.images = [data.load_image('goomba%s.png'%image)for image in xrange(1,4)] JumpPlatform.image = data.load_image('platform-air.png') OneUp.image = data.load_image('1up2.png') Pipe.image = data.load_image('pipe.png') Hill.image = data.load_image('hill.png') Flag.images = [data.load_image('flagpole%s.png' %image) for image in xrange(1,5)] Castle.image = data.load_image('castle.png') VenusFlyTrap.images = [data.load_image('redvenus%s.png' % image) for image in xrange(1,3)] BigPipe.image = data.load_image('bigpipe.png') RedKoopa.images = [data.load_image('redkoopa%s.png'%image) for image in xrange(1,4)] GreenKoopa.images = [data.load_image('greenkoopa%s.png'%image) for image in xrange(1,4)] DoubleCloud.image = data.load_image('doublecloud.png') BigTree.image = data.load_image('bigtree.png') Tree.image = data.load_image('tree.png') Fence.image = data.load_image('fence.png') RedKoopa.images = [data.load_image('redkoopa%s.png'%image) for image in xrange(1,4)] GrassLeft.image = data.load_image('grassleft.png') GrassMiddle.image = data.load_image('grassmiddle.png') GrassRight.image = data.load_image('grassright.png') GrassSupport.images = [data.load_image('grasssupport%s.png'%image) for image in xrange(0,4)] CrossGrass.images = [data.load_image('grass%s.png'%image)for image in xrange(1,4)] Wall.image = data.load_image('wall.png') Moving.image = data.load_image('moving.png') BigMoving.image = data.load_image('bigmoving.png') BigCannon.images = [data.load_image('cannonbig%s.png'%image) for image in xrange(1,3)] SmallCannon.images = [data.load_image('smallcannon%s.png'%image) for image in xrange(1,3)] Cannon.images = [data.load_image('cannon%s.png' % image) for image in xrange(1,3)] GrabCoin.images = [data.load_image('c%s.png' % image) for image in xrange(1,4)] GreenVenusFlyTrap.images = [data.load_image('vblue%s.png'%image)for image in xrange(0,2)] GrabShroom.images = [data.load_image('c%s.png' % image) for image in xrange(1,4)] BrickShroom.image = data.load_image('brickbreaker.png') Star.images = [data.load_image('star%s.png'%image)for image in xrange(0,8)] Bullet.image = data.load_image('bullet.png') CastleBrick.image = data.load_image('cbrick.png') Lava.images = [data.load_image('lava%s.png'%image)for image in xrange(0,2)] if level == 9: Lava.images = [data.load_image('water%s.png'%image)for image in xrange(0,2)] FireBlock.image = data.load_image('qempty.png') Bridge.image = data.load_image('bridge.png') Switch.image = data.load_image('switch.png') Bowser.image = data.load_image('bowser.png') FireBall.images = [data.load_image('fireball%s.png'%image,1.5)for image in xrange(0,6)] GoombaDie.image = data.load_image('goomba3.png') BowserCastle.image = data.load_image('bigcastle.png') Spike.image = data.load_image('spike.png') PeachCastle.image = data.load_image('peach.png',1) Flare.images = [data.load_image('flare%s.png'%image)for image in xrange(0,4)] ######################################### # SPRITE GROUPS ######################################### Flare.groups = self.flares, self.sprites PeachCastle.groups = self.sprites BowserCastle.groups = self.sprites Player.groups = self.sprites, self.character,self.death Cloud.groups = self.sprites, Question.groups = self.sprites, self.platforms, self.questions, self.stationary MushroomQuestion.groups = self.sprites, self.platforms, self.questions, self.stationary, self.upplat CoinQuestion.groups = self.sprites, self.platforms, self.questions, self.stationary, self.coinquestions BrickQuestion.groups = self.sprites, self.platforms, self.questions, self.stationary, self.brickquestions StarBox.groups = self.sprites, self.platforms, self.questions, self.stationary, self.starquestions Coin.groups = self.sprites,self.coins, Platform.groups = self.sprites,self.platforms,self.stationary,self.bases CastleBrick.groups = self.sprites,self.platforms,self.stationary Brick.groups = self.sprites, self.platforms, self.stationary, self.breakable Bush.groups = self.sprites Goomba.groups = self.sprites, self.enemies JumpPlatform.groups = self.sprites, self.platforms, self.stationary OneUp.groups = self.sprites, self.mushrooms Pipe.groups = self.sprites, self.platforms, self.stationary Hill.groups = self.sprites Flag.groups = self.sprites, self.flags Castle.groups = self.sprites VenusFlyTrap.groups = self.sprites, self.traps BigPipe.groups = self.sprites, self.platforms, self.stationary RedKoopa.groups = self.sprites, self.enemies GreenKoopa.groups = self.sprites, self.enemies DoubleCloud.groups = self.sprites Tree.groups = self.sprites BigTree.groups = self.sprites Fence.groups = self.sprites RedKoopa.groups = self.sprites, self.enemies GrassLeft.groups = self.sprites, self.platforms, self.stationary GrassMiddle.groups = self.sprites, self.platforms, self.stationary GrassRight.groups = self.sprites, self.platforms, self.stationary GrassSupport.groups = self.sprites, self.platforms, self.stationary CrossGrass.groups = self.sprites Wall.groups = self.sprites Moving.groups = self.sprites, self.platforms, self.movingplatforms BigMoving.groups = self.sprites, self.platforms, self.movingplatforms BigCannon.groups = self.sprites, self.platforms, self.stationary, self.cannons Cannon.groups = self.sprites, self.platforms, self.stationary, self.cannons SmallCannon.groups = self.sprites, self.platforms, self.stationary, self.cannons Death.groups = self.sprites,self.death GrabShroom.groups = self.sprites GrabCoin.groups = self.sprites, GreenVenusFlyTrap.groups = self.sprites, self.traps BrickShroom.groups = self.sprites, self.mushrooms Spike.groups = self.sprites, self.hazards Star.groups = self.sprites, self.powerup Bullet.groups = self.sprites, self.missles Lava.groups = self.sprites FireBlock.groups = self.sprites,self.platforms,self.stationary Bridge.groups = self.sprites,self.platforms,self.stationary,self.bridges Switch.groups = self.sprites,self.platforms,self.stationary,self.switches Bowser.groups = self.sprites,self.enemies FireBall.groups = self.sprites,self.fire GoombaDie.groups = self.sprites GreenKoopaDeath.groups = self.sprites Message.groups = self.sprites VenusDie.groups = self.sprites GreenVenusDie.groups = self.sprites RedKoopaDeath.groups = self.sprites # self.sprites = sprites w/ no interactions # self.character = the player # self.flags = flags @ end of level # self.death = keep track of death pictures # self.platforms = everything that you can stand on # self.enemies = all the enemies # self.mushrooms = powerups etc # self.coins = coins... # self.questions = question blocks # self.stationary = sprites which do not move # self.traps = the plants that eat you # self.movingplatforms = self explanatory # self.cannons = cannons # self.bases = floors for the plants # self.coinquestions = questions that spit coins # self.upplat = questions that spit 1up # self.brickquestions = questions that spit brickbreater /megamushroom # self.breakable = sprites that can be destroyed # self.powerup = ... power ups # self.starquestions = invincibility questions # self.missles = bullet bills # self.fire = bowser fire # self.bridges = bowser bridge # self.switches = bowser switch # self.hazards = bowser spikes ######################################### # SOUNDS ######################################### self.coinsound = data.load_sound('coin.wav',1) self.power = data.load_sound('getshroom.wav',1) self.complete = data.load_sound('flag.wav',1) ######################################### # MENUS ######################################### self.menu = genmenu(['Resume', lambda: self.placeholder()],['Save Game', lambda: self.placeholder1()],['Quit Game',lambda: self.placeholder2(self.screen)]) self.menu.changeFont('Raleway Thin.ttf',28) self.menu.position(320,200) self.menu.defaultColor((255,255,255)) self.menu.choiceColor((0,255,0)) self.menu2 = genmenu(['FILE OPEN', lambda: self.save1(self.toon,self.lvl,self.lives)],['FILE OPEN', lambda: self.save2(self.toon,self.lvl,self.lives)],['FILE OPEN',lambda: self.save3(self.toon,self.lvl,self.lives)]) self.save_menu() self.menu2.changeFont('smb256.ttf',28) self.menu2.position(320,200) self.menu2.defaultColor((0,0,0)) self.menu2.choiceColor((255,0,125)) ######################################### # FONTS ######################################### self.font = pygame.font.Font(data.filepath('smb256.ttf'),20) self.font4 = pygame.font.Font(data.filepath('smb256.ttf'),36) self.font2 = pygame.font.Font(data.filepath('Raleway Thin.ttf'),14) self.font3 = pygame.font.Font(data.filepath('Raleway Thin.ttf'),24) ######################################### # FLAGS / GAME VALUES ######################################### self.start = 1 self.saving = 0 self.diefix = 0 self.paused = 0 self.toon = toon self.score = 000 self.chill = 0 self.record = '' self.flagged = 0 self.lives = lives self.powertracker = 0 self.cheat_enabled = 0 ######################################### # LEVEL CREATION ######################################### self.lvl = level self.bgcolor = get_bg() self.level = Level(self.lvl) self.player = Player((000,00),toon) self.bg = self.bgcolor[self.lvl][0] data.play_music(self.bgcolor[self.lvl][1]) self.camera = Camera(self.player,self.level.width()) ######################################### # LOAD SCORES ######################################### if Savefile('scores.txt').readscore() == None: self.highscore = 0 else: self.highscore = int(Savefile('scores.txt').readscore()) ######################################### # AESTHETIC CHANGES ######################################### self.mworld = 1 + (self.lvl-1)/4 self.stage = (self.lvl-1)%4+1 if level != 9: pygame.display.set_caption('World %s-%s'%(self.mworld,self.stage)) else: pygame.display.set_caption('Princess Peach\'s Castle') ######################################### # INITIALIZE GAME ######################################### self.main_loop()
def main_loop(self): while self.start: if not self.paused: self.clock.tick(60) self.camera.update() # for guy in self.character: # guy.update() ######################################### # HANDLES NO CLIPPING TOGGLING ######################################### if self.cheat_enabled: self.player.no_clip = 1 self.player.clear_collisions() else: self.player.no_clip = 0 ######################################### # DEALS WITH NO CLIP INVICIBILITY ######################################### if self.record == 'konami' and not self.chill and self.lvl != 9: print 'C H E A T E N A B L E D' self.cheat_enabled = 1 self.chill = 1 data.stop_music() data.play_music('winner.wav') if self.lvl == 9 and self.cheat_enabled: self.cheat_enabled = 0 print 'C H E A T D I S A B L E D' print 'You no longer need to cheat. You cannot die in this sanctuary.' ######################################### # FIX FOR MULTIPLE DYING SOUNDS, DYING IN GENERAL ######################################### if self.flagged: if self.diefix == 0: die = data.load_sound('die.wav') die.play() self.diefix += 1 self.playerdie() ######################################### # PRECAUTION IF FLAG DOES NOT CATCH YOU FOR SOME REASON ######################################### if self.player.rect.right > self.level.size: self.player.rect.right = self.level.size ######################################### # KILLS YOU/SAVES YOU IF YOU FALL ######################################### if self.player.rect.top > 460 and not self.player.invuln: self.player.life -= 1 self.flagged = 1 self.playerdie() elif self.player.rect.bottom > 460 and self.player.invuln and not self.cheat_enabled: self.player.rect.bottom = 460 self.player.save = 1 ######################################### # HANDLES INVULNERABILITY ######################################### for toon in self.sprites: toon.update() if not self.cheat_enabled: if self.player.invuln: self.player.timer += 1 if self.player.timer > 250000: self.player.invuln = 0 self.player.timer = 0 self.player.save = 0 ######################################### # CANNOT LOSE VICTORY LEVEL ######################################### if self.lvl == 9 or self.cheat_enabled: self.player.invuln = 1 for platform in self.platforms: platform.update() if self.player.no_clip != 1: self.player.collide(self.platforms) for banner in self.flags: banner.update() if self.player.rect.centerx >= banner.rect.centerx and self.lvl !=9: pygame.mixer.music.stop() self.complete.play() self.score += 460-self.player.rect.bottom self.finish() elif self.player.rect.centerx >= banner.rect.centerx: self.score += 1000 self.win_game() ######################################### # HANDLES CANNON FIRING ######################################### for weapon in self.cannons: if abs(weapon.rect.centerx-self.player.rect.centerx) < 400: if self.player.rect.centerx < weapon.rect.centerx: weapon.chance() ######################################### # COIN EXTRACTION ######################################### for block in self.coinquestions: if block.rect.bottom == self.player.rect.top and (block.rect.left-15 < self.player.rect.centerx < block.rect.right+15): block.bing() ######################################### # HANDLES BULLET BILLS ######################################### for bomb in self.missles: if (bomb.rect.left - 20 < self.player.rect.centerx < bomb.rect.right + 20) and (0 < bomb.rect.top-self.player.rect.bottom < 5): self.score += 245 self.player.up = -6 GrabCoin((bomb.rect.left,bomb.rect.top)) bomb.kill() self.player.rect.bottom = bomb.rect.top-1 elif self.player.rect.colliderect(bomb.rect): if self.player.invuln: self.score += 20 GrabCoin((bomb.rect.left,bomb.rect.top)) bomb.kill() else: self.player.life -= 1 self.flagged = 1 self.playerdie() bomb.update() ######################################### # HANDLES BOWSER FIRE AND FLARES ######################################### for heat in self.fire: heat.update() if self.player.rect.colliderect(heat.rect): if self.player.invuln != 1: self.player.life -= 1 self.flagged = 1 self.playerdie() else: heat.kill() for flare in self.flares: if self.player.rect.colliderect(flare.rect): if self.player.invuln: flare.kill() else: self.player.life -= 1 self.flagged = 1 self.playerdie() ######################################### # HANDLES QUESTIONBLOCK EXTRACTION ######################################### for block in self.upplat: if block.rect.bottom == self.player.rect.top and (block.rect.left-15 < self.player.rect.centerx < block.rect.right+15): block.bing() for block in self.brickquestions: if block.rect.bottom == self.player.rect.top and (block.rect.left-15 < self.player.rect.centerx < block.rect.right+15): block.bing() for block in self.starquestions: if block.rect.bottom == self.player.rect.top and (block.rect.left-15 < self.player.rect.centerx < block.rect.right+15): block.bing() ######################################### # HANDLES BRICK DEMOLITION ######################################### for block in self.breakable: if block.rect.bottom == self.player.rect.top and (block.rect.left-15 < self.player.rect.centerx < block.rect.right+15): if self.player.breaker == 1: block.bing() if block.hits >= 9: block.kill() self.score += 10 ######################################### # HANDLES MUSHROOMS ######################################### for shroom in self.mushrooms: shroom.update() shroom.collide(self.platforms) if self.player.rect.colliderect(shroom.rect): shroom.kill() self.power.play() if shroom.name == 'brick': self.player.breaker = 1 self.score += 45 #self.player.magic() if shroom.name == 'life': self.lives += 1 self.score += 30 GrabShroom(shroom.rect.topleft,shroom.name) ######################################### # HANDLES STARS ######################################### for star in self.powerup: star.update() if self.player.rect.colliderect(star.rect): star.kill() self.power.play() if self.player.invuln == 0: self.player.invuln = 1 GrabShroom(star.rect.topleft,star.name) ######################################### # HANDLES COINS ######################################### for coin in self.coins: if self.player.rect.colliderect(coin.rect): coin.kill() self.score += 50 self.coinsound.play() GrabCoin(coin.rect.topleft) ######################################### # HANDLES SPIKES ######################################### for dagger in self.hazards: if self.player.rect.colliderect(dagger.rect): if self.player.invuln != 1: self.player.life -= 1 self.flagged = 1 self.playerdie() else: dagger.kill() ######################################### # HANDLES ENEMY COLLISIONS AND BOWSER BEHAVIOR ######################################### for enemy in self.enemies: enemy.update() enemy.collide(self.stationary) if enemy.name == 'Bowser': if self.player.rect.centerx+3000 >= enemy.x: if self.player.rect.right - enemy.rect.left < -75: enemy.play((self.player.rect.right,self.player.rect.top)) elif self.player.rect.right - enemy.rect.left > -75: enemy.defeat() if self.player.rect.colliderect(enemy.rect): if not self.player.invuln: self.player.life -=1 self.flagged = 1 self.playerdie() if enemy.name != 'Bowser': if (enemy.rect.left - 17 < self.player.rect.centerx < enemy.rect.right + 17) and (0 < enemy.rect.top-self.player.rect.bottom < 8): if enemy.name == 'Goomba': self.score += 100 if enemy.name == 'RedKoopa': self.score += 195 if enemy.name == 'GreenKoopa': self.score += 165 self.player.up = -6 enemy.flag() self.player.rect.bottom = enemy.rect.top-1 elif self.player.rect.colliderect(enemy.rect): if self.player.invuln: self.score += 20 enemy.flag() else: if self.player.breaker == 0: self.player.life -= 1 self.flagged = 1 self.playerdie() else: enemy.flag() self.player.rect.bottom = enemy.rect.top-1 self.player.breaker = 0 #self.player.magic() ######################################### # HANDLES BOWSER SWITCH KILLER ######################################### for operator in self.switches: if self.player.rect.bottom == operator.rect.top and (operator.rect.left-16 < self.player.rect.centerx < operator.rect.right+16): for piece in self.bridges: piece.kill() for enemy in self.enemies: if enemy.name == 'Bowser': enemy.die() if self.player.rect.centerx > operator.rect.right: for piece in self.bridges: piece.kill() for enemy in self.enemies: if enemy.name == 'Bowser': enemy.die() if self.player.rect.left > operator.rect.right+50 and operator.dead == 0: x = operator.x y = operator.y for mult in xrange(0,8): CastleBrick((x,y-32*mult),None) win = data.load_sound('break.wav',1) win.play() self.score += 500 operator.dead += 1 ######################################### # HANDLES PLANTS ######################################### for venus in self.traps: venus.update() venus.collide(self.bases) if self.player.rect.colliderect(venus.rect): die = data.load_sound('stomp.wav',1) if self.player.invuln: venus.die() else: if self.player.breaker == 0: self.player.life -= 1 self.flagged = 1 self.playerdie() else: self.player.breaker = 0 venus.die() ######################################### # HANDLES EVENTS AND CHEAT CODES ######################################### events = pygame.event.get() for event in events: if event.type == QUIT: sys.exit() return if event.type == KEYDOWN: if event.key == K_ESCAPE: self.paused = 1 if event.key == K_SPACE: if not self.player.no_clip: self.player.jump() if self.record == '': if event.key == K_k: self.record += 'k' if event.key == K_o and self.record == 'k': self.record += 'o' if event.key == K_n and self.record == 'ko': self.record += 'n' if event.key == K_a and self.record == 'kon': self.record += 'a' if event.key == K_m and self.record == 'kona': self.record += 'm' if event.key == K_i and self.record == 'konam': self.record += 'i' if self.record == 'konami': if event.key == K_BACKQUOTE: okay = 1 for sprite in self.platforms: if self.player.rect.colliderect(sprite.rect): okay = 0 if okay: self.record = '' self.chill = 0 self.cheat_enabled = 0 self.player.invuln = 0 print 'C H E A T D I S A B L E D' data.stop_music() data.play_music(self.bgcolor[self.lvl][1]) else: print 'This is not a valid location to turn on clipping!' ######################################### # HANDLES SCREEN CREATION ######################################### if not self.paused: self.screen.blit(self.bg, ((-self.camera.rect.x/1)%640, 0)) self.screen.blit(self.bg, ((-self.camera.rect.x/1)%640 + 640, 0)) self.screen.blit(self.bg, ((-self.camera.rect.x/1)%640 - 640, 0)) self.camera.create_world(self.screen, self.sprites) self.info() pygame.display.flip() ######################################### # HANDLES PAUSE SCREEN ######################################### elif self.paused and not self.saving: events = pygame.event.get() pause = data.load_image('pausescreen.png',1) self.screen.blit(pause,(0,0)) self.menu.create(self.screen) self.menu.choose(events) text = self.font.render('NOTE :',1,(255,0,0)) self.screen.blit(text,(320-text.get_width()/2,360)) text = self.font.render('If you quit without saving,',1,(255,255,255)) self.screen.blit(text,(320-text.get_width()/2,390)) text = self.font.render('your progress will be lost.',1,(255,255,255)) self.screen.blit(text,(320-text.get_width()/2,420)) for event in events: if event.type == QUIT: sys.exit() return if event.type == KEYDOWN: if event.key == K_ESCAPE: self.paused = 0 pygame.display.flip() ######################################### # HANDLES SAVES ETC. ######################################### elif self.paused and self.saving: events = pygame.event.get() save = data.load_image('save.bmp',1) self.screen.blit(save,(0,0)) saves = Savefile().read() if saves == []: self.menu2.create(self.screen) self.menu2.choose(events) else: self.menu3.create(self.screen) self.menu3.choose(events) for event in events: if event.type == QUIT: sys.exit() return if event.type == KEYDOWN: if event.key == K_ESCAPE: self.saving = 0 pygame.display.flip() if self.lvl == 9: if self.player.rect.top < 100: self.player.save = 0
def fix_color(self): """Set the color to whatever it's supposed to be.""" for color in ('RED', 'BLUE'): if self.square_model.value == globals()[color]: # This is pretty much a NULL operation unless it's changed. self.image = load_image('%s_ball.png' % color.lower())
def update(self): self.sequence.update() self.buttons.update() self.pointsText = self.font.render('%d' % (self.game.points, ), False, (255, 255, 255)) if self.stepCountElapsingTime and not self.oneButtonALaFois(): if pygame.time.get_ticks() > self.stepElapsedTimeCounter: self.currentCounterStep -= 1 self.stepElapsedTimeCounter = pygame.time.get_ticks( ) + self.stepElapsingInTime if self.currentCounterStep < 0: self.game.director.change('gameover') if not self.playing and not self.sequencing: if pygame.time.get_ticks() > self.animBossTime: self.animBossTime += 150 if self.animBossAction == 'scale': self.animBossActionCount += 1 self.animBossImage = pygame.transform.scale( self.animBossImage, (self.animBossRect.w - 9, self.animBossRect.h - 9)) bottom = self.animBossRect.bottom left = self.animBossRect.left self.animBossRect = self.animBossImage.get_rect() self.animBossRect.bottom = bottom - 2 self.animBossRect.left = left - 4 if self.animBossActionCount == 15: self.animBossActionCount = 0 self.animBossAction = 'moveup' self.animBossShowRaw = True self.bottomTextRect.center = (320, 360) elif self.animBossAction == 'moveup': self.animBossRect = self.animMiniBossImage.get_rect() self.bottomText = data.render_text( data.FONT_MAIN, 30, str(4 - (self.animBossActionCount / 4)), (255, 0, 0)) self.bottomTextRect = self.bottomText.get_rect() self.bottomTextRect.center = (320, 360) self.animBossActionCount += 1 if self.animBossActionCount <= 10: self.animMiniBossRect.top -= 5 elif self.animBossActionCount > 10 and self.animBossActionCount < 20: rect = pygame.Rect( 0, 5, self.animMiniBossRect.w, self.animMiniBossRect.h - 5, ) self.animMiniBossImage = self.animMiniBossImage.subsurface( rect) self.animMiniBossRect.h -= 5 elif self.animBossActionCount == 20: self.animBossActionCount = 0 self.animBossAction = None self.animBossShowRaw = False self.background = data.load_image( 'background.png', self.name) else: self.seqStart()
dy = 0 targ.blit(img, (self.ipos[0], self.ipos[1] + dy)) targ.blit(self.text, (self.tpos[0], self.tpos[1] + dy)) if __name__ == "__main__": import sys import data def fancy_cb(): print "Named callback" pygame.init() screen = pygame.display.set_mode((800, 600)) screen.fill(0) br = ButtonRegistry() br.add_button("Foobar-o-matic", fancy_cb, 4, 4, 128) br.add_button("Exit", sys.exit, 4, 48, 128) img = (data.load_image("button-pressed-grey.png"), data.load_image("button-unpressed-grey.png"),) br.add_sprite_button("KABOOM", fancy_cb, 4, 92, img) while 1: br.draw(screen) pygame.display.update() for ev in pygame.event.get(): if ev.type == pygame.MOUSEBUTTONDOWN or ev.type == pygame.MOUSEBUTTONUP: br.process_click(ev)
def __init__(self,position): gameObject.__init__(self, self.groups) self.image = data.load_image('redkoopa3.png') self.rect = self.image.get_rect(topleft=position) self.pic = 0
def __init__(self): RenderedObject.__init__(self) #init parent class self.shadow = data.load_image( "objects/npcshadow.png") #load shadow image self.shadow.convert_alpha() #convert the image for faster drawing