python射击游戏代码_Python射击游戏(包含源码和实现过程)

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

215152091ec96062b579509463e3434f.gif

12772e1c9462d6951d897dbd14cd7288.png

2d64d6c641b15bcbf8f7ea19a06900d5.png

制作方法:这里制作游戏使用的语言是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,里面基本上每一句代码都有详细的注释。

cbc1b14df0535752d4cb0838791d63dc.png

617cd5ec61dc056f2586576e5e9cfd94.png

部分主函数代码:

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


版权声明:本文为weixin_29948389原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。