|
昨日阅读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
|