Bom Dia! Vou postar hoje o codigo de um loop basico para o jogo com naves usando PyGame. Para instalar a biblioteca PyGame va ate o site www.pygame.org e siga as instrucoes. Vejamos abaixo o codigo: # coding: utf8# game.pyimport pygameimport randomfrom pygame.locals import *class Game(object): def __init__(self, size): pygame.init() flags = DOUBLEBUF self.screen = pygame.display.set_mode(size, flags) self.screen_size = self.screen.get_size() pygame.mouse.set_visible(False) pygame.display.set_caption('Meu Primeiro Jogo em Python') self.run = True self.list = { 'player': pygame.sprite.RenderPlain(), 'enemy': pygame.sprite.RenderPlain(), 'fire': pygame.sprite.RenderPlain(), 'enemy_fire': pygame.sprite.RenderPlain(), } self.player = None self.background = None self.actors = None def update_actors(self): if self.background is not None: self.background.update() for actor in self.list.values(): actor.update() def draw_actors(self): if self.background is not None: self.background.draw(self.screen) else: self.screen.fill(0) for actor in self.list.values(): actor.draw(self.screen) def act_actors(self): pass def manage(self): pass def handle_events(self): player = self.player for event in pygame.event.get(): t = event.type if t in (KEYDOWN, KEYUP): k = event.key if t == QUIT: self.run = False elif t == KEYDOWN and k == K_ESCAPE: self.run = False elif t == KEYUP: pass def loop(self): clock = pygame.time.Clock() while self.run: clock.tick(1000) self.handle_events() self.manage() self.act_actors() self.update_actors() self.draw_actors() pygame.display.flip()if __name__ == '__main__': game = Game( (640, 480) ) game.loop() Este sera o corpo de nossa classe principal do jogo. Salve este arquivo e o execute. Voce vera que o PyGame abrira uma janela com tamanho 640x480 preenchida com a cor preta. Ao pressionar a tecla ESC a aplicacao e terminada. Pode nao parecer, mas com estas poucas linhas de codigo ja temos a estrutura basica para o nosso jogo. No construtor da class "Game" nos inicializamos a tela do jogo, utilizando o parametro "DOUBLEBUF", mais a diante explico o motivo de se utilizar este parametro. Entao informamos um titulo para a janela e que desejamos que o mouse nao seja visivel dentro da janela do jogo. As variaveis "run" e "list" sao entao inicializadas. A primeira indica se o jogo deve continuar ou nao. A segunda guarda lista de sprites em quatro categorias. A classe "pygame.sprite.RenderPlain" e responsavel por guardar as lista com os sprites e ela tambem sera responsavel por desenhar esta lista na tela. Na categoria "player" teremos apenas o sprite da nossa nave. Em "enemy" teremos os sprites das naves inimigas. Em "fire" adicionaremos os sprites dos nossos tiros, e, finalmente, em "enemy_fire" adicionaremos os sprites dos tiros das naves inimigas. Temos entao as variaveis "player" e "background", que serao exatamente objetos que representam o jogador e o plano de fundo de nosso jogo. O metodo "update_actors" e o responsavel por atualizar o estado de nossos objetos do jogo. Primeiro nos atualizamos o estado do plano de fundo, se houver um, e entao atualizamos os atores, que sao os objetos na nossa lista de sprites. No metodo "draw_actors" temos um comportamento semelhante ao metodo "update_actors", mas nesse caso iremos escrever os pixels dos nossos plano de fundo e sprites na tela. Em "act_actors" por enquanto nao iremos ter nenhum codigo, mas e aqui que nos iremos tratar a acao de nosso jogo. Esta parte sera explicada em um proximo post. O metodo "manage" sera responsavel por controlar