python制作射击游戏_python实现飞船射击矩形的小游戏

  • Post author:
  • Post category:python


文件“game_functions.py”存放跟游戏有关的所有业务逻辑函数(分析重点代码),代码如下图:

关于事件的函数:

1.函数“check_keydown_events”,当按下键盘下键“K_DOWN”,移动状态“move_down”为true;当按下键盘上键“K_UP”,移动状态“move_up”为true;当按下空格键“K_SPACE”,播放射击音效和发射子弹;当按下“P”键时(“K_p”),则开始游戏;当按下“Q”键时,则退出程序“sys.exit()”;

2.函数“check_keyup_events”,当松开下键“K_DOWN”,移动状态“move_down”为False;当松开上键“K_UP”,移动状态“move_up”为False;

3.函数“check_play_button”用来点击按钮“Play”开始游戏(执行函数“start_game”清空编组的数据和重置统计信息的数据);

4.函数“check_events”用来响应按键和鼠标事件,当点击屏幕关闭按钮“QUIT”,则保存最高分到文件并退出系统“sys.exit()”;当按键时(KEYDOWN),调用函数“check_keydown_events”;当松开按键时(check_keyup_events),调用函数“check_keyup_events”;当点击鼠标时(MOUSEBUTTONDOWN),判断是否按钮“Play”区域,如果是则调用函数“check_play_button”开始游戏。

关于文件的函数:

1.函数“save_file”用来存储最高分的数据到文件;

关于矩形的函数:

1.函数“create_rect”用来创建单个矩形,注意没有矩形才能创建,所以屏幕一直就只有一个矩形进行移动;

关于子弹的函数:

1.函数“fire_bullet”用来创建单颗子弹,按空格键才创建;

2.函数“check_bullet_rect_collisions”用来检查是否有子弹击中矩形:

1)如果击中,播放爆炸声音(explosiveSound.play());

2)计算得分“settings.score”,注意执行scoreboard.prep_score()来重新渲染分数;

3)调用函数“check_high_score”,如果分数大于最高分,则重新渲染分数到最高分;

4)如果每一关设置的通关数量“settings.level_number”为0,则执行“settings.increase_speed()”来提高速度和分数;

3.函数“update_bullets”:

1)当子弹没有击中矩形时(bullet.rect.right > screen.get_rect().right),删除创建的子弹,并减少可射失的数量(注意执行scoreboard.prep_ships(),不然左上角显示的飞船数量不会更新);

2)当可射失的数量“settings.ship_limit”为0时,停止游戏并显示按钮“Play”。

关于屏幕的函数:

1.函数“update_screen”用来更新屏幕的各种信息。