飞机大战优化续篇5:实现游戏开始画面与运行画面的分离

按照昨天的计划,今天开始探索“关卡制”的游戏模式,那么首当其冲的便是有一个WELCOME欢迎界面,通过点击【开始游戏】按钮,进入第一关的游戏,第一关游戏通过后(消灭BOSS),将在胜利画面提供进入下一关的按钮。
目前进展:
已实现WELCOME欢迎界面的设计、调试与测试,功能正常。
关键点:

1
2
3
4
5
6
7
1:在主程序定义一个游戏状态的类(class GameState),在类里面按游戏的逻辑Stage进行Function设计,比如:def Welcome_screen、def First_Stage_main_game、def Scecond_Stage_main_game、def state_manager...
2:主程序main()里面的原程序内容,除开clock外都移至def First_Stage_main_game中。
3:主程序初始化部分,进行类实例化game_state = GameState()
4:主程序main()内,调用game_state实例对象的state_manager方法,来判断游戏目前所处Stage。
5: state_manager方法中,主要根据类变量self.state的值的内容来判断,进入哪个Stage进行游戏执行。(默认状态=‘Welcome_screen’)
6: 在Welcome_screen方法中,通过捕捉鼠标是否点击【开始游戏】按钮的事件,来进入第一个Stage ---》 First_Stage_main_game
7: 在First_Stage_main_game通关后,在胜利界面,点击【下一关】按钮,进入Second_Stage_main_game

注意事项:
1:状态类内的所有Function都要重新引入Clock事件,并在结束时刷新画面pygame.display.flip(),最开始在WELCOME画面没有刷新就导致了显示画面异常。
2:如果需要调用主程序初始化时定义的变量,需要使用全局变量模式。
3:delay类型的变量,需要放到主程序的初始化环境部分进行定义,否则在funcion内就相当于每帧都重新赋了初值,则不能实现延迟效果。

下一步将尝试开发第二关卡内容,如果顺利实现,将架构重新优化,形成一个成熟的模板,可供关卡制游戏作为模板参考。
晚安。