12.完善子弹的发射功能
素材:(仔细看,不注意看不到,Hhhh)
# 创建窗口并加载窗口(借鉴官方文档) # 在窗口新增“坦克大战”小画布 # 将绘制文字的小画布粘贴到窗口中 # 将我方坦克加入到窗口中 # 根据坦克的开关状态调用坦克的移动方法 # 调用渲染子弹列表的方法
"""将敌方坦克加入到窗口中""" """将子弹加入到窗口中""" """获取程序运行期间所有的鼠标和键盘事件""" # 对事件进行判断处理(1.点击鼠标关闭按钮 2.按下键盘上的某个按键) #
判断event.type是否为QUIT,如果是,直接调用程序结束方法 # 判断事件是否为键盘按键操作,如果是,继续判断按键是哪一个按键,并进行对应的处理 # 具体是哪个按键的处理 # 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法)
# 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法) # 将子弹加入到子弹列表 # 松开的如果是方向键,才更改移动开关的状态 # 修改坦克的移动状态 } # 四个方向,四个图片
# 指定坦克初始化位置分别距x,y轴的位置 """展示坦克(将坦克绘制到窗口中,使用blit())""" # 重新设置坦克的图片 # 将坦克加载到窗口中 } # 四个方向,四个图片 #
指定坦克初始化位置分别距x,y轴的位置 # 新增步数属性,用来控制敌方坦克随机移动
13.实现子弹移动的功能
# 创建窗口并加载窗口(借鉴官方文档) # 在窗口新增“坦克大战”小画布 # 将绘制文字的小画布粘贴到窗口中 # 将我方坦克加入到窗口中 # 根据坦克的开关状态调用坦克的移动方法 # 调用渲染子弹列表的方法
"""将敌方坦克加入到窗口中""" """将子弹加入到窗口中""" """获取程序运行期间所有的鼠标和键盘事件""" # 对事件进行判断处理(1.点击鼠标关闭按钮 2.按下键盘上的某个按键) #
判断event.type是否为QUIT,如果是,直接调用程序结束方法 # 判断事件是否为键盘按键操作,如果是,继续判断按键是哪一个按键,并进行对应的处理 # 具体是哪个按键的处理 # 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法)
# 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法) # 将子弹加入到子弹列表 # 松开的如果是方向键,才更改移动开关的状态 # 修改坦克的移动状态 } # 四个方向,四个图片
# 指定坦克初始化位置分别距x,y轴的位置 """展示坦克(将坦克绘制到窗口中,使用blit())""" # 重新设置坦克的图片 # 将坦克加载到窗口中 } # 四个方向,四个图片 #
指定坦克初始化位置分别距x,y轴的位置 # 新增步数属性,用来控制敌方坦克随机移动
14.子弹与屏幕边界碰撞后消失
15.解决我方坦克无线发射子弹的问题(屏幕中最多出现3发子弹)
# 创建窗口并加载窗口(借鉴官方文档) # 在窗口新增“坦克大战”小画布 # 将绘制文字的小画布粘贴到窗口中 # 将我方坦克加入到窗口中 # 根据坦克的开关状态调用坦克的移动方法 # 调用渲染子弹列表的方法
"""将敌方坦克加入到窗口中""" """将子弹加入到窗口中""" # 如果子弹还活着,绘制出来,否则,直接从列表中删除子弹 """获取程序运行期间所有的鼠标和键盘事件""" # 对事件进行判断处理(1.点击鼠标关闭按钮 2.按下键盘上的某个按键)
# 判断event.type是否为QUIT,如果是,直接调用程序结束方法 # 判断事件是否为键盘按键操作,如果是,继续判断按键是哪一个按键,并进行对应的处理 # 具体是哪个按键的处理 # 完成移动操作(调用坦克的移动方法) #
完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法) # 将子弹加入到子弹列表 # 松开的如果是方向键,才更改移动开关的状态 # 修改坦克的移动状态 }
# 四个方向,四个图片 # 指定坦克初始化位置分别距x,y轴的位置 """展示坦克(将坦克绘制到窗口中,使用blit())""" # 重新设置坦克的图片 # 将坦克加载到窗口中 } # 四个方向,四个图片
# 指定坦克初始化位置分别距x,y轴的位置 # 新增步数属性,用来控制敌方坦克随机移动
16.让敌方坦克发射子弹
17.实现我方子弹与敌方坦克的碰撞
使用精灵类中的碰撞,使用bullet,tank继承精灵类
# 创建窗口并加载窗口(借鉴官方文档) # 在窗口新增“坦克大战”小画布 # 将绘制文字的小画布粘贴到窗口中 # 将我方坦克加入到窗口中 # 根据坦克的开关状态调用坦克的移动方法 # 调用渲染我方子弹列表的方法 #
调用渲染敌方子弹列表的方法 """将敌方坦克加入到窗口中""" """将我方子弹加入到窗口中""" # 如果子弹还活着,绘制出来,否则,直接从列表中删除子弹 # 调用我方子弹与敌方坦克碰撞的方法 """将敌方子弹加入到窗口中""" #
如果子弹还活着,绘制出来,否则,直接从列表中删除子弹 """获取程序运行期间所有的鼠标和键盘事件""" # 对事件进行判断处理(1.点击鼠标关闭按钮 2.按下键盘上的某个按键) # 判断event.type是否为QUIT,如果是,直接调用程序结束方法 #
判断事件是否为键盘按键操作,如果是,继续判断按键是哪一个按键,并进行对应的处理 # 具体是哪个按键的处理 # 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法) # 完成移动操作(调用坦克的移动方法) #
完成移动操作(调用坦克的移动方法) # 将子弹加入到子弹列表 # 松开的如果是方向键,才更改移动开关的状态 # 修改坦克的移动状态 } # 四个方向,四个图片 # 指定坦克初始化位置分别距x,y轴的位置 #
live 用来记录坦克是否活着 """展示坦克(将坦克绘制到窗口中,使用blit())""" # 重新设置坦克的图片 # 将坦克加载到窗口中 } # 四个方向,四个图片 # 指定坦克初始化位置分别距x,y轴的位置
# 新增步数属性,用来控制敌方坦克随机移动 """我方子弹碰撞敌方坦克"""
字数上限,新开一篇……
本文实例为大家分享了python实现坦克大战的具体代码,供大家参考,具体内容如下
while True:#无限循环 所有行为方法都要无限制的显示
#将带有文字的surface 绘制到窗口中 循环
# 每次都随机生成一个left值
# 将坦克加入到窗口中
# 并设置游戏窗口的界限 还可以利用方向作为字典的键获取坦克图片 坦克的移动方向
#就是加载不同方向的坦克图片 呈现出移动的效果
m = Bullet(MainGame.Tank_p1)#子弹类对象 添加到列表 开始方法调用显示子弹 子弹触碰墙壁列表内移除对象
#坦克初始化时候的默认图片,根据坦克的方向从字典里去提取
#1.重新设置坦克的图片
#2.将坦克加入到窗口中
# 指定坦克初始化位置 分别距x,y轴的位置
#子弹初始化位置要根据坦克大方向进行调整 可以自己画图计算
#子弹的位置 left += 坦克宽度的一半 - 子弹的宽度的一半
更多关于python游戏的精彩文章请点击查看以下专题:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
// 存储地图网格数据的类,以判断坦克碰撞,0为可行区域,大于0为不可行区域
//主线程,我方坦克线程,paint线程 三合一 (这里应该更明确地对象化)