副问题[/!--empirenews.page--]
【大咖·来了 第7期】10月24日晚8点寓目《智能导购对话呆板人实践》

这几天在重温微信小游戏的飞机大战,玩着玩着就在思索人生了,这飞机大战怎么就可以做的那么好,操纵简朴,简朴上手。
辅佐蹲厕族、YP族、饭圈女孩在无聊之余可以有一样对象让他们振作起来!让他们的左手 / 右手有节拍有韵律的朝着统一个偏神往返移动起来!
这是史诗级的发现,是浓墨重彩的一笔,是……
在一阵抽搐后,我竣事了游戏,瞬时认为统统都索然无味,正在我进入贤者模式时,溘然想到,假如我可以让更多人已差异的方法领会到这种竹苞松茂的感受岂不美哉?
以是我打开电脑,建设了一个 plan_game.py……
先看结果图

操尽兴况
- 操纵体系:windows10
- python版本:python 3.7
- 代码编辑器:pycharm 2018.2
- 行使模块:os,sys,random,pygame
由于实当代码行使到了一个pygame的第三方模块,没有的先 pip install 一下,这里趁便提供一个较量好的pygame的教程.
https://eyehere.net/2011/python-pygame-novice-professional-index/
详细实现
起首我们先指定素材文件的文件目次.利便我们后头的行使。
- import os
-
- # 获适当前文件夹下面的material_images目次的路径
- source_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'material_images')
实现一个Game类,用来完成这个游戏的首要逻辑。
- import pygame
-
-
- class Game():
- def __init__(self, background_image_path, size=(480, 700), title='飞机大战', font_name='方正舒体', font_size=30, speed=2000):
- '''
- :param background_image_path: 配景图片的路径地点
- :param size: 游戏窗口的巨细
- :param title: 游戏窗口的问题
- :param font_name: 指定字体
- :param font_size: 指定字体巨细
- :param speed: 配景图转动整个窗口一次所用时刻,单元为ms
- '''
- self.size = size
- self.screen = pygame.display.set_mode(size)
- self.title = title
- self.background_image_path = background_image_path
- self.background = pygame.image.load(self.background_image_path).convert()
- # 配置字体工具,获得体系中自带的字体
- self.font = pygame.font.SysFont(font_name, font_size)
- # 获得Clock工具,我们可以行使它来获取间隔前次绘制图像的时刻
- self.clock = pygame.time.Clock()
- # 配景图初始位置
- self.height = 0
- # 行使窗口的高度处于转动的时刻,就能获得每ms转动的间隔
- self.every_ms_move_distance = self.size[1] / speed # 2秒
- # 分数
- self.score = 0
- # 存放全部的敌机
- self.enemies = []
-
-
- def show_score(self):
- '''
- 表现分数, 在窗口的的最上方间隔上边距10px, 阁下居中
- '''
- pass
-
-
- def set_time_passed(self):
- # 节制画 的帧, 越大越快
- # 获得上一次绘制图像到到此刻的时刻, ms
- self.time_passed = self.clock.tick()
-
-
- def draw_background(self):
- '''
- 绘制配景图片,一向向下转动,营造飞机一向往上面飞的感受
- '''
- # 每次移动的间隔 = 每ms移动的间隔 * 前次到此刻的时刻(ms)
- pass
-
-
- def create_enemy(self, image_path=os.path.join(source_dir,'enemy1.png'), enemy_number=5):
- '''
- 建设敌机
- :param image_path: 敌机的图片地点
- :param enemy_number: 最多有几个敌机在屏幕上
- '''
- pass
-
-
- def draw_enemies(self, time_passed, screen):
- '''
- 绘制敌机到屏幕上,整理跑出窗口的敌机,
- :param time_passed: 前次绘制导向此刻颠末的时刻
- :param screen: 绘制的窗口工具
- '''
- pass
-
-
- def bullet_and_enemy_crash_detection(self, bullets):
- '''
- 检测子弹是否击中敌机
- :param bullets: 飞机的全部子弹
- '''
- pass
-
-
- def plan_and_enemy_crash_detection(self, plan, allow_crash_size=None):
- '''
- 检测敌机与飞机是否相撞
- :param plan: 飞机工具
- :param allow_crash_size: 应承飞机碰撞的巨细,只有阁下有用
- '''
- pass
-
-
- def draw_plan(self, plan, time_passed):
- '''
- 绘制飞机
- :param plan: 飞机工具
- :param time_passed: 间隔前次绘制的时刻
- :return:
- '''
- pass
-
-
- def game_over(self):
- '''
- 游戏竣事
- '''
- while True:
- # 绘制配景图
- pass
-
-
- def run(self):
- '''
- 游戏进口函数,开始函数,主体函数
- :return:
- '''
-
- # 配置游戏窗口的巨细
- pygame.display.set_caption(self.title)
- # 初始化一个飞机工具
- plan = Plan()
-
- while True:
- # 假如飞机自毁完成, 游戏竣事, 挪用game_over函数
- pass
-
- # 检测监听变乱
- pass
-
- # 检测上下阁下的移动案件.
- # w,a,s,d 和 上,下,左,右键都可以
- # 然后执行plan.update函数,改变飞机的位置
- pass
-
- # 子弹和敌机的碰撞检测
- self.bullet_and_enemy_crash_detection(plan.bullets)
- # 飞机与敌机的碰撞检测
- self.plan_and_enemy_crash_detection(plan)
- # 配置属性time_passed的值, 间隔前次的时刻,利便后头行使
- self.set_time_passed()
- # 绘制配景图片
- self.draw_background()
- # 表现分数
- self.show_score()
- # 天生敌机
- self.create_enemy()
- # 绘制敌机
- self.draw_enemies(time_passed=self.time_passed, screen=self.screen)
- # 绘制飞机
- self.draw_plan(plan=plan, time_passed=self.time_passed)
- # 绘制子弹
- plan.draw_bullets(time_passed=self.time_passed, screen=self.screen)
- # 表现我们的图像
- pygame.display.update()
-
- 这里说以下奈何查察本身的体系中有哪些自带的字体.
- pygame.font.get_fonts(),这个函数就可以或许获得体系中全部的自带字体文件。不外,当我们游戏中有中文的时辰,我们也得选择支持中文的字体,不然的话是表现不出中文的。

(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|