天天看点

python从入门到实践外星人_《Python从入门到实践》外星人入侵游戏

1 importsys2 from time importsleep3

4 importpygame5

6 from bullet importBullet7 from alien importAlien8

9 defcheck_keydown_events(event, ai_settings, screen, ship, bullets):10 """响应按键"""

11 if event.key ==pygame.K_RIGHT:12 ship.moving_right =True13 elif event.key ==pygame.K_LEFT:14 ship.moving_left =True15 elif event.key ==pygame.K_UP:16 ship.moving_up =True17 elif event.key ==pygame.K_DOWN:18 ship.moving_down =True19 elif event.key ==pygame.K_SPACE:20 fire_bullet(ai_settings, screen, ship, bullets)21 elif event.key ==pygame.K_q:22 sys.exit()23

24 defcheck_keyup_events(event, ai_settings, screen, ship, bullets):25 """松开响应"""

26 if event.key ==pygame.K_RIGHT:27 ship.moving_right =False28 elif event.key ==pygame.K_LEFT:29 ship.moving_left =False30 elif event.key ==pygame.K_UP:31 ship.moving_up =False32 elif event.key ==pygame.K_DOWN:33 ship.moving_down =False34

35 defcheck_events(ai_settings, screen, stats, sb, play_button, ship, aliens,36 bullets):37 """响应按键和鼠标事件"""

38 for event inpygame.event.get():39 if event.type ==pygame.QUIT:40 sys.exit()41 elif event.type ==pygame.KEYDOWN:42 check_keydown_events(event, ai_settings, screen, ship, bullets)43

44 elif event.type ==pygame.KEYUP:45 check_keyup_events(event, ai_settings, screen, ship, bullets)46

47 elif event.type ==pygame.MOUSEBUTTONDOWN:48 mouse_x, mouse_y =pygame.mouse.get_pos()49 check_play_button(ai_settings, screen, stats, sb, play_button,50 ship, aliens, bullets, mouse_x, mouse_y)51

52 defcheck_play_button(ai_settings, screen, stats, sb, play_button, ship,53 aliens, bullets, mouse_x, mouse_y):54 """在玩家单击Play按钮时开始新游戏"""

55 button_clicked =play_button.rect.collidepoint(mouse_x, mouse_y)56 if button_clicked and notstats.game_active:57 #重置游戏设置

58 ai_settings.initialize_dynamic_settings()59

60 #隐藏光标

61 pygame.mouse.set_visible(False)62

63 #重置游戏统计信息

64 stats.reset_stats()65 stats.game_active =True66

67 #重置记分牌图像

68 sb.prep_score()69 sb.prep_high_score()70 sb.prep_level()71 sb.prep_ships()72

73 #清空外星人列表和子弹列表

74 aliens.empty()75 bullets.empty()76

77 #创建一群新的外星人,并让飞船居中

78 create_fleet(ai_settings, screen, ship, aliens)79 ship.center_ship()80

81 deffire_bullet(ai_settings, screen, ship, bullets):82 """Fire a bullet, if limit not reached yet."""

83 #Create a new bullet, add to bullets group.

84 if len(bullets)

<