3400 FOR J=1 TO 3# Desenha linha410 HPLOT 70*J-5,159 TO 70*J+5,159# Fim do loop, volta para linha 400420 NEXT# Retorna da subrotina430 RETURNBom, como precisaremos desenhar, vamos instalar a Pyglet:pip3 install pygletA primeira coisa a fazer e criar a janela da Pyglet e separar a janela do jogo em si.No caso, a janela e responsavel por receber os eventos do teclado.A configuracao do OpenGL tambem precisam ser feitas aqui.Como a alta resolucao do Apple II e muito pequena 280x192 pontos, eu estou usando uma escala 4.Desta forma, as coordenadas permanecerao as mesmas, mas os graficos serao 4 vezes maiores. Se ficar muito grande em seu monitor, voce pode ajustar a escala.Eu tentei manter os comentarios originais para ficar mais facil de relacionar o codigo novo com o antigo.Outra mudanca sao as coordenadas Y. No Apple II, Y = 0 e a primeira linha e em OpenGL e a ultima.Vejamos como ficou o codigo da janela:class Missile(pyglet.window.Window): # 20 HGR 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): # Verifica se uma tecla foi pressionada. Se foi, guarda em F # 120 F$="" : IF PEEK(-16384)>127 THEN GET F$ 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')Alem disso, as cores do Apple II precisam ser definidas:def 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 ]e finalmente a classe Game com o jogo em si. Observar que os indices em Python comecam em 0 e em Basic comecam com 1.Primeiro passo da conversao:class Game(): def __init__(self, parent): self.cor = CORES self.window = parent # Cria dois vetores com 3 elementos cada # 40 DIM Y(3),F(3) self.Y = [0] * 3 self.F = [0] * 3 # Inicializa N igual a 1 e MS igual a 5 # 50 N=1 : MS=5 self.N = 0 self.MS = 5 # Gera um numero aleatorio entre 0 e 6 + 4 # 60 PS=INT(RND(1)*6+4) self.PS = random.randint(0, 6) + 4 # Gera um numero aleatorio entre 0 e 135 + 11 # 70 P=INT(RND(1)*135+11) self.P = random.randint(0, 135) + 11