(70 * J, 158 - self.Y[self.J], 70 * J, 154 - self.Y[self.J]))) def desenha_bases(self): self.set_color(3) for J in range(1, 4): pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (70 * J - 5, 159, 70 * J + 5, 159))) def set_color(self, color): glColor3f(*self.cor[color]) def muda_estado(self, estado): print("Mudanca de Estado: {} --> {}".format(self.estado, estado)) self.estado = estado def imprima(self, mensagem): self.label = self.window.crialabel(mensagem)class Missile(pyglet.window.Window): def __init__(self): self.scale = 4 # Escala os graficos 4x self.frames = 8 # Frames por segundo. # Define quantas vezes vamos atualizar a tela por segundo super(Missile, self).__init__(280 * self.scale, 192 * self.scale, caption="Missiles") self.set_mouse_visible(False) self.game = Game(self) self.schedule = pyglet.clock.schedule_interval( func=self.update, interval=1.0 / self.frames) def update(self, interval): pass def on_draw(self): window.clear() self.game.atualiza() def on_resize(self, width, height): # Inicializa a view glViewport(0, 0, width, height) glMatrixMode(gl.GL_PROJECTION) glLoadIdentity() # Inverte as coordenadas do eixo Y glOrtho(0, width, height, 0, -1, 1) # Aplica a escala glScalef(self.scale, self.scale, 1.0) glMatrixMode(gl.GL_MODELVIEW) def on_key_press(self, symbol, modifiers): self.game.pressionado = True def crialabel(self, mensagem, x=None, y=None, fonte='Times New Roman', tamanho=36): """Prepara uma mensagem de texto para ser exibida""" x = x or self.width // 2 y = y or self.height // 2 return pyglet.text.Label( mensagem, font_name=fonte, font_size=tamanho, x=x, y=y, anchor_x='center', anchor_y='center')window = Missile()pyglet.app.run()Bem melhor, mas ainda guarda varias caracteristicas do programa em Basic.O nome das variaveis e uma catastrofe. Renomeando as variaveis e melhorando os comentarios, o programa completo fica assim:import pygletfrom pyglet.gl import *import randomdef rgb_to_f(r, g, b): return(r / 255.0, g / 255.0, b / 255.0)# Cores do modo de alta resolucao HGR# Fonte: https://github.com/AppleWin/AppleWin/issues/254CORES = [(0.0, 0.0, 0.0), # Preto 0 rgb_to_f(20, 245, 60), # Verde 1 rgb_to_f(255, 68, 253), # Magenta 2 rgb_to_f(255, 255, 255), # Branco 3 rgb_to_f(255, 106, 60), # Laranja 5 rgb_to_f(20, 207, 253), # Azul medio 6 rgb_to_f(255, 255, 255), # Branco 7 ]class Game(): def __init__(self, parent): self.cor = CORES self.window = parent # Cria dois vetores com 3 elementos cada self.Y = [0] * 3 # Altura do tiro self.F = [0] * 3 # Estado do tiro self.tiros_disparados = 0 # tiros ja disparados self.velocidade_do_tiro = 5 # Gera um numero aleatorio entre 0 e 6 + 4 self.velocidade_aviao = random.randint(0, 6) + 4 # Gera um numero aleatorio entre 0 e 135 + 11 self.altura_do_aviao = random.randint(0, 135) + 11 self.estado = "jogando" self.posicao_do_aviao = self.velocidade_aviao self.pressionado = False self.label = None def atualiza(self): if self.estado == "jogando": self.jogue() else: if self.label: glMatrixMode(gl.GL_PROJECTION) glLoadIdentity() glOrtho(0, self.window.width, 0, self.window.height, -1, 1) glMatrixMode(gl.GL_MODELVIEW) self.label.draw() if self.pressionado: pyglet.app.event_loop.exit() def jogue(self): self.desenha_bases() if self.posicao_do_aviao > 265: self.perdeu() return self.y = 159 - self.altura_do_aviao self.X = self.posicao_do_aviao self.C = 3 self.desenha_aviao() if self.pressionado and self.tiros_disparados < 3: self.F[self.tiros_disparados] = 1 self.tiros_disparados += 1 self.pressionado = False self.processa_tiros() self.posicao_do_aviao += self.velocidade_aviao def processa_tiros(self): for self.J in range(0, 3): if self.F[self.J] == 0 or self.Y[self.J] > 145: continue self.Y[self.J] += self.velocidade_do_tiro self.C = 3 self.desenha_tiro() self.X = (self.J + 1) * 70 - self.posicao_do_aviao self.y = self.altura_do_aviao - self.Y[self.J] if self.X > -1 and self.X < 15 and self.y > -9 and self.y < 5: self.acertou() def perdeu(self): self.imprima("MISSED") self.muda_estado("fimdejogo") def acertou(self): self.imprima("HIT!!!")