Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
 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
Пример #4
0
    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')
Пример #5
0
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]
Пример #6
0
 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
Пример #7
0
    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
Пример #8
0
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
Пример #9
0
    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
Пример #10
0
    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
Пример #11
0
 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]
Пример #12
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()
Пример #13
0
    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"
Пример #14
0
 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)
Пример #15
0
 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')
Пример #16
0
	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()
Пример #17
0
 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
Пример #18
0
    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()
Пример #19
0
 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
Пример #20
0
	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
Пример #21
0
 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
Пример #22
0
	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
Пример #23
0
    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()
Пример #24
0
    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()
Пример #25
0
 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()
Пример #26
0
 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()
Пример #27
0
    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
Пример #28
0
 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] ] }
Пример #29
0
    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)
Пример #30
0
    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)
Пример #31
0
    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)
Пример #32
0
 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)
Пример #33
0
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()
Пример #34
0
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()
Пример #35
0
# "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"] = {
Пример #36
0
    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
Пример #37
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()
Пример #38
0
    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
Пример #39
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())
Пример #40
0
    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()
Пример #41
0
            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)
Пример #42
0
 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
Пример #43
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