ebook img

Programação em Python e Introdução ao Pygame PDF

126 Pages·2013·1.85 MB·Portuguese
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Programação em Python e Introdução ao Pygame

Programa(cid:231)ªo em Python e Introdu(cid:231)ªo ao Pygame Kaya Sumire Abe [email protected] C(cid:226)mpus Curitiba (cid:21) 2012 Versªo 0.1 ii Copyright(cid:13)c draft version Kaya Sumire Abe 2012. Versªo rascunho, 0.1. Colaboradores: Bianca Alessandra Visineski Alberton, Diego de Faria do Nascimento Alguns direitos reservados. Este documento Ø uma obra derivada de (cid:16)Invent Your Own Games with Python(cid:17), de Al Sweigart, e estÆ sob a licen(cid:231)a Creative Commons 3.0 de atribui(cid:231)ªo, uso nªo-comercial e compartilhamento pela mesma licen(cid:231)a. Este trabalho foi confeccionado como material de suporte para as atividades do grupo PET Compu- tando Culturas em Equidade. VocŒ pode: • Compartilhar: copiar, distribuir e utilizar o trabalho • Produzir obras derivadas. Com as seguintes condi(cid:231)ıes: • Atribui(cid:231)ªo: vocŒ deverÆ atribuir o trabalho da forma especi(cid:28)cada pelo autor. • Uso nªo-comercial: vocŒ nªo poderÆ utilizar este trabalho para (cid:28)ns comerciais. • Compartilhamento pela mesma licen(cid:231)a: sevocŒalterar, transformarouampliarestaobra, deverÆ distribuir o trabalho em uma licen(cid:231)a semelhante a esta. Em caso de dœvidas sobre esta licen(cid:231)a, visite o link http://creativecommons.org/licenses/ by-nc-sa/3.0/legalcode. SumÆrio 1 The Hard Way - o jeito mais dif(cid:237)cil 1 1.1 O que queremos dizer com (cid:16)o jeito mais dif(cid:237)cil(cid:17)? . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Leitura e Escrita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 Aten(cid:231)ªo aos detalhes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.3 Localizar diferen(cid:231)as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.4 Nªo copie e cole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.5 PrÆtica e persistŒncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 VocŒ pode treinar em casa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Terminal interativo do Python 3 2.1 MatemÆtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Nœmeros inteiros e de ponto (cid:29)utuante . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Resolvendo expressıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2.1 Expressıes dentro de expressıes . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Armazenando valores em variÆveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3.1 Sobreencrevendo valores das variÆveis . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Usando mais de uma variÆvel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5 Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3 Strings 9 3.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.1.1 Concatena(cid:231)ªo de strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.2 Escrevendo o primeiro script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2.1 (cid:16)Hello World!(cid:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.3 Como o programa (cid:16)Hello World(cid:17) funciona. . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.1 ComentÆrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.2 Fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3.3 Finalizando o programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4 Nome de variÆveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.6 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Adivinhe o nœmero 14 4.1 O jogo (cid:16)adivinhe o nœmero(cid:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Modelo de execu(cid:231)ªo do (cid:16)adivinhe o nœmero(cid:17) . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 C(cid:243)digo-fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.4 A senten(cid:231)a import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.5 A fun(cid:231)ªo random.randint() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5.1 Chamando fun(cid:231)ıes que pertencem a m(cid:243)dulos . . . . . . . . . . . . . . . . . . . 17 4.6 Passando argumentos para fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.7 Saudando o jogador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.8 La(cid:231)os de repeti(cid:231)ªo (loops) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.9 Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.10 Dado booleano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.11 Operadores de compara(cid:231)ªo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.12 Condi(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.13 Loops com senten(cid:231)as while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.14 As tentativas do jogador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.14.1 Convertendo strings para inteiros . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.14.2 Incrementando variÆveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.15 Senten(cid:231)as if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 iii iv SUM`RIO 4.16 Saindo de loops com o comando break . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.17 Veri(cid:28)car se o jogador venceu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.17.1 Veri(cid:28)car se o jogador perdeu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.18 Resumo: o que exatamente Ø programa(cid:231)ªo? . . . . . . . . . . . . . . . . . . . . . . . 23 4.19 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5 O Reino do Dragªo 25 5.1 Introdu(cid:231)ªo (cid:224) fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 Como jogar (cid:16)O Reino do Dragªo(cid:17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2.1 Modelo de sa(cid:237)da do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3 C(cid:243)digo-fonte do programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.4 Como o programa funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4.1 De(cid:28)nindo fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4.2 Operadores booleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.4.3 Tabelas-verdade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.4.4 Obtendo a entrada do jogador . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.4.5 Retorno de valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4.6 Escopo de variÆveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.4.7 De(cid:28)nindo a fun(cid:231)ªo checkCave(chosenCave) . . . . . . . . . . . . . . . . . 29 5.4.8 Onde de(cid:28)nir fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.9 Mostrando o resultado do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.4.10 Decidindo em que caverna estÆ o dragªo amigÆvel . . . . . . . . . . . . . . . . 30 5.4.11 Onde o programa realmente come(cid:231)a . . . . . . . . . . . . . . . . . . . . . . . . 31 5.4.12 Chamando fun(cid:231)ıes no programa . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.4.13 Perguntando se o jogador quer jogar novamente . . . . . . . . . . . . . . . . . 31 5.5 Projetando um programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.6 Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.7 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 Jogo da forca 34 6.1 Modelo de sa(cid:237)da do jogo de forca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.2 Arte ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.3 Projetando um programa atravØs de um (cid:29)uxograma . . . . . . . . . . . . . . . . . . . 37 6.4 C(cid:243)digo-fonte do jogo de forca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.5 Como funcionam algumas coisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 6.5.1 Strings de vÆrias linhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.5.2 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.5.3 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.5.4 O operador in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.5.5 Removendo itens de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.5.6 Listas de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.5.7 MØtodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.5.8 Os mØtodos de lista reverse() e append() . . . . . . . . . . . . . . . . . . 45 6.6 A diferen(cid:231)a entre mØtodos e fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.6.1 O mØtodo de lista split() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.7 Como o c(cid:243)digo funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.7.1 Mostrando a ilustra(cid:231)ªo para o jogador . . . . . . . . . . . . . . . . . . . . . . . 47 6.7.2 As fun(cid:231)ıes range() e list() . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.7.3 Loops for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6.7.4 Mostrando os espa(cid:231)os para as letras da palavra secreta . . . . . . . . . . . . . 49 6.7.5 Substituindo sublinhados por letras adivinhadas corretamente . . . . . . . . . 50 6.7.6 Obtendo os palpites do jogador . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.8 Senten(cid:231)as elif (else if) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.8.1 Ter certeza que o jogador deu um palpite vÆlido . . . . . . . . . . . . . . . . . 52 6.8.2 Perguntando se o jogador deseja jogar novamente. . . . . . . . . . . . . . . . . 52 6.9 Revisªo das fun(cid:231)ıes criadas para este jogo . . . . . . . . . . . . . . . . . . . . . . . . 53 6.10 C(cid:243)digo principal do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 SUM`RIO v 6.10.1 Mostrando a ilustra(cid:231)ªo ao jogador . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.10.2 Permitindoojogadorafazerumpalpiteeveri(cid:28)candoseopalpiteestÆnapalavra secreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.10.3 Veri(cid:28)car se o jogador venceu ou perdeu o jogo . . . . . . . . . . . . . . . . . . 54 6.10.4 Iniciando uma nova rodada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.11 Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.12 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7 Jogo da velha 56 7.1 Modelo de sa(cid:237)da do jogo da velha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.2 C(cid:243)digo-fonte do jogo da velha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 7.3 Projetando o programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 7.4 Representando o tabuleiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 7.5 Racioc(cid:237)nio do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.6 Como o programa funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.6.1 Imprimindo o tabuleiro na tela . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.6.2 Permitindo o jogador a escolher o s(cid:237)mbolo desejado . . . . . . . . . . . . . . . 63 7.6.3 Decidindo quem inicia o jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.6.4 Perguntando se o jogador deseja jogar novamente. . . . . . . . . . . . . . . . . 64 7.6.5 Mostrando a jogada no tabuleiro . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.7 ReferŒncias de lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 7.8 Veri(cid:28)car se o jogador venceu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.9 Duplicando o tabuleiro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.10 Veri(cid:28)cando se um espa(cid:231)o no tabuleiro estÆ livre . . . . . . . . . . . . . . . . . . . . . 65 7.11 Permitindo que o jogador entre com a sua jogada . . . . . . . . . . . . . . . . . . . . 65 7.12 Escolhendo um movimento da lista de movimentos . . . . . . . . . . . . . . . . . . . 65 7.12.1 O valor None . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.13 Criando a inteligŒncia arti(cid:28)cial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.13.1 O computador veri(cid:28)ca se pode vencer em um movimento . . . . . . . . . . . . 66 7.13.2 O computador veri(cid:28)ca se o jogador pode vencer em uma jogada . . . . . . . . 66 7.13.3 Veri(cid:28)cando os cantos, o centro e os lados (nesta ordem) . . . . . . . . . . . . . 66 7.14 Veri(cid:28)cando se o tabuleiro estÆ cheio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.15 O in(cid:237)cio do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.15.1 Rodando a vez do jogador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.15.2 Rodando a vez do computador . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.15.3 Finalizando o jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 7.16 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8 Bagels 68 8.1 Modelo de execu(cid:231)ªo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 8.2 C(cid:243)digo-fonte do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 8.3 Projeto do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.4 Como o programa funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.4.1 Operadores compostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.4.2 Retornando a dica ao jogador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.4.3 O mØtodo de lista sort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.4.4 O mØtodo de string join() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 8.4.5 Veri(cid:28)cando se a string possui apenas nœmeros. . . . . . . . . . . . . . . . . . . 71 8.5 In(cid:237)cio do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.5.1 Interpola(cid:231)ªo de strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8.5.2 Utilizando as fun(cid:231)ıes descritas e veri(cid:28)cando a vit(cid:243)ria do jogador . . . . . . . . 72 9 O Criptograma de CØsar 74 9.1 Criptogra(cid:28)a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.2 A encripta(cid:231)ªo de CØsar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9.3 ASCII, utilizando nœmeros para localizar letras . . . . . . . . . . . . . . . . . . . . . 74 9.4 As fun(cid:231)ıes chr() ord() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.5 Modelo de execu(cid:231)ªo do programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 vi SUM`RIO 9.6 C(cid:243)digo-fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.7 Como o c(cid:243)digo funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.7.1 Decidindo se o usuÆrio quer encriptar ou desencriptar uma mensagem . . . . . 77 9.7.2 Obtendo a mensagem do jogador . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.7.3 Obtendo a chave do jogador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.7.4 Encriptando ou desencriptando a mensagem com a chave dada . . . . . . . . . 77 9.7.5 Encriptando e desencriptando cada letra. . . . . . . . . . . . . . . . . . . . . . 77 9.7.6 O in(cid:237)cio do programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.8 O mØtodo de string isalpha() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.9 Os mØtodos de string isupper() e islower() . . . . . . . . . . . . . . . . . . . . 78 9.10 For(cid:231)a Bruta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.10.1 Adicionando um mØtodo de for(cid:231)a bruta ao programa . . . . . . . . . . . . . . . 78 9.11 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 10 Introdu(cid:231)ªo (cid:224) GrÆ(cid:28)cos e Anima(cid:231)ªo (parte 1) 80 10.1 Pygame. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 10.2 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 10.3 C(cid:243)digo-fonte do Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 10.4 Importando o m(cid:243)dulo Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 10.5 Fun(cid:231)ıes e mØtodos do programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.5.1 pygame.init() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.5.2 pygame.display.set_mode() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.6 ReferŒncias de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.7 Cores em Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.8 Fontes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 10.8.1 A fun(cid:231)ªo pygame.font.SysFont() . . . . . . . . . . . . . . . . . . . . . . . 83 10.8.2 O mØtodo render() para objetos Font . . . . . . . . . . . . . . . . . . . . . 84 10.9 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 10.10 MØtodos get_rect() para os objetos pygame.font.Font e pygame.Surface . 85 10.11 Fun(cid:231)ªo construtor e type() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 10.12 O mØtodo fill() para objetos Surface . . . . . . . . . . . . . . . . . . . . . . . . 86 10.13 Mais fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 10.13.1 pygame.draw.poligon() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 10.13.2 Desenhos genØricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 10.14 O tipo de dado pygame.PixelArray . . . . . . . . . . . . . . . . . . . . . . . . . . 87 10.14.1 O mØtodo blit() para objetos Surface . . . . . . . . . . . . . . . . . . . . 87 10.15 A fun(cid:231)ªo pygame.display.update() . . . . . . . . . . . . . . . . . . . . . . . . . 87 10.16 Eventos e loop do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 10.16.1 A fun(cid:231)ªo pygame.event.get() . . . . . . . . . . . . . . . . . . . . . . . . . 88 10.16.2 A fun(cid:231)ªo pygame.quit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 10.17 Exerc(cid:237)cios Complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 11 Introdu(cid:231)ªo (cid:224) GrÆ(cid:28)cos e Anima(cid:231)ªo (parte 2 90 11.1 C(cid:243)digo-fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 11.2 Como o programa funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 11.2.1 Movendo e rebatendo os blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 11.3 Como o programa funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 11.3.1 Criando a janela principal e iniciando o Pygame . . . . . . . . . . . . . . . . . 92 11.3.2 Iniciando as estruturas de dados dos blocos . . . . . . . . . . . . . . . . . . . . 93 11.3.3 Rodando o loop principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 11.3.4 Movendo cada bloco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 11.3.5 Veri(cid:28)cando se o bloco foi rebatido . . . . . . . . . . . . . . . . . . . . . . . . . 93 11.3.6 Mudando a dire(cid:231)ªo do bloco rebatido . . . . . . . . . . . . . . . . . . . . . . . 94 11.3.7 Desenhando os blocos em suas novas posi(cid:231)ıes . . . . . . . . . . . . . . . . . . . 94 11.4 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 12 Detec(cid:231)ªo de colisıes 95 12.1 C(cid:243)digo fonte: colisªo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 SUM`RIO vii 12.2 Como o programa funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 12.2.1 A fun(cid:231)ªo de detec(cid:231)ªo de colisªo . . . . . . . . . . . . . . . . . . . . . . . . . . 97 12.2.2 Determinando se um ponto estÆ dentro de um ret(cid:226)ngulo . . . . . . . . . . . . . 98 12.2.3 O objeto pygame.time.Clock e o mØtodo tick() . . . . . . . . . . . . . . 98 12.2.4 Colidindo com os quadrados verdes. . . . . . . . . . . . . . . . . . . . . . . . . 98 12.2.5 Nªo adicione ou remova itens de uma lista enquanto houver itera(cid:231)ıes sobre ela 99 12.2.6 Removendo os quadrados verdes . . . . . . . . . . . . . . . . . . . . . . . . . . 99 12.2.7 Desenhando os quadrados verdes na tela . . . . . . . . . . . . . . . . . . . . . . 99 12.3 C(cid:243)digo-fonte: entrada do usuÆrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 12.3.1 Iniciando os movimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 12.3.2 Lidando com as variÆveis do teclado . . . . . . . . . . . . . . . . . . . . . . . . 101 12.3.3 O evento MOUSEBUTTONUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 12.3.4 Movendo o (cid:16)jogador(cid:17) pela tela . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 12.3.5 O mØtodo colliderect() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 12.4 Exerc(cid:237)cios complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 13 Dodger 103 13.1 Revisªo dos tipos bÆsicos de dados do Pygame . . . . . . . . . . . . . . . . . . . . . . 103 13.2 C(cid:243)digo-fonte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 13.3 Como o programa funciona e recursos adicionais . . . . . . . . . . . . . . . . . . . . . 108 13.3.1 Importando os m(cid:243)dulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 13.3.2 Explorando o uso de constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . 108 13.3.3 Explorando o uso de fun(cid:231)ıes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 13.3.4 Cursor do mouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 13.3.5 Modo fullscreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 13.3.6 Mostrando a tela inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 13.3.7 O mØtodo move_ip() para objetos Rect e evento de movimento do mouse . 109 13.3.8 Movendo a personagem do jogador . . . . . . . . . . . . . . . . . . . . . . . . . 109 13.3.9 A fun(cid:231)ªo pygame.mouse.set_pos() . . . . . . . . . . . . . . . . . . . . . . 109 13.3.10 Desenhando o placar do jogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 13.4 Finalizando o projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 A Fluxogramas 111 A.1 Criando um Fluxograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 ReferŒncias BibliogrÆ(cid:28)cas 116 Lista de Figuras 1 Uma expressªo Ø constru(cid:237)da com valores e operadores. . . . . . . . . . . . . . . . . . . 4 2 VariÆveis sªo como caixas que podem guardar valores. . . . . . . . . . . . . . . . . . . 5 3 As variÆveis fizz e eggs ilustradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4 Blocos e indenta(cid:231)ªo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5 Funcionamento de um loop while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6 Senten(cid:231)as if e while.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 7 Partes de uma de(cid:28)ni(cid:231)ªo de fun(cid:231)ªo no Python. . . . . . . . . . . . . . . . . . . . . . . . 27 8 Fluxograma para o jogo (cid:16)O Reino do Dragªo(cid:17).. . . . . . . . . . . . . . . . . . . . . . . 32 9 Fluxograma para o jogo da forca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 10 ˝ndices em uma lista que contØm outras listas.. . . . . . . . . . . . . . . . . . . . . . . 45 11 Fluxograma para o jogo da velha. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 12 Representa(cid:231)ªo do tabuleiro para o jogo da velha. . . . . . . . . . . . . . . . . . . . . . 62 13 Representa(cid:231)ªo do tabuleiro do jogo da velha para o computador. . . . . . . . . . . . . 62 14 Expansªo do passo (cid:16)Obter o movimento do computador(cid:17) no (cid:29)uxograma. . . . . . . . . 63 15 Fluxograma para o jogo Bagels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 16 Alfabeto substitu(cid:237)do por caracteres 3 casas (cid:224) frente. . . . . . . . . . . . . . . . . . . . 74 17 Resultado da execu(cid:231)ªo do c(cid:243)digo 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 18 TØcnica de anti-aliasing aplicada a uma reta. . . . . . . . . . . . . . . . . . . . . . . . 84 19 Resultado da execu(cid:231)ªo do c(cid:243)digo 9. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 20 Formas de colisªo poss(cid:237)veis neste programa. . . . . . . . . . . . . . . . . . . . . . . . . 92 21 Resultado da execu(cid:231)ªo do c(cid:243)digo 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 22 Execu(cid:231)ªo do programa Dodger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 23 Come(cid:231)ando seu (cid:29)uxograma com as caixas in(cid:237)cio e (cid:28)m. . . . . . . . . . . . . . . . . . . 111 24 Desenhando os trŒs primeiros passos do Fluxograma. . . . . . . . . . . . . . . . . . . . 112 25 Rami(cid:28)cando o (cid:29)uxograma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 26 Criando os la(cid:231)os no (cid:29)uxograma.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 27 Alterando o segundo comando e adicionando a nova caixa. . . . . . . . . . . . . . . . . 113 28 Incluindo as novas caixas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 29 Fluxograma completo: Incluindo a nova caixa e o novo la(cid:231)o. . . . . . . . . . . . . . . . 115 viii Lista de Tabelas 1 Opera(cid:231)ıes matemÆticas bÆsicas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Comandos para caracteres especiais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 Operadores de compara(cid:231)ªo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4 Tabela-verdade do operador and . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5 Tabela-verdade do operador or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 6 Tabela-verdade do operador not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 7 Tabela ASCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8 Cores RGB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 9 Atributos dos objetos Rect. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 10 Constantes de evento para as teclas pressionadas. . . . . . . . . . . . . . . . . . . . . . 109 ix Lista de C(cid:243)digos 1 Primeiro script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 Jogo (cid:16)adivinhe o nœmero(cid:17). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3 O Reino do Dragªo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4 Jogo de forca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5 Jogo da velha.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6 Bagels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 7 Criptograma de CØsar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 8 Hello World grÆ(cid:28)co. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9 Anima(cid:231)ıes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10 Detec(cid:231)ªo de colisıes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 11 Detec(cid:231)ªo de entrada do usuÆrio.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 12 Jogo (cid:16)Dodger(cid:17). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 x

Description:
Alguns direitos reservados. Este documento é uma obra derivada de Invent Your Own Games with. Python , de Al Sweigart, e está sob a licença
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.