简介:我们要制作一个射击游戏,该游戏的主体内容就是,在一个屏幕中,玩家扮演一个角色,可以发出子弹,来射击屏幕中的敌人。玩家自己可以进行移动,敌人也可以进行一些移动,玩家碰到敌人就会死亡,然后重新开始新的一轮。可以增加一些有趣的功能,比如玩家可以选择不同的飞船,发出不同类型的子弹,最终制作的成品如图。



制作方法:这里制作游戏使用的语言是python,需要调用里面的pygame包,pygame真的是一个功能十分强大包,所有你能想到的一些初级游戏,他都能够模拟做出来,像贪吃蛇,扫雷,兵乓球等,这里就是完成一个射击游戏的制作,记录了我制作这个游戏时的过程。
1. 下载和安装python
这里笔者使用的是python3,然后编辑器使用的是pycharm,当然可以使用其他的,这里不会的小伙伴可以搜索相关攻略。
2. 安装pygame包
我们是基于pygame包去开发的,所以一定要下载并且安装pygame包。直接从官网下载https://pypi.org,下载的文件一般都是.whl,例如保存在D:packages路径下,这个需要用pip来运行安装,cmd窗口中输入pip install D:packsges下载的文件名.whl。
3. 开始开发
基本上这个游戏的框架如下的思维导图,主函数中主要是初始化屏幕和更新图像,然后有定义了很多类,玩家飞船的Ship类,子弹的Bullet类,敌人的Enemy类,游戏设置类Setting等。游戏源码可以在我的github个人主页获取https://github.com/ZhaoJingSC/game1,里面基本上每一句代码都有详细的注释。


部分主函数代码:
def run_game():
'''主函数,包含初始化屏幕,刷新屏幕的循环功能'''
pygame.init()#初始化
setting=Setting()#创建一个Setting实例,储存在setting变量中
screen=pygame.display.set_mode((setting.width,setting.high))#创建一个屏幕,放在变量screen中,屏幕的宽为setting变量的width属性,高为high属性
pygame.display.set_caption("game1")#命名屏幕的名字为“game1”
button=Button(screen,'Start')#创建一个Button(开始按钮)实例放在button变量中
ship=Ship(screen,setting)#创建一个Ship(玩家飞船)实例放在ship变量中
bullets=Group()#创建一个Group(子弹)实例,放在bullets中
enemies=Group()#创建一个Group(敌人)实例,放在enemies中
stats=GameStats(setting)#创建一个GameStats(游戏记录)实例,放在stats中
f.create_enemies(setting, screen, enemies)#调用f模块中的create_enemies函数,创建一群敌人
sb=ScoreBoard(setting,screen,stats)#创建一个ScoreBoard(计分板)实例放在sb变量中
while True:
'''游戏主循环'''
f.check_events(ship,setting,screen,bullets,stats,button,enemies,sb)#调用f模块中的check_event(检验事件)函数
if stats.game_active:
'''判断游戏是否为活跃状态,然后执行以下程序'''
f.update_ship(ship,enemies,bullets,setting,screen,stats,sb)#调用f模块中的update_ship(更新飞船)函数
f.update_bulllets(bullets,enemies,setting,screen,stats,sb)#调用f模块中的update_bullets(更新子弹)函数
f.update_enemies(enemies,stats,bullets,ship,setting,screen,sb)#调用f模块中的update_enemies(更新敌人)函数
f.delete_bullet(bullets)##调用f模块中的delete_bullet(删除子弹)函数
f.update_screen(screen,setting,ship,bullets,enemies,stats,button,sb)#调用f模块中的update_screen(更新屏幕)函数,不止在游戏活跃状态下更新屏幕
run_game()#运行主函数总结:pygame功能相当强大,可以开发很多有趣和有深度的游戏,官网上https://www.pygame.org/也有很多人的作品,我这个项目做的也比较初级,做的也比较简陋,尤其是美工,还有很多可以提升的地方,有兴趣的小伙伴可以一起交流,我的github地址如下,希望能帮助到你们,感谢小伙伴点个赞~
Github地址:https://github.com/ZhaoJingSC/game1