Aprenda a fazer um jogo simples com Python!
Este é um post de Julian Meyer, um programador python de 13 anos. Pode encontrá-lo no Google+ e no Twitter.você já se perguntou como os jogos de vídeo são criados? Não é tão complicado como possas pensar!
neste tutorial, você vai criar um jogo simples chamado coelhinhos e texugos, onde o herói, o coelhinho, tem que defender um castelo contra uma horda de atacantes de texugos., :O
para escrever este jogo, você vai usar Python. Não, Não estou a falar de uma cobra grande! :]
Python é uma linguagem de programação de computadores. Nós escolhemos Python para este tutorial porque é uma linguagem simples para começar, e é divertido e fácil de aprender.
Se é novo no Python, antes de começar a ver este livro: Pense em Python: como pensar como um cientista da Computação. Isso deve pôr-te ao corrente.depois mergulha aqui e prepara-te-há uma guerra a decorrer entre os coelhos e os texugos. Continua a ler para saltar para a luta!,
a começar: a instalar o Python
Se quiser tentar este tutorial num PC do Windows, terá de instalar o Python. Certifique-se de pegar a versão 2.7.3 e não a versão 3.3.0! Depois de executar o instalador, você deve ter inactivo na sua pasta de todos os programas no seu menu Iniciar. Lançamento inactivo para começar.
Se estiver num Mac, já tem Python instalado! Basta abrir o Terminal (/Applications/Utilities / Terminal.app), Digite em python e carregue em Enter.
Nota: Se instalar Python a partir do python.,org (e poderá ter de o fazer se quiser pôr o PyGame a funcionar), então também terá acesso ao IDLE no Mac. Deve estar na pasta “/ Applications / Python 2.7”.
Se você fez corretamente, você deve ver algo como isto:
Nota: Se você deseja sair do prompt do Python (o triplo colchetes angulares >>>), você pode digitar exit() no Python linha de comandos e prima Return ou você pode pressionar Control+D.,
Uma vez na linha de comandos Python, para testar se o Python está a funcionar correctamente, escreva em print 1+1 e carregue em Enter/Return. Deve imprimir 2. Acabou de escrever o seu primeiro programa Python!
Agora que sabe que o Python está a funcionar correctamente, precisa de instalar o PyGame para escrever um jogo com o Python.
PyGame é uma biblioteca Python que torna a escrita de jogos muito mais fácil! Ele fornece funcionalidade, tais como manipulação de imagem e reprodução de som que você pode facilmente incorporar em seu jogo.,
vá aqui e baixe o instalador de PyGame apropriado para o seu sistema. Certifique-se de baixar uma versão em Python 2.7.
Nota: O Instalador de PyGame da ligação acima não irá funcionar com a Python predefinida da Apple que está instalada num Mac. Terá de transferir o Python de python.org e instalá-lo para usar o PyGame. Ou, você pode instalar tanto Python quanto PyGame através de MacPorts.
para verificar se tem o PyGame instalado correctamente, abra o ‘IDLE’ ou execute o Python através do Terminal e escreva no ‘import pygame’ na linha de comandos do Python., Se isso não resultar em nenhuma saída, então você é bom.
Se, por outro lado, ele produz um erro como o que é mostrado abaixo, então o PyGame não está instalado.
Se você obter um erro como este, postar nos fóruns e eu vou ajudá-lo a fazê-lo funcionar.
executando o código Python a partir do ficheiro
enquanto pode executar pequenos bits de código Python na linha de comandos Python, Se quiser trabalhar num programa maior (como um jogo), provavelmente deseja gravar o seu código num ficheiro para que não tenha de O escrever uma e outra vez.
Existem várias maneiras de executar um programa Python como um arquivo., Uma maneira é usar um editor de texto simples como Notepad (Windows), ou TextEdit (Mac). Abra um novo ficheiro de texto, escreva no seu código Python (como o print 1+1). Então guarda-o como XXX.py (o XXX pode ser qualquer nome de arquivo descritivo).
em seguida, no Windows, faça duplo-click neste arquivo para executá-lo. No Mac, abra o Terminal e escreva python, depois arraste o ficheiro que gravaste para a janela do Terminal e carregue em Enter.
a outra maneira é digitar o seu código usando o editor ocioso, que é o que você vai fazer neste tutorial. Para executar o idle, basta digitar o idle a partir do Terminal., Em seguida, escolha a opção Ficheiro\nova janela do menu inactivo e deverá ter uma janela do editor de texto onde poderá escrever o código Python. Pode gravar as alterações do seu código através do ficheiro\Save e até executar o código através do módulo Run\Run (F5).
lembre-se que o menu Executar só está disponível se tiver um ficheiro aberto numa janela de edição.
adicionando os recursos do jogo
Você está quase pronto para criar o seu jogo. Mas o que é um jogo sem grandes gráficos e efeitos sonoros? Eu juntei todos os gráficos e efeitos de som que você vai precisar para o seu jogo em um arquivo ZIP. Pode descarregá-lo aqui.,
uma Vez que você tenha baixado o arquivo, crie uma pasta para o jogo no seu disco rígido e extraia a pasta de recursos para essa pasta, para que a sua pasta do jogo tem uma subpasta chamada recursos, com vários recursos, agrupadas em pastas adicionais dentro dele, como este:
agora Você está pronto para começar a criar Coelhos e Texugos. :]
Passo 1: Hello Bunny
execute IDLE e abra uma nova janela de editor de texto, como mencionado na secção anterior., Escreva o seguinte código na janela do editor:
Salve o ficheiro na sua pasta do jogo (A que está na sub-pasta de recursos) e nomeie-o game.py.
vamos passar pela seção de código-por-seção:
- importar a biblioteca PyGame. Isso permite que você use funções da biblioteca em seu programa.
- inicializar o PyGame e configurar a janela de visualização.carrega a imagem que vais usar para o coelho.
- continue looping sobre o seguinte código indentado.,Nota: Quando outras linguagens como Objective-C, Java ou PHP usam Chavetas para mostrar um bloco de código a ser executado dentro de um laço while ou uma instrução if, Python usa indenting para identificar blocos de código. Então indentação adequada é muito importante em Python-tenha isso em mente. :]
- preencha o ecrã com preto antes de desenhar qualquer coisa.adicione a imagem de coelho que carregou no ecrã em x = 100 e y = 100.actualize o ecrã.
- verifique se existem novos eventos e se existe um, e é um comando quit, saia do programa.,
Nota: de acordo com a documentação de PyGame, você não deve precisar chamar pygame.sair () uma vez que o interpretador irá chamá-lo automaticamente quando o interpretador desligar. No entanto, pelo menos no Mac OS, O jogo ficaria na saída a menos pygame.o quit() foi chamado.
Se executar o código agora (através do módulo Run\Run no menu Idle), deverá ver um ecrã semelhante ao abaixo:
w00t o coelho está na cena, e pronto para acção!
mas o jogo parece assustador e solitário com o coelho apenas de pé em um fundo preto., Está na hora de embelezar um pouco as coisas. :]
Passo 2: Adicionar cenário
vamos começar por adicionar um fundo para a cena do jogo. Isso pode ser feito com mais um par de tela.blit () calls.
no final da secção #3, Depois de carregar a imagem do leitor, adicione o seguinte código:
grass = pygame.image.load("resources/images/grass.png")castle = pygame.image.load("resources/images/castle.png")
isto carrega as imagens e coloca-as em variáveis específicas. Agora têm de ser desenhados no ecrã. Mas se você verificar a imagem da grama, você vai notar que ela não vai cobrir toda a área de tela, que é 640 x 480., Isso significa que você tem que colocar a grama sobre a área de tela para cobri-la completamente.
aditar o seguinte código a game.py no início da Secção #6 (antes de o jogador ser desenhado na tela):
Como você pode ver, o for statement loops através de x primeiro. Então, dentro desse laço, ele loops através de y e desenha a grama nos valores x e y gerados pelos loops for. As próximas linhas desenham os castelos na tela.
Se executar o programa agora, deverá obter algo como isto:
muito melhor – isto está a começar a parecer bom!, :]
Step 3: Make the Bunny Move
Next you need to add some real gameplay elements, like making the bunny response to key presses.
para fazer isso, primeiro você vai implementar um bom método de manter o controle de quais chaves estão sendo pressionadas em um determinado momento. Você pode fazer isso simplesmente fazendo um array de estados chave que mantém o estado de cada chave que você quer usar para o jogo.
Adicione o seguinte código para game.py no final da seção #2 (depois de definir a altura e largura da tela):
keys = playerpos=
Este código é bastante auto-explicativo., A lista de chaves mantém o controle das chaves que estão sendo carregadas na seguinte ordem: WASD. Cada item no array corresponde a uma chave – a primeira para W, A segunda para A e assim por diante.
a variável playerpos é onde o programa desenha o jogador. Uma vez que o jogo vai mover o jogador para diferentes posições, é mais fácil ter uma variável que contém a posição do jogador e, em seguida, simplesmente desenhar o jogador nessa posição.
Agora você precisa modificar o código existente para desenhar o jogador para usar a nova variável playerpos., Mudar a seguinte linha na secção # 6:
screen.blit(player, (100,100))
para:
em seguida, actualizar a lista de chaves com base na qual as chaves estão a ser pressionadas. O PyGame facilita a detecção de teclas, adicionando eventos.funcao.
no final da Secção #8, logo após a verificação em bloco do evento.type= = pygame.QUIT, put this code (at the same indentation level as the pygame.Sair do bloco if):
Wow! São muitas linhas de código. Se o dividirmos nas declarações do fi, não é assim tão complicado.,
primeiro verifique se uma chave está a ser pressionada ou libertada. Em seguida, você verifica qual chave está sendo pressionada ou lançada, e se a chave que está sendo pressionada ou lançada é uma das chaves que você está usando, você atualizar a variável chaves de acordo.
finalmente, você precisa atualizar a variável playerpos em resposta às prensas-chave. Isto é muito simples.
adicione o seguinte código ao fim do jogo.,py (com um nível de indentação, colocando-a no mesmo nível que o loop for):
# 9 - Move player if keys: playerpos-=5 elif keys: playerpos+=5 if keys: playerpos-=5 elif keys: playerpos+=5
Esse código simplesmente verifica qual das teclas estão sendo pressionadas e adiciona ou subtrai-se o jogador da posição x ou y (dependendo da tecla pressionada) para mover o jogador.
execute o jogo e você deve obter um jogador exatamente como antes. Tenta carregar em WASD. Viva! Funciona.,
Passo 4: ligar o Coelho
Sim, o coelho agora se move quando você pressiona as teclas, mas não seria ainda mais legal se você pudesse usar o mouse para girar o coelhinho a enfrentar uma direção de sua escolha, para que ele não voltadas para o mesmo lado o tempo todo? É simples o suficiente para implementar usando trigonometria.,
dê uma olhada na ilustração a seguir:
Na imagem acima, se (5,3) é a posição do coelho e (2,4) é a posição atual do mouse, você pode encontrar o ângulo de rotação (z) aplicando a atan2 função trigonométrica para a diferença de distâncias entre dois pontos. Claro, uma vez que você sabe o ângulo de rotação, você pode simplesmente girar o coelho em conformidade. :]
Se você está um pouco confuso sobre esta parte, não se preocupe – você pode continuar de qualquer maneira. Mas é por isso que deves prestar atenção na aula de matemática!, : ]Você vai usar essas coisas o tempo todo na programação de jogos.
Agora você precisa aplicar este conceito ao seu jogo. Para fazer isso, você pode usar a superfície PyGame.rodar (graus) função. A propósito, tenha em mente que o valor Z está em radianos. : Que tal deixar o coelho atirar em inimigos usando flechas? Isto não é um coelho de boas maneiras!
Este passo é um pouco mais complicado porque você tem que manter o controle de todas as setas, atualizá-las, rodá-las, e excluí-las quando elas saem do ecrã.,
Em primeiro lugar, adicione as variáveis necessárias ao final da secção de Inicialização, Secção #2:
acc=arrows=
a primeira variável mantém o controle da precisão do jogador e a segunda matriz segue todas as setas. A variável precisão é essencialmente uma lista do número de tiros disparados e do número de texugos atingidos. Mais tarde, vamos usar esta informação para calcular uma porcentagem de precisão.
seguinte, carregue a imagem da seta no final da secção #3:
arrow = pygame.image.load("resources/images/bullet.png")
Agora, quando um utilizador clica no rato, uma seta precisa de disparar., Adicione o seguinte ao fim da Secção #8 como um novo manipulador de eventos:
este código verifica se o rato foi carregado e se foi, obtém a posição do rato e calcula a rotação das setas com base na posição do jogador em rotação e na posição do cursor. Este valor de rotação é armazenado na lista de setas.
em seguida, você tem que realmente desenhar as setas na tela. Adicione o seguinte código logo após a secção #6.1:
os valores de vely e velx são calculados utilizando trigonometria básica. 10 é a velocidade das flechas., A declaração da if apenas verifica se a bala está fora dos limites e se está, apaga a seta. O segundo para a instrução loops através das setas e desenha-os com a rotação correta.
tente executar o programa. Devias ter um coelho que dispara setas quando clicas no rato! : D
Passo 6: pegar em armas! Texugos!OK, você tem um castelo e você tem um herói que pode se mover e atirar. O que falta? Inimigos que atacam o castelo onde o herói pode disparar!,
nesta etapa, você criará texugos gerados aleatoriamente que correm no castelo. Haverá cada vez mais texugos à medida que o jogo avança. Então, vamos fazer uma lista do que precisa para fazer.
- adicione os bandidos a uma lista.
- actualize a lista de mauzões em cada moldura e verifique se estão fora do ecrã.mostra aos maus da fita.fácil, certo?, :]
Em primeiro lugar, adicione o seguinte código ao final da secção #2:
badtimer=100badtimer1=0badguys=]healthvalue=194
os valores acima configuram um temporizador (bem como alguns outros valores) para que o jogo adicione um novo texugo após algum tempo ter decorrido. Diminui-se o badtimer em cada moldura até ser zero e depois cria-se um novo texugo.
Agora adicione o seguinte ao final da secção # 3:
badguyimg1 = pygame.image.load("resources/images/badguy.png")badguyimg=badguyimg1
a primeira linha acima é semelhante a todo o código de carga de imagem anterior. A segunda linha configura uma cópia da imagem para que você possa animar o vilão muito mais facilmente.,em seguida, você tem que atualizar e mostrar os vilões. Adicione este código logo a seguir à secção #6.2:
lotes de código para rever. :] The first line checks if badtimer is zero and if it is, creates a badger and sets badtimer up again based on how many times badtimer has run so far. O primeiro para o loop atualiza a posição x do texugo, verifica se o texugo está fora da tela, e remove o texugo se ele está fora da tela. O segundo para loop desenha todos os texugos.
para usar a função aleatória no código acima, você também precisa importar a biblioteca aleatória., Então, adicione o seguinte ao final da seção #1:
import random
por último, adicione esta linha direita após o tempo de instrução (seção #4) para diminuir o valor de badtimer para cada quadro:
badtimer-=1
Tente todos esse código executando o jogo. Agora você deve começar a ver alguma jogabilidade real-você pode atirar, mover, virar, e texugos tentar correr para você.
mas espere! Porque é que os texugos não estão a explodir o castelo? Vamos juntar isso rapidamente…
adicione este código imediatamente antes do Índice+=1 no primeiro ciclo na secção #6.,3:
este código é bastante simples. Se o valor x do texugo for inferior a 64 para a direita, então apague esse vilão e diminua o valor de saúde do jogo por um valor aleatório entre 5 e 20. (Mais tarde, você irá mostrar o valor atual de saúde na tela.)
Se você construir e executar o programa, você deve ter um monte de texugos atacantes que desaparecem quando eles atingem o castelo. Embora você não possa vê-lo, os texugos estão realmente baixando sua saúde.,
Passo 7: colisões com texugos e setas
os texugos estão a atacar o seu castelo, mas as suas setas não têm qualquer efeito sobre eles! Como é que um coelho pode defender a sua casa?
tempo para definir as setas para matar os texugos para que você possa salvaguardar o seu castelo e ganhar o jogo! Basicamente, temos de passar por todos os bandidos e dentro de cada um desses laços, temos de passar por todas as flechas e verificar se elas colidem. Se o fizerem, apague o texugo, apague a seta e adicione uma à sua taxa de precisão.
logo após a Secção #6. 3.,1, adicione isto:
só há uma coisa importante a notar neste código. A instrução if é uma função pygame incorporada que verifica se dois retângulos se intersectam. As outras linhas apenas fazem o que eu expliquei acima. se você executar o programa, você deve finalmente ser capaz de atirar e matar os texugos.
Passo 8: Adicione um HUD com Medidor de Saúde e Relógio
O jogo está progredindo muito bem. Tens os teus atacantes, e tens o teu defensor. Agora tudo o que você precisa é de uma maneira de manter a pontuação e para mostrar o quão bem o coelho está fazendo.,
a maneira mais fácil de fazer isso é adicionar um HUD (Heads Up Display) que mostra o nível de saúde atual do Castelo. Você também pode adicionar um relógio para mostrar quanto tempo o castelo sobreviveu.
primeiro adicione o relógio. Adicione o seguinte código imediatamente antes do início da Secção # 7:
o código acima simplesmente cria um novo tipo de letra usando o tipo de letra PyGame por omissão definido como o tamanho 24. Então esse tipo de letra é usado para desenhar o texto do Tempo em uma superfície. Depois disso, o texto é posicionado e desenhado no ecrã.em seguida, adicione a barra de saúde., Mas antes de desenhar a barra de saúde, você precisa carregar as imagens para a barra. Adicione o seguinte código ao final da secção # 3:
healthbar = pygame.image.load("resources/images/healthbar.png")health = pygame.image.load("resources/images/health.png")
a primeira é a imagem vermelha usada para a barra de saúde completa. A segunda é a imagem Verde usada para mostrar o nível de saúde atual.
adicione agora o seguinte código logo a seguir à Secção # 6.4 (que acabou de Adicionar) para desenhar a barra de saúde no ecrã:
# 6.5 - Draw health bar screen.blit(healthbar, (5,5)) for health1 in range(healthvalue): screen.blit(health, (health1+8,8))
o código desenha primeiro a barra de saúde vermelha. Em seguida, ele desenha uma certa quantidade de verde sobre o bar, de acordo com a quantidade de vida que o castelo tem restante.,
Se você construir e executar o programa, você deve ter um temporizador e uma barra de saúde.
Passo 9: Ganhar ou Perder
Mas o que é isto? Se você jogar por tempo suficiente, mesmo que sua saúde desça para zero, o jogo ainda continua! Não é só isso, também podes continuar a disparar contra os texugos. Isso não vai funcionar, pois não? Você precisa de algum tipo de cenário de vitória/perda para fazer o jogo valer a pena jogar.
então vamos adicionar a condição de vitória e perda, bem como a tela de vitória ou perda. : ] Você faz isso saindo do loop principal e indo para um loop win/lose., No ciclo win/lose, você tem que descobrir se o usuário ganhou ou perdeu e exibir a tela de acordo com isso.
Aqui está um esboço básico do ganhar/perder cenários:
Se o tempo é de até (90000 ms ou 90 segundos), então:
- Pare de correr o jogo
- Definir o resultado do jogo para 1 ou ganhar
Se o castelo é destruído em seguida:
- Parar a execução do jogo
- Definir o resultado do jogo para 1 ou ganhar
Calcular a precisão de qualquer maneira.
Nota: O acc*1.0 está apenas a converter acc para um flutuador., Se não o fizer, o operando da divisão irá devolver um inteiro como 1 ou 2 em vez de um flutuador como 1. 5
adicione estas linhas ao fim de game.py:
Este é o maior pedaço de código ainda! Mas não é assim tão complicado.
A primeira declaração if verifica se o tempo acabou. O segundo verifica se o castelo foi destruído. O terceiro calcula a sua taxa de precisão. Depois disso, uma declaração rápida se verifica se você ganhou ou perdeu e exibe a imagem correta.
claro, se quiser mostrar imagens para ganhar e perder telas, então essas imagens têm de ser carregadas primeiro., Então adicione o seguinte código ao final da Seção # 3:
gameover = pygame.image.load("resources/images/gameover.png")youwin = pygame.image.load("resources/images/youwin.png")
Mais uma coisa rápida. Mudar a secção # 4 de:
# 4 - keep looping throughwhile 1: badtimer-=1
para:
# 4 - keep looping throughrunning = 1exitcode = 0while running: badtimer-=1
a variável em execução mantém o registo de se o jogo terminou e a variável código de saída mantém o registo de se o jogador ganhou ou perdeu.
execute o jogo novamente e agora você pode triunfar ou morrer tentando! Fresco. :]
Passo 10: música gratuita e efeitos sonoros!
o jogo parece muito bom, mas como é que ele soa? É um pouco silencioso, não é?, Adicionar alguns efeitos sonoros pode alterar toda a sensação de um jogo.
PyGame torna o carregamento e o jogo de sons super simples. Primeiro, você tem que inicializar o mixer adicionando no fim da seção #2:
pygame.mixer.init()
em Seguida, carregar os sons e definir o nível de volume no final do capítulo #3:
a Maioria do código acima é simplesmente carregar os arquivos de áudio e configurar os níveis de volume de áudio. Mas presta atenção ao pygame.misturador.musica.carregar a linha – essa linha carrega a música de fundo para o jogo e a próxima linha define a música de fundo para repetir para sempre.,
que cuida da configuração de áudio. : ] Agora tudo que você precisa fazer é tocar os vários efeitos sonoros conforme necessário. Faça isso de acordo com as instruções nos comentários para o código abaixo:
execute o jogo mais uma vez e você vai notar que você agora tem música de fundo e efeitos sonoros para Colisões e filmagens. O jogo parece muito mais vivo! :]
para onde ir a partir daqui?
você deve estar orgulhoso de si mesmo: você acabou de criar um jogo divertido cheio de música, efeitos sonoros, Um coelho Assassino, texugos kamikaze e muito mais. Eu disse-te que conseguias!, :]
Você pode baixar o código-fonte final para o jogo aqui.
neste ponto, sinta-se à vontade para estender este jogo em sua própria criação! Talvez tente substituir a arte com seus próprios desenhos, ou adicionar diferentes armas ou tipos de monstros no jogo!
tem alguma dúvida ou comentário sobre o que fez neste tutorial? Em caso afirmativo, junte-se à discussão nos fóruns! Adorava ouvir – te.
Este é um post de Julian Meyer, um programador python de 13 anos.raywenderlich.,semana
raywenderlich.com newsletter é a maneira mais fácil de ficar atualizado sobre tudo o que você precisa saber como um desenvolvedor móvel.
obtenha uma digestão semanal dos nossos tutoriais e cursos, e receba um curso gratuito de E-mail em profundidade como um Bônus!
Média de Classificação
4.1/5
Adicionar uma classificação para este conteúdo
Login para adicionar uma classificação
15 classificações