def enter(): global iku, background, Player, reimu, tenshi, marisa, PlayerHP, EnemyHP, Enemy_marisa, Enemy_reimu, Enemy_tenshi, Enemy_iku, EnemyPlayer, turn Player = DeckSelection.character EnemyPlayer = DeckSelection.Enemycharacter if turn == 1: if EnemyPlayer == 0: Enemy_marisa = Enemy_Marisa() game_world.add_object(Enemy_marisa, 1) elif EnemyPlayer == 1: Enemy_reimu = Enemy_Reimu() game_world.add_object(Enemy_reimu, 1) elif EnemyPlayer == 2: Enemy_iku = Enemy_Iku() game_world.add_object(Enemy_iku, 1) elif EnemyPlayer == 3: Enemy_tenshi = Enemy_Tenshi() game_world.add_object(Enemy_tenshi, 1) if Player == 0: reimu = Reimu() game_world.add_object(reimu, 1) elif Player == 1: marisa = Marisa() game_world.add_object(marisa, 1) elif Player == 2: iku = Iku() game_world.add_object(iku, 1) elif Player == 3: tenshi = Tenshi() game_world.add_object(tenshi, 1) elif turn == -1: if Player == 0: reimu = Reimu() game_world.add_object(reimu, 1) elif Player == 1: marisa = Marisa() game_world.add_object(marisa, 1) elif Player == 2: iku = Iku() game_world.add_object(iku, 1) elif Player == 3: tenshi = Tenshi() game_world.add_object(tenshi, 1) if EnemyPlayer == 0: Enemy_marisa = Enemy_Marisa() game_world.add_object(Enemy_marisa, 1) elif EnemyPlayer == 1: Enemy_reimu = Enemy_Reimu() game_world.add_object(Enemy_reimu, 1) elif EnemyPlayer == 2: Enemy_iku = Enemy_Iku() game_world.add_object(Enemy_iku, 1) elif EnemyPlayer == 3: Enemy_tenshi = Enemy_Tenshi() game_world.add_object(Enemy_tenshi, 1) background = BackGround() PlayerHP = Player_HP() EnemyHP = Enemy_HP() game_world.add_object(background, 0) game_world.add_object(PlayerHP, 0) game_world.add_object(EnemyHP, 0)
def create_marisa(ai_settings, screen, marisas, marisa_number, row_number): ''' Create a marisa and put her in the row. ''' marisa = Marisa(ai_settings, screen) marisa_width = marisa.rect.width marisa.x = marisa_width + 2 * marisa_width * marisa_number marisa.rect.x = marisa.x marisa.y = marisa.rect.height + 2 * marisa.rect.height * row_number marisa.rect.y = marisa.y #经验:the reason why only a single row of marisa will be drawn is when call 'marisas.draw(screen)', python will draw every sprite under marisas by their different coordinator, which comes from the attribute of rect. so marisa.y is only a attribute for instance marisa, but won't recorded into the rect as their spatial coordinator. marisas.add(marisa)
def run_game(): # Initial the game and create the game screen pygame.init() # 经验:it creates an instance in order to use the functions contains in Settings class ai_settings = Settings() screen = pygame.display.set_mode( (ai_settings.screen_width, ai_settings.screen_height)) pygame.display.set_caption('Japari Park') # Make the Play button play_button = Button(ai_settings, screen, 'Play') # create the LS soumao = Soumao(ai_settings, screen) marisa = Marisa(ai_settings, screen) # Make a group to store bullets bullets = Group() # Make a group of marisa marisas = Group() # Create a fleet of marisas gf.create_fleet(ai_settings, screen, marisas, soumao) # Create an instance to store game statistics and create a scoreboard stats = GameStats(ai_settings) sb = Scoreboard(screen, ai_settings, stats) # Strat the main loop while True: # Take action fot the mouse&keyboard event gf.check_events(ai_settings, screen, stats, play_button, soumao, marisas, bullets, sb) # Redraw the screen during each time pass the loop gf.update_screen(ai_settings, screen, stats, sb, soumao, marisas, bullets, play_button) # Keep the game inactive when soumao_limit is lower than 0 and therefore game_active is False if stats.game_active == True: soumao.update() marisa.update() bullets.update() # Update the position of bullets and delete unnecessary bullets gf.update_bullets(bullets, marisas, ai_settings, screen, soumao, stats, sb) # Update the position of marisas, include the drop, single-direction movement, direction change when hit edges, etc. gf.update_marisas(ai_settings, screen, stats, soumao, marisas, bullets, sb)
def check_bullet_marisa_collisions(bullets, marisas, ai_settings, screen, soumao, stats, sb): ''' Respond to bullet-marisa collisions. ''' # Record rects of overlap bullets and marisas. # Delete overlap bullets and marisas collisions = pygame.sprite.groupcollide(bullets, marisas, True, True) # Create two type of bullets, one disappear when hit marisa, second continue fly untill goes out of screen. # Scoring when a marisa is collided with bullet if collisions: for marisas in collisions.values(): stats.score += ai_settings.marisa_points * len(marisas) #print (stats.score) sb.prep_score() check_high_score(stats, sb) marisa = Marisa(ai_settings, screen) marisa_number_x = get_marisa_line(ai_settings, marisa.rect.width) number_rows = get_marisa_row(ai_settings, soumao.rect.height, marisa.rect.height) if len(marisas) == 0: # Destroy all existing bullets and create new fleet bullets.empty() ai_settings.increase_speed() # If the entire fleet is destroyed, increase a game level stats.level += 1 sb.prep_level() # Call prep_level() to make sure the new level is displayed correctly create_fleet(ai_settings, screen, marisas, soumao) '''
def create_fleet(ai_settings, screen, marisas, soumao): ''' Create a fleet of marisa to destroy whole chewan. ''' # Create a marisa and find number of marisa in a row. # One width/height of marisa between each of them. marisa = Marisa(ai_settings, screen) marisa_number_x = get_marisa_line(ai_settings, marisa.rect.width) number_rows = get_marisa_row(ai_settings, soumao.rect.height, marisa.rect.height) # Create a fleet of marisa #print (number_rows) #print (marisa_number_x) for row_number in range(number_rows): for marisa_number in range(marisa_number_x): create_marisa(ai_settings, screen, marisas, marisa_number, row_number)
def update(): global iku, background, Player, reimu, tenshi, marisa, PlayerHP, EnemyHP, Enemy_marisa, Enemy_reimu, Enemy_tenshi, Enemy_iku, EnemyPlayer, turn, turncheak for game_objcet in game_world.all_objects(): game_objcet.update() if (turncheak == 1): game_world.remove_object(reimu) game_world.remove_object(marisa) game_world.remove_object(iku) game_world.remove_object(tenshi) game_world.remove_object(Enemy_reimu) game_world.remove_object(Enemy_marisa) game_world.remove_object(Enemy_iku) game_world.remove_object(Enemy_tenshi) if turn == 1: if EnemyPlayer == 0: Enemy_marisa = Enemy_Marisa() game_world.add_object(Enemy_marisa, 1) elif EnemyPlayer == 1: Enemy_reimu = Enemy_Reimu() game_world.add_object(Enemy_reimu, 1) elif EnemyPlayer == 2: Enemy_iku = Enemy_Iku() game_world.add_object(Enemy_iku, 1) elif EnemyPlayer == 3: Enemy_tenshi = Enemy_Tenshi() game_world.add_object(Enemy_tenshi, 1) if Player == 0: reimu = Reimu() game_world.add_object(reimu, 1) elif Player == 1: marisa = Marisa() game_world.add_object(marisa, 1) elif Player == 2: iku = Iku() game_world.add_object(iku, 1) elif Player == 3: tenshi = Tenshi() game_world.add_object(tenshi, 1) elif turn == -1: if Player == 0: reimu = Reimu() game_world.add_object(reimu, 1) elif Player == 1: marisa = Marisa() game_world.add_object(marisa, 1) elif Player == 2: iku = Iku() game_world.add_object(iku, 1) elif Player == 3: tenshi = Tenshi() game_world.add_object(tenshi, 1) if EnemyPlayer == 0: Enemy_marisa = Enemy_Marisa() game_world.add_object(Enemy_marisa, 1) elif EnemyPlayer == 1: Enemy_reimu = Enemy_Reimu() game_world.add_object(Enemy_reimu, 1) elif EnemyPlayer == 2: Enemy_iku = Enemy_Iku() game_world.add_object(Enemy_iku, 1) elif EnemyPlayer == 3: Enemy_tenshi = Enemy_Tenshi() game_world.add_object(Enemy_tenshi, 1) turncheak = 0