mk1*_*k12 4 python pygame structure
这是我现在如何实现我的简单pygames:
import pygame, sys
from pygame.locals import *
def run_game():
pygame.init()
SIZE = (640, 400)
BG_COLOUR = (0, 0, 0)
LINE_COLOUR = (255, 255, 255)
screen = pygame.display.set_mode(SIZE)
clock = pygame.time.Clock()
while True:
time_passed = clock.tick(30)
for event in pygame.event.get():
if event.type == QUIT:
exit_game()
screen.fill(BG_COLOUR)
pygame.draw.aaline(screen, LINE_COLOUR, (1, 1), (639, 399))
pygame.display.flip()
def exit_game():
sys.exit()
if __name__ == "__main__"
run_game()
Run Code Online (Sandbox Code Playgroud)
我还看到一个keeprunning标志用于退出主事件循环,而不是使用pygame.event.poll()循环pygame.event.get().任何建议,如变量的大小写/命名,任何使其更有效或可读的东西?
Ale*_*lli 12
无论pygame作者建议,我建议回避from ... import *:它只会让你的代码难以阅读(如读者有检查每一个barename来检查它是否是实际在本地转让或来自厉害的*).更改到import pygame.locals as pygl,比方说,并尽一切使用名称由它做一个合格的一个(我想在你的代码,这只是意味着改变QUIT对pygl.QUIT).您选择使用什么简称来代替pygl并不重要,但这是我强烈推荐的一般结构.记住:名称空间是一个很棒的主意 - 让我们做更多的! - )
在任何地方都使用4个空格的缩进,正如PEP 8所说的那样:你似乎将一些4空间的缩进与8个空格或标签混合在一起 - 不要!
不要分配你永远不会使用的变量,就像你正在做的那样time_passed.
这样的代码:如果event.type == QUIT:exit_game()的罚款,只要你在测试一个或很少的可能性(有if/ elif),但不"扩展"了,无论是在可读性和效率.当您需要覆盖几种情况时,请使用可在循环之前设置的字典:
dispatch = {pygl.QUIT: exit_game, # whatever else
}
Run Code Online (Sandbox Code Playgroud)
而不是if/ elif/ else,使用:
f = dispatch.get(event.type)
if f is None: # the "else" case"
...
else: f()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4951 次 |
| 最近记录: |