昨日阅读2.5 h,累计 245 h
<Python编程:从入门到实践>
=====================
重构 check_events()
主要担心代码太长,冗余和复杂。
将KEYDOWN事件和KEYUP事件分开
    def check_keydown_events(event, ship):
        """响应按键"""
        if event.key == pygame.K_RIGHT:
            ship.moving_right = True
        elif event.key == pygame.K_LEFT:
            ship.moving_left = True
    def check_keyup_events(event, ship):
        """响应松开"""
        if event.key == pygame.K_RIGHT:
            ship.moving_right = False
        elif event.key == pygame.K_LEFT:
            ship.moving_left = False
    def check_events(ship):
        """响应按键和鼠标事件"""
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                check_keydown_events(event, ship)
            elif event.type == pygame.KEYUP:
                check_keyup_events(event, ship)
从上面的代码中,可以看到,代码的结构和条理非常清晰,是按什么键,就做什么响应。
简单回顾一下:
    alien_invasion.py   主文件,创建一系列的游戏对象:
        ai_settings中存放设置
        screen中,主显示surface,以及一个飞船实例
        加一个主循环:调用check_events()、ship.update()、update_screen()
        只需要运行此文件中的run_game()即可加载游戏
        包括支持文件:settings.py、game_functions.py、ship.py
    settings.py  
        包含settings类,此类中包含方法__init__(),初始化控制游戏外观和飞船速度的属性
    game_functions.py
        一系列函数,游戏的大部分工作都是由它们完成的(检测相关事件,如按键和松开,辅助按键处理函数,重绘屏幕等)
    ship.py
        包含Ship类,有__init__()、管理飞船位置的方法update(),屏幕上绘制飞船的方法blitme()
        飞船的图像存储在文件夹images下的ship.bmp文件中
添加射击功能:
    先需要编写玩家按空格键时发射子弹(小矩形)的代码,子弹将在屏幕中向上穿行,抵达屏幕上边沿后消失。
    子弹的设置,根据安排,写入settings.py(__init__()方法的末尾)
    self.bullet_speed_factor = 1
    self.bullet_width = 3
    self.bullet_height = 15
    self.bullet_color = (60, 60, 60)
    即设置创建宽3pixels, 高15pixels的深灰色子弹(子弹的速度要比飞船的稍微低)
=====================
blockchain:
    175. Futarchy:两步民主与投票+预测市场
    首先个体对特定结果进行投票(如增加GDP),第二步对实现这些结果的提案进行投票
    (前者常规,后者预测市场),预测市场投票可以使用不同的数字货币,也可以其他有经济意义的数字货币。
    最初提出这个想法的经济学家是罗宾-汉森(Robin Hanson),后来被以太坊项目创始人Vitalik Buterin在区块链环境下进行阐述。
    176. 对于商定共识并在区块链交易至少有两种模型,且在未来可能有更多。
    第一种共识机制模型是挖矿操作:在软件辅助下,矿工审查、确认和注册交易。
    第二种是预测市场(若有足够的独立无关联人群投票认为该事件会在预测市场里为真,此事件就可以被认为是真的)
    177. 区块链治理对于社会成熟度的影响:它迫使个人和社会的治理能力、权威性、独立性和参与度进入一个更成熟的阶段,参与将概念化且能被执行。
    尽管我们还不习惯去中心化的政治权利和自治方式。
    178. 区块链所促进的大规模协作,对于科学、健康、教育、出版等领域将会出现哪些创新,且区块链的局限性以及中心化和去中心化始终出现的矛盾是什么?
======================
昨日阅读 2.5 h
累计 245 h