def check_key_down(event, mario, platforms_top, screen, fireballs, viewport): # character jumps only when he is on the floor. this prevents him from doing multiple jumps while in the air if event.key == pygame.K_d: if not mario.finish: mario.jump(platforms_top) if event.key == pygame.K_f: if not mario.finish: if mario.status == 'fire': if len(fireballs) < 2: pygame.mixer.Channel(3).play( pygame.mixer.Sound('resources/sounds/fireball.wav')) if mario.direction == "right": mario.change_image(15) fireball = Fireball(screen, mario) elif mario.direction == 'left': mario.change_image(16) fireball = Fireball(screen, mario) fireballs.add(fireball) viewport.add(fireballs) if event.key == pygame.K_q: sys.exit()
def throw_fireball(self, screen, settings, fireball_group, map_group): if self.facing_left: f = Fireball(screen, settings, self.rect.left, self.rect.centery) f.facing_left = True f.add(map_group, fireball_group) else: f = Fireball(screen, settings, self.rect.right, self.rect.centery) f.facing_left = False f.add(map_group, fireball_group) self.fireball = False
def castSpell(self): if self._attackCounter > 0: return if self.stats['mana'] < 7: return self.stats['mana'] -= 7 # Każdy czar kosztuje 7 many self._attackCounter = 40 _modifier = (self.stats['intelligence'] * 67 + self.stats['agility'] * 33) / 10000.0 if self._spell & MAGIC_ICE: _id = 'hero_iceblast_' + str(random.randint(0, 1048576)) _layer = self._map.getLayer('Missiles') _layer.add( _id, Iceblast(self._map, _layer, _id, self._direction, self._pos, _modifier)) elif self._spell & MAGIC_FIRE: _id = 'hero_fireball_' + str(random.randint(0, 1048576)) _layer = self._map.getLayer('Missiles') _layer.add( _id, Fireball(self._map, _layer, _id, self._direction, self._pos, _modifier)) elif self._spell & MAGIC_HEAL: _id = 'hero_heal_' + str(random.randint(0, 1048576)) _layer = self._map.getLayer('Missiles') _layer.add( _id, Heal(self._map, _layer, _id, self._direction, self._pos, _modifier))
def emit(self): '''Protocol to emit a new FireBall''' Direction = random.randint(0, 1) fireball = Fireball(self.posX, self.posY, 1 - 2 * Direction) self.Fireballs.append(fireball) self.times = 0
def test_vel_max(self): df = Fireball().fireballdf df['velocity'] = df['Velocity (km/s)'] df_adj = df[np.abs(df.velocity - df.velocity.mean()) <= (1.5 * df.velocity.std())] self.assertTrue( (df_adj.velocity.max() > 1.5 * df_adj.velocity.std())) # verify the equation works
def __init__(self, fireball_num, pit_depth, colour, screen_x, screen_y, fireball_images): self.fireballs = [] self.fireball_images = fireball_images for i in range(0, fireball_num): self.fireballs.append(Fireball(fireball_images, screen_x, screen_y)) self.renderer = pygame.sprite.RenderPlain(self.fireballs)
def test_blocking(self): for test in range(30): board = game.Board(0, 3, 1) pos = self.get_blocking(board) pos_x = pos[0] pos_y = pos[1] fireball = Fireball(pos_x - 1, pos_y, 1) #print pos, self.get_fireball(board) board.moveFireball(fireball)
def blitme_throwfire(self, stats): if stats.mario_facing_left: self.image = pygame.image.load('images/FireMario/14.png') self.screen.blit(self.image, self.rect) if stats.mario_facing_right: self.image = pygame.image.load('images/FireMario/15.png') self.screen.blit(self.image, self.rect) pygame.display.flip() fireball = Fireball(stats, self) fireball.bounce(stats, self) sleep(.04)
def CreateFireball(self, location, monsterIndex): if len(self.Fireballs) < len(self.Enemies) * 5: self.Fireballs.append( Fireball(self.IMAGES["fireballright"], (location[0], location[1] + 15), len(self.Fireballs), 2 + len(self.Enemies)/2, self.rng, self._dir)) # Starts monster's animation self.Enemies[monsterIndex].setStopDuration(15) self.Enemies[monsterIndex].setPosition( (self.Enemies[monsterIndex].getPosition()[0], self.Enemies[monsterIndex].getPosition()[1] - 12)) self.Enemies[monsterIndex].setCenter(self.Enemies[monsterIndex].getPosition()) self.createGroups() # We recreate the groups so the fireball is added
def test_gravityfall(self): for test in range(30): board = game.Board(0, 3, 1) pos = self.get_genericchar(board) pos_x = pos[0] pos_y = pos[1] fireball = Fireball(pos_x - 1, pos_y, 1) board.moveFireball(fireball) new = self.get_fireball(board) if not new: continue new_x = new[0] new_y = new[1] assert pos_y == new_y - 1 assert board.board[new_x + 1][new_y] != game.GENERICCHAR
def check_keydown_events(event, ai_settings, screen, dragon, fireballs): '''Reaction for pressing the button.''' if event.key == pygame.K_UP: dragon.moving_up = True elif event.key == pygame.K_DOWN: dragon.moving_down = True elif event.key == pygame.K_RIGHT: dragon.moving_right = True elif event.key == pygame.K_LEFT: dragon.moving_left = True elif event.key == pygame.K_SPACE: #Creating new fireball and adding it to the group if (len(fireballs) ) < ai_settings.fireballs_allowed and dragon.orient == 1: new_fireball = Fireball(ai_settings, screen, dragon) fireballs.add(new_fireball) elif event.key == pygame.K_q: sys.exit()
def _punch(self): """Atakuje czarem ognia lub lodu.""" if random.randint( 1, 2) == 1 and (not random.randint(0, 8) or utils.distance(self._grid[:2], self._target.getGrid()[:2]) > 1 ): # ogniem najlepiej wtedy gdy cel jest daleko _id = 'mage_fireball_' + str(random.randint(0, 1048576)) _layer = self._map.getLayer('Missiles') _layer.add( _id, Fireball(self._map, _layer, _id, self._direction, self._pos)) else: _id = 'mage_iceblast_' + str(random.randint(0, 1048576)) _layer = self._map.getLayer('Missiles') _layer.add( _id, Iceblast(self._map, _layer, _id, self._direction, self._pos))
def FireballMotion(self): """Controls the occurrence and speed of fireballs""" if self.__cnt_fireballs == 150: for donkey in self.__donkeys: pos = donkey.getPosRight() if self.__board.getCharAt(pos) != "H": self.__fireballs.append(Fireball(self.__board, pos, self.__player)) self.__fire_affect.play() self.__cnt_fireballs = 0 else: self.__cnt_fireballs += 1 if self.__mov_fireballs == 1 or self.__cnt_fireballs == 0: for ball in self.__fireballs: if ball.getDeadFlag() == False: ball.Motion(self.__board, self.__player) else: self.__fireballs.remove(ball) self.__mov_fireballs = 0 else: self.__mov_fireballs += 1
def shoot(self, target): self.cooldown = self.cooldown_max return Fireball(self.pos, target)
def release_fireball(self): if len(self.fireballs) < self.settings.fireballs_allowed: new_fireball = Fireball(self) self.fireballs.add(new_fireball)
def fire(self): if self.facing_right: ball = Fireball(self.screen, self, 5) else: ball = Fireball(self.screen, self, -5) self.fireballs.add(ball)
def fire_fireball(self): """Create a new fireball and add it to the fireballs group.""" if len(self.fireballs) < self.settings.fireballs_allowed: new_fireball = Fireball(self) self.fireballs.add(new_fireball)
def animate(self, dt): if pygame.time.get_ticks() - self.time >= self.tmp: if self.jump_animation: if self.key == self.jump_sheet.get_nb_sprites() - 1: self.jump() elif self.moving_right: self.key += 1 self.image = self.jump_right_sprites[self.key][0] else: self.key += 1 self.image = self.jump_left_sprites[self.key][0] self.tmp = self.jump_left_sprites[self.key][1] elif self.ulti: if self.key == self.ultimate_sheet.get_nb_sprites() - 1: self.ulti = False self.change_animation() elif self.key == self.ultimate_sheet.get_nb_sprites() - 2: laser = Laser_Beam(self.W, self.H, self.ulti_pos) self.laser_beam.add(laser) self.key += 1 self.ulti_prev_surf_alpha = 5 self.ulti_prev_surf.fill( (0, 0, 0, self.ulti_prev_surf_alpha)) self.ulti_temp_time = pygame.time.get_ticks() self.ulti_time_seconds = 5 else: self.ulti_prev_surf_alpha += 15 self.ulti_prev_surf.fill( (0, 0, 0, self.ulti_prev_surf_alpha)) if self.moving_right: self.key += 1 self.image = self.ultimate_right_sprites[self.key][0] else: self.key += 1 self.image = self.ultimate_left_sprites[self.key][0] self.tmp = self.ultimate_left_sprites[self.key][1] elif self.spelling: if self.key == self.spell_sheet.get_nb_sprites() - 1: self.spelling = False if self.moving_right: fireball = Fireball( (self.rect.right, self.rect.centery), 1) else: fireball = Fireball( (self.rect.left, self.rect.centery), -1) fireball.add(self.fireballs) self.change_animation() elif self.moving_right: self.key += 1 self.image = self.spell_right_sprites[self.key][0] else: self.key += 1 self.image = self.spell_left_sprites[self.key][0] self.tmp = self.spell_left_sprites[self.key][1] elif not self.moving: self.key = (self.key + 1) % self.idle_sheet.get_nb_sprites() self.tmp = self.idle_right_sprites[self.key][1] if self.moving_right: self.image = self.idle_right_sprites[self.key][0] else: self.image = self.idle_left_sprites[self.key][0] else: self.key = (self.key + 1) % self.move_sheet.get_nb_sprites() self.tmp = self.move_right_sprites[self.key][1] if not self.moving_right: self.image = self.move_left_sprites[self.key][0] else: self.image = self.move_right_sprites[self.key][0] x, bottom = self.rect.x, self.rect.bottom self.rect = self.image.get_rect(x=x, bottom=bottom) self.time = pygame.time.get_ticks()
def test_header(self): df = Fireball().fireballdf head = Fireball().get_header() self.assertTrue(len(head) <= 5)
def test_fb(self): df = Fireball().fireballdf self.assertTrue(isinstance(df, pd.DataFrame))
def spawn_fireball(self, x, y, move_direction): self.projectiles.append(Fireball(x, y, move_direction))
def test_size(self): df = Fireball().fireballdf self.assertTrue(len(df) == 822)
def main(turns, score): pygame.init() pygame.display.set_caption('Donkey Kong') swidth = 800 sheight = 620 clock = pygame.time.Clock() disp = pygame.display.set_mode([swidth, sheight], 0, 32) BLACK = (0, 0, 0) class Gameline(pygame.sprite.Sprite): def __init__(self, color, length): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface([length, 4]) self.image.fill(color) self.rect = self.image.get_rect() class Vertline(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = pygame.Surface([4, 45]) self.image.fill(BLACK) self.rect = self.image.get_rect() self.rect.y = 10 line1 = Vertline() line1.rect.x = 250 line2 = Vertline() line2.rect.x = 450 list_obj = pygame.sprite.Group() pl_list = pygame.sprite.Group() coin_list = pygame.sprite.Group() ladder_list = pygame.sprite.Group() fire_list = pygame.sprite.Group() gor_list = pygame.sprite.Group() heart = pygame.sprite.Group() ps_list = pygame.sprite.Group() list_obj.add(line1) list_obj.add(line2) for i in range(3): line = Gameline(BLACK, 600) line.rect.x = -10 line.rect.y = 100 + i * 200 list_obj.add(line) for i in range(2): line = Gameline(BLACK, 600) line.rect.x = 230 line.rect.y = 200 + i * 200 list_obj.add(line) line = Gameline(BLACK, 810) line.rect.x = -10 line.rect.y = 600 list_obj.add(line) line = Gameline(BLACK, 200) line.rect.x = 250 line.rect.y = 50 list_obj.add(line) mario = Player() pl_list.add(mario) gor = Gorilla() gor_list.add(gor) ps = Princess() ps_list.add(ps) ladxy = [520, 298, 550, 498, 300, 398, 300, 198, 540, 98] for i in range(0, 10, 2): lad = Ladders(ladxy[i], ladxy[i + 1]) ladder_list.add(lad) for i in range(12): c = Coins() c.cd(1) coin_list.add(c) for i in range(12): c = Coins() c.cd(2) coin_list.add(c) c = 50 while True: heart.empty() life(turns, heart) font = pygame.font.Font(None, 36) text = font.render("Score = " + str(score), 1, (10, 10, 10)) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() s = pygame.sprite.groupcollide(pl_list, coin_list, False, True) score += (len(s) * 5) if score >= 50: list_obj.remove(line1) list_obj.remove(line2) flag = pygame.sprite.groupcollide(pl_list, ladder_list, False, False) if len(flag) > 0: for i in ladder_list: if flag.values()[0][0] == i: i.move(mario) else: mario.move() mario.rect.y = mario.checkmove(list_obj) keys = pygame.key.get_pressed() if keys[K_q]: pygame.quit() sys.exit() if keys[K_SPACE]: flag = 1 v = -50 if flag == 1: mario.rect.y += v v += 10 if v == 40: flag = 0 if c % 100 == 0: f = Fireball(gor, fire_list) c = 850 else: c += 1 for qw in fire_list: ladcol = pygame.sprite.spritecollideany(qw, ladder_list, collided=None) plcol = pygame.sprite.spritecollideany(qw, pl_list, collided=None) gorcol = pygame.sprite.groupcollide(gor_list, pl_list, False, False) """if ladcol != None : r=random.randrange(0,2) print r if r == 1 : qw.state = 1 qw.h += 20 if qw.state == 1 : qw.rect.y += qw.h qw.h += 1 if qw.h == 23 : qw.state = 0 qw.h = 0 else : """ if plcol != None or len(gorcol) < 0: turns -= 1 if turns == 0: font = pygame.font.Font(None, 72) text = font.render("GAME OVER ", 1, (10, 10, 10)) disp.blit(text, (150, 300)) pygame.display.update() time.sleep(2) pygame.quit() sys.exit() main(turns, score) qw.move(pl_list, list_obj, fire_list) gor.move(500, 20) ps.move(410, 260) if mario.rect.x >= 260 and mario.rect.x <= 400 and mario.rect.y >= 00 and mario.rect.y <= 30: font = pygame.font.Font(None, 72) text = font.render("YOU WIN SCORE = " + str(score), 1, (10, 10, 10)) disp.blit(text, (150, 300)) pygame.display.update() time.sleep(2) pygame.quit() sys.exit() bgimg = pygame.image.load('background.png') #bgimg.rect = pygame.get_rect() disp.blit(bgimg, (0, 0)) disp.blit(text, (650, 70)) pl_list.draw(disp) coin_list.draw(disp) ladder_list.draw(disp) heart.draw(disp) gor_list.draw(disp) list_obj.draw(disp) fire_list.draw(disp) ps_list.draw(disp) pygame.display.update() clock.tick(20)
def mario_move(mario, settings, screen, fireball): for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT: # mario.is_idle = False mario.is_facing_left = False mario.moving_left = False mario.is_facing_right = True mario.moving_right = True mario.go_down = False elif event.key == pygame.K_LEFT: # mario.is_idle = False mario.is_facing_right = False mario.moving_right = False mario.is_facing_left = True mario.moving_left = True mario.go_down = False elif event.key == pygame.K_SPACE: # check_mario_ground(settings, screen, mario, ground) # mario.is_idle = False if not mario.falling: mario.moving_left = False mario.moving_right = False mario.jump = True mario.go_down = False mario.last_y_position = mario.rect.y # if not mario.mario_bounce: # mario.last_y_position = mario.rect.y if event.key == pygame.K_RIGHT: mario.moving_left = False mario.moving_right = True mario.jump = True mario.go_down = False elif event.key == pygame.K_LSHIFT or pygame.K_RSHIFT: mario.sprint = True if event.key == pygame.K_DOWN: if mario.is_big: # mario.is_idle = False mario.moving_right = False mario.moving_left = False mario.crouch = True elif not mario.is_big: mario.moving_right = False mario.moving_left = False mario.jump = False mario.crouch = False if mario.is_fire: if event.key == pygame.K_LSHIFT or pygame.K_RSHIFT: mario.throw_fire = True if len(fireball) < settings.fireballs_allowed: new_fireball = Fireball(settings, screen, mario) fireball.add(new_fireball) elif event.key == pygame.K_q: sys.exit() elif event.type == pygame.KEYUP: if event.key == pygame.K_RIGHT: # mario.is_idle = True mario.moving_right = False elif event.key == pygame.K_LEFT: # mario.is_idle = True mario.moving_left = False elif event.key == pygame.K_SPACE: # mario.is_idle = True mario.jump = False mario.falling = True elif event.key == pygame.K_LSHIFT or pygame.K_RSHIFT: mario.sprint = False if mario.is_fire: if event.key == pygame.K_LSHIFT or pygame.K_RSHIFT: mario.throw_fire = False if mario.is_big: if event.key == pygame.K_DOWN: mario.crouch = False
def main(): l = 1 # variable to store the present level score = 0 #initialising pygame pygame.init() # declaring game objects for the first time size = [constants.SCREEN_WIDTH, constants.SCREEN_HEIGHT] screen = pygame.display.set_mode(size) pygame.display.set_caption("Donkey Kong") # declaring player object player = Player() # donkey object donkey = Donkey() donkey.rect.x = random.randrange(100, 280) donkey.rect.y = 89 donkey_list = pygame.sprite.Group() donkey_list.add(donkey) # fireball instance fireball_list = pygame.sprite.Group() fireball = Fireball() fireball.rect.x = donkey.rect.x + 40 fireball.rect.y = donkey.rect.y fireball_list.add(fireball) level_list = [] level_list.append(level.Board(player)) current_level_no = 0 current_level = level_list[current_level_no] active_sprite_list = pygame.sprite.Group() player.level = current_level player.rect.x = 40 player.rect.y = constants.SCREEN_HEIGHT - player.rect.height active_sprite_list.add(player) active_sprite_list.add(donkey) done = False background_image = pygame.image.load("./images/background2.jpg").convert() background_image = pygame.transform.scale(background_image, [1000, 700]) clock = pygame.time.Clock() restart = False # Main loop where all the updation takes place while not done: f = 0 # flag variable # to check which keys are pressed for event in pygame.event.get(): if event.type == pygame.QUIT: done = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: done = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_a: player.go_left() if event.key == pygame.K_d: player.go_right() if event.key == pygame.K_SPACE: player.jump() if event.key == pygame.K_w and len( pygame.sprite.spritecollide( player, player.level.ladder_list, False)) > 0: f = 1 player.go_up() if event.key == pygame.K_s and len( pygame.sprite.spritecollide( player, player.level.ladder_list, False)) > 0: f = 1 player.go_down() if event.type == pygame.KEYUP: if event.key == pygame.K_a and player.change_x < 0: player.stop() if event.key == pygame.K_d and player.change_x > 0: player.stop() if event.key == pygame.K_w and len( pygame.sprite.spritecollide( player, player.level.ladder_list, False)) > 0: player.stop2() if event.key == pygame.K_s and len( pygame.sprite.spritecollide( player, player.level.ladder_list, False)) > 0: player.stop2() #checking for collisions if len( pygame.sprite.spritecollide(player, player.level.ladder_list, False)) > 0: f = 1 if len(pygame.sprite.spritecollide(player, donkey_list, False)) > 0: done = True if len(pygame.sprite.spritecollide(player, fireball_list, False)) > 0: player.lives -= 1 player.score -= 25 player.reset() if player.lives == 0: done = True if len( pygame.sprite.spritecollide(player, player.level.queen_list, False)) > 0: restart = True ######### Restarts game when queen is rescued ########## if restart == True: l += 1 score += player.score player = Player() donkey = Donkey() donkey.rect.x = random.randrange(100, 280) donkey.rect.y = 89 donkey_list = pygame.sprite.Group() donkey_list.add(donkey) # fireball instance fireball_list = pygame.sprite.Group() fireball = Fireball() fireball.rect.x = donkey.rect.x + 40 fireball.rect.y = donkey.rect.y fireball.speed = l fireball_list.add(fireball) level_list = [] level_list.append(level.Board(player)) current_level_no = 0 current_level = level_list[current_level_no] active_sprite_list = pygame.sprite.Group() player.level = current_level player.rect.x = 40 player.rect.y = constants.SCREEN_HEIGHT - player.rect.height active_sprite_list.add(player) active_sprite_list.add(donkey) player.score = score restart = False # updating all game objects fireball_list.update() active_sprite_list.update(f) current_level.update() if player.rect.right > constants.SCREEN_WIDTH: player.rect.right = constants.SCREEN_WIDTH if player.rect.left < 0: player.rect.left = 0 screen.blit(background_image, [0, 0]) # generating fireballs if donkey.count == 0: fireball = Fireball() p = getPosition(donkey) fireball.speed = l fireball.rect.x = p[0] + 40 fireball.rect.y = p[1] fireball_list.add(fireball) for j in fireball_list: hit_platform = pygame.sprite.spritecollide( j, player.level.platform_list, False) if len(hit_platform) > 0: j.rect.bottom = hit_platform[0].rect.top if done: font = pygame.font.SysFont("serif", 25) text = font.render("Game Over :( , Now we are going to exit", True, constants.RED) center_x = (constants.SCREEN_WIDTH // 2) - (text.get_width() // 2) center_y = (constants.SCREEN_HEIGHT // 2) - (text.get_height() // 2) screen.blit(text, [center_x, center_y]) ########## Dispaying the game score, no of lives left and present Level ############# if not done: current_level.draw(screen) active_sprite_list.draw(screen) fireball_list.draw(screen) font = pygame.font.SysFont("serif", 25) text = font.render("Game Score %s" % player.score, True, constants.WHITE) center_x = 0 center_y = (constants.SCREEN_HEIGHT - 25) screen.blit(text, [center_x, center_y]) font = pygame.font.SysFont("serif", 25) text = font.render("Lives Left : %s" % player.lives, True, constants.WHITE) center_x = 700 center_y = (constants.SCREEN_HEIGHT - 25) screen.blit(text, [center_x, center_y]) font = pygame.font.SysFont("serif", 25) text = font.render("LEVEL %s" % l, True, constants.WHITE) center_x = 850 center_y = (constants.SCREEN_HEIGHT - 25) screen.blit(text, [center_x, center_y]) clock.tick(60) pygame.display.update() pygame.quit()
def addFireball(self): self.fireballs.append( Fireball(self.fireball_images, self.fireballs[0].screen_x, self.fireballs[0].screen_y)) self.renderer = pygame.sprite.RenderPlain(self.fireballs)
def main(): pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("DonkeyKong") # Initialize level lifes = 3 score = 0 COINS = 20 times = 0 done = False donkey = Donkey() donkey_group = pygame.sprite.GroupSingle(donkey.makeDonkey()) hero = Player() hero_group = pygame.sprite.GroupSingle(hero.makePlayer(lifes)) fireball_group = pygame.sprite.OrderedUpdates() Fireballs = [] fireballS = Fireball() fireSource = pygame.sprite.GroupSingle(fireballS.makeFireSource()) coinGroup = comLevels.genCoins(COINS) pygame.key.set_repeat(8, 10) FIRETIME = pygame.USEREVENT + 1 pygame.time.set_timer(pygame.USEREVENT, 150) pygame.time.set_timer(FIRETIME, 2000) while done == False: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_q or event.key == pygame.K_ESCAPE: done = True elif event.key == pygame.K_SPACE: hero.setState("JUMPING") elif event.key == pygame.K_w or event.key == pygame.K_UP: hero.moveUP(screen, hero_group, level.getStairGroup()) elif event.key == pygame.K_s or event.key == pygame.K_DOWN: hero.moveDown(screen, hero_group, level.getStairGroup()) elif event.key == pygame.K_a or event.key == pygame.K_LEFT: if hero.getState == ("JUMPING"): hero.allowLeft(True) hero.moveLeft(screen) elif event.key == pygame.K_d or event.key == pygame.K_RIGHT: if hero.getState() == "JUMPING": hero.allowRight(True) hero.moveRigth(screen) elif event.key == pygame.K_f: for ball in Fireballs: ball.setSpeedP() elif event.key == pygame.K_b: for ball in Fireballs: ball.setSpeedN() if event.type == pygame.USEREVENT: donkey.move() donkey.chgSpeed() if event.type == FIRETIME: fireball = Fireball() fireball_group.add(fireball.makeFireball()) Fireballs.append(fireball) for ball in Fireballs: ball.moveBalls() ball.gravity() ball.onBarless() ball.killFireball() collDon = pygame.sprite.groupcollide(donkey_group, hero_group, False, True) collFire = pygame.sprite.groupcollide(fireball_group, hero_group, False, True) if len(collDon) > 0 or len(collFire) > 0: if score >= 25: score -= 25 else: score = 0 print "player: D " + str(hero.getPosition("D")) print "player: L " + str(hero.getPosition("L")) print "donkey: D " + str(donkey.getPosition("D")) print "donkey: L " + str(donkey.getPosition("L")) lifes = hero.playerDied(screen) pygame.display.update() hero_group = pygame.sprite.GroupSingle(hero.makePlayer(lifes)) try: time.sleep(3) except: print "key" collCoin = pygame.sprite.groupcollide(coinGroup, hero_group, True, False) if len(collCoin) > 0: score += 20 if hero.getState() == "JUMPING": hero.printPos() print "--------" times = hero.jump(times) if times == 4: hero.setState("STANDING") hero.allowLeft(False) hero.allowRight(False) times = 0 level.selectLevel(screen, 1) coinGroup.draw(screen) hero_group.draw(screen) fireSource.draw(screen) fireball_group.draw(screen) donkey_group.draw(screen) comLevels.updateLife(lifes, screen) comLevels.updateScore(score, screen) pygame.display.update() if lifes == 0: break pygame.quit() sys.exit()
def launch_fire(self): self.all_fireball.add(Fireball(self))
def shoot_fireball(settings, screen, hero, fireballs): """Shoot a fireball from the hero if the limit has not been reached.""" if len(fireballs) < settings.fireballs_allowed: new_fireball = Fireball(settings, screen, hero) fireballs.add(new_fireball)