Crie uma homenagem ao Excitebike usando Python

Crie uma homenagem ao Excitebike usando Python

Excitebike é um jogo side-scroller onde você pilota uma moto sobre saltos, manobra em torno de obstáculos e acelera em direção à linha de chegada.





A Nintendo lançou pela primeira vez este jogo de corrida de BMX para o NES. A partir daí, a empresa modernizou o Excitebike e o lançou no N64 e, eventualmente, no Wii.





Não existem mais muitos consoles NES, o que torna difícil jogar Excitebike novamente. Graças a alguns fãs retrô da Wireframe Magazine, um trecho de código Python pode recriar este clássico do NES para horas de diversão em seu Raspberry Pi ou PC doméstico.





MAKEUSEO VÍDEO DO DIA

Obtendo o código e configurando

Embora você possa usar nano ou vim para editar seu código python, você vai querer tirar proveito de um recurso completo editor de texto ou IDE .

Você precisará instalar o Pygame Zero para suportar os recursos criados nesta homenagem ao Excitebike. O Pygame Zero contém módulos Python para que os criadores de jogos se concentrem sem precisar repetir fundamentos simples.



Se você não tiver o python3 instalado no seu PC, você pode baixe a versão mais recente diretamente do Python. Você também vai querer certifique-se de ter o PIP instalado também.

Com a versão mais recente do Python e do PIP instalada, abra seu terminal PowerShell ou Linux e digite:





pip3 install pgzero 

Por fim, você precisará pegar uma cópia do código Python no repositório GitHub da revista Wireframe. Digite o seguinte comando em um terminal:

git clone https://github.com/Wireframe-Magazine/Wireframe-66.git

Alternativamente, você pode baixe o código zipado diretamente da página do GitHub do Wireframe.





Quebrando o código

Para entender o que o código faz, primeiro execute o jogo Excitebike. Faça isso navegando até o código-fonte e executando-o usando o Pygame Zero:

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

Você pode então abrir o arquivo exitebike.py com um editor de texto para visualizar o código.

  trecho de código python excitebike

o empate A função desenha o plano de fundo à medida que a imagem da bicicleta se move. UMA ' fique ' refere-se a um bloco que é desenhado na tela. A palavra, ' fundo,' refere-se à imagem de fundo (ligar as imagens ao bloco de fundo é graças aos módulos Pygame Zero importados).

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

Você também notará cálculos para o tempo da volta e a última volta (isso é representado pelo contador de tempo na parte inferior da tela). O tempo da volta calcula constantemente a diferença entre o pressionamento inicial da tecla de seta para a direita (hora de início) e a hora atual.

A última volta é um cálculo semelhante. Em vez da hora de partida, a hora é calculada a partir do momento em que a moto passa por uma posição de pista pré-definida (mencionada como trackPos < -4800 no código). Os itens abaixo entre aspas representam uma imagem.

Este código desenha blocos de imagem na tela em determinados intervalos e posições particulares na tela. A imagem da multidão fornecida tem apenas 100px de largura. No entanto, o código, abaixo, informa ao computador quando desenhar a imagem para que pareça que há uma multidão simulada atrás da motocicleta enquanto ela se move.

As imagens das rochas são exibidas na tela em duas partes. A segunda e terceira linhas de código, abaixo, trabalham juntas para simular o cenário de forma organizada.

Depois de criar uma cópia de backup do código python, tente alterar os números abaixo para ver o que acontece com as rochas na tela!

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

Deseja substituir sua moto por um Monster truck, quadriciclo ou outro veículo? Talvez você queira correr com um unicórnio até a linha de chegada?

Tudo o que você precisa fazer é desenhar uma imagem de 50x50px (com fundo transparente). Em seguida, coloque este arquivo (picture.png) no ' imagens ' pasta (dentro do código-fonte-excitebike pasta). Você vai querer criar duas imagens (uma com uma altura ligeiramente aumentada) para adicionar algum realismo. Tudo que você precisa fazer é alterar a referência para ' faça isso aqui:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  jogo python excitebike com caminhão

Certifique-se também de executar uma ação de localizar e substituir pelo nome da imagem (sem a extensão da imagem).

checkBikeRamp() é a função que faz o trabalho de calcular o eixo Y para que sua moto (ou caminhão) suba a rampa (e pegue um ar sério se você tiver sorte). o teclado.direito e teclado.esquerdo parâmetros são definidos no atualizar() função.

Esses bits de código dizem ao computador para desacelerar ou acelerar a motocicleta (dependendo de qual tecla o usuário pressiona no teclado). Tradução: Quanto mais rápido sua moto estiver se movendo, maior será o número do eixo Y (ou salto muito grande).

Transversalmente, o on_key_down(chave) função irá enviar sua moto em queda livre.

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

o muckLane parâmetro irá desacelerar sua moto usando o seguinte cálculo:

muckLane = int((bike.laneY-375)/50)+1

A linha 66 do código determina quando exibir a imagem 'muck' na tela. Agora que o computador sabe quando sua moto passará pela lama, ele diminuirá a velocidade da sua moto pela metade enquanto você se move sobre a lama na pista. Altere o valor muckLane de /50 para /25 ou /75 para ver o que acontece a seguir.

Pilotos (ahem, programadores Python)! Ligue seus motores!

Mesmo que você não se sinta confortável em programar essa homenagem ao Excitebike do zero, esse código ainda é uma ótima cartilha. Ao ajustá-lo e perceber o impacto visual das mudanças, você pode aprender muito. Você tentará adicionar mais recursos ou pilotos de IA ao seu jogo? Vá em frente!

quanto devo substituir uma bateria do macbook pro

Com um pouco de prática de Python, outra ideia para você tentar é adicionar níveis diferentes depois de passar a linha de chegada após 4 ou 5 vezes. Além disso, você pode adicionar recompensas para o primeiro, segundo e terceiro lugar. Se você estiver em primeiro lugar, adicione também um arquivo de áudio para aplaudir a multidão! Existem tantas possibilidades.

Quando estiver satisfeito com os aprimoramentos da Excitebike, por que não criar um jogo de aventura de texto? Há muitas peças diferentes que garantirão que você aprenda algo emocionante por horas, dias ou até semanas!