e livro é destinado? - Pág. i
Sobre o Livro - Pág. ii
Capítulo 1 - Instalando o Python e o Pygame - Pág. 1
*[O que Você Deve Saber Antes de Começar] *[Baixando e Instalando o Python - Pág. 1] *[Instruções para Windows - Pág. 1]
- Instruções para Mac OS X - Pág. 2
- Instruções para Ubuntu e Linux - Pág. 2
- Iniciando o Python - Pág. 2
- Instalando o Pygame - Pág. 3
- Como Usar Esse Livro - Pág. 4
- Os Programas Apresentados - Pág. 4
- Baixando Arquivos Gráficos e de Som - Pág. 4
- Número de Linhas e Espaços - Pág. 4
- Quebra automática de Texto Nesse Livro - Pág. 5
- Checando Seu Código Online - Pág. 6
- Mais Links Informativos em http://invpy.com - Pág. 6
Capítulo 2 - Noções Básicas de Pygame - Pág. 7
- GUI vs. CLI - Pág. 7
- Código-fonte para Hello World com Pygame - Pág. 7
- Configurando um Progama do Pygame - Pág. 8
- Game Loops e Game States - Pág. 10
- Objetos pygame.event.Event - Pág. 11
- O Evento QUIT e a Função pygame.quit() - Pág. 12
- Coordenadas do Pixel - Pág. 13
- Um lembrete sobre Funções, Métodos, Funções Construtoras, e Funções em Módulos (e a Diferença entre eles) - Pág. 14
- Objetos Surface e a Janela - Pág. 15
- Cores - Pág. 16
- Cores Transparentes - Pág. 17
- Objetos pygame.Color - Pág. 18
- Objetos Rect - Pág. 18
- Funções Primitivas de Desenho - Pág. 20
- Objetos pygame.PixelArray - Pág. 23
- A Função pygame.display.update() - Pág. 24
- Animação - Pág. 24
- Frames Por Segundo e Objetos pygame.time.Clock - Pág. 27
- Desenhando Imagens com pygame.image.load() and blit() - Pág. 28
- Fontes - Pág. 28
- Anti-Aliasing - Pág. 30
- Reprodução de Sons - Pág. 31
- Sumário - Pág. 32
Capítulo 3 - Jogo da Memória - Pág. 33
- Como Jogar o Jogo da Memória - Pág. 33
- Loops for Aninhados - Pág. 33
- Código-fonte do Jogo da Memória - Pág. 34
- Créditos e Imports - Pág. 42
- Números Mágicos são Ruins - Pág. 42
- Checagens com Declarações assert - Pág. 43
- Dizendo Se um Número é Par ou Ímpar - Pág. 44
- Falha Precoce e Falha Frequente! - Pág. 44
- Deixando o Código-fonte Bonito - Pág. 45
- Usando Constantes ao invés de Strings - Pág. 46
- Certificando-se que Nós Temos Ícones o suficiente - Pág. 47
- Tuplas vs. Listas, Imutáveis vs. Mutáveis - Pág. 47
- Tuplas de Um Item Precisam de Uma Vírgula à Direita - Pág. 48
- Conversão entre Listas e Tuplas - Pág. 49
- A Declaração global, e Porque as Variáveis Globais são do Mal - Pág. 49
- Estruturas de Dados e Listas 2D - Pág. 51
- A Animação "Iniciar o Jogo" - Pág. 52
- O Loop do Jogo - Pág. 52
- O Evento Loop de Tratamento - Pág. 53
- Checando em Qual Caixa o Cursor do Mouse Está - Pág. 54
- Manipulando a Primeira Caixa Clicada - Pág. 55
- Tratando Par de Ícones Incompatíveis - Pág. 56
- Tratando se o Jogador Ganhou - Pág. 56
- Desenhando o Game State na Tela - Pág. 57
- Criando a Estrutura de Dados "Caixas Reveladas" - Pág. 58
- Criando a Estrutura de Dados do Quadro: Passo 1 - Obter Todos os Ícones Possíveis - Pág. 59
- Passo 2 - Misturar e Truncar a Lista de Todos os Ícones - Pág. 59
- Passo 3 - Posicionando os Ícones no Quadro - Pág. 59
- Dividindo uma Lista em uma Lista de Listas - Pág. 60
- Sistemas de Diferentes Coordenadas - Pág. 61
- Convertendo de Coordenadas de Pixel para Coordenadas de Caixa - Pág. 62
- Desenhando um Ícone, e Syntactic Sugar - Pág. 63
- Obtendo a Forma e Cor dos Icones nos Espaços do Quadro com Syntactic Sugar - Pág. 64
- Desenhando a Parte Coberta da Caixa - Pág. 64
- Tratando as Animações de Revelando e Escondendo - Pág. 65
- Desenhando o Quadro Inteiro - Pág. 66
- Desenhando o Realçe - Pág. 67
- A Animação de "Iniciar o Jogo" - Pág. 67
- Revelando e Escondendo os Grupos de Caixas - Pág. 68
- A Animação de "Você Venceu" - Pág. 68
- Dizendo se o Jogador Ganhou - Pág. 69
- Por que se Preocupar em ter uma Função main()? - Pág. 69
- Por que se Preocupar com Legibilidade? - Pág. 70
- Resumo, e uma sugestão de Hacking - Pág. 74
Capítulo 4 - Slide Puzzle - Pág. 77
- Como Jogar Slide Puzzle - Pág. 77
- Código-fonte para o Slide Puzzle - Pág. 77
- Segundo Verso, Igual ao Primeiro - Pág. 85
- Configurando os Botões - Pág. 89
- Sendo Esperto Usando Códigos Idiotas - Pág. 87
- O Loop do Jogo Principal - Pág. 88
- Clicando nos Botões - Pág. 89
- Deslizando tiles com o Mouse - Pág. 90
- Deslizando tiles com o Teclado - Pág. 90
- Truque "Equal To One Of" com o Operador in - Pág. 91
- WASD e Teclas de Seta - Pág. 91
- Realmente fazendo o Azulejo Deslizar - Pág. 92
- IDLE e Concluindo os Programas Pygame - Pág. 92
- Checando por um Evento Específico, e Postando Eventos na Fila de Eventos da Pygame - Pág. 92
- Criando a Estrutura de Dados do Quadro - Pág. 93
- Não Rastreando a Posição em Branco - Pág. 94
- Fazendo um Movimento por meio da Atualização da Estrutura de Dados do Quadro - Pág. 94
- Quando NÃO Usar uma Asserção - Pág. 95
- Obtendo um não tão aleatório Movimento - Pág. 96
- Convertendo as Coordenadas dos tiles para Coordenadas de Pixel - Pág. 97
- Convertendo de Coordenadas de Pixel para Coordenadas do Quadro - Pág. 97
- Desenhando um tile - Pág. 97
- Fazendo o Texto Aparecer na Tela - Pág. 98
- Desenhando o Quadro - Pág. 99
- Desenhando a Borda do Quadro - Pág. 99
- Desenhando os Botões - Pág. 100
- Animando os Deslizes dos tiles - Pág. 100
- O Método de Superfície copy() - Pág. 101
- Criando um Novo Quebra-Cabeça - Pág. 103
- Animando o Reset do Quadro - Pág. 104
- Tempo vs. tradeoffs de memória - Pág. 105
- Ninguem se importa com alguns bytes - Pág. 106
- Ninguem se importa com alguns milhões de Nanosegundos - Pág. 107
- Sumário - Pág. 107 Capítulo 5 - Simulate - Pág. 108
- Como jogar Simulate - Pág. 108
- Código fonte do Simulate - Pág. 108
- O conteúdo inicial - Pág. 114
- Configurando os botões - Pág. 115
- A função main() - Pág. 115
- Algumas variáveis locais usadas nesse programa - Pág. 116
- Desenhando o quadro e tratando inputs - Pág. 117
- Verificando cliques do Mouse - Pág. 118
- Verificando o pressionamento do teclado - Pág. 118
- Os dois estados do loop do jogo - Pág. 119
- Identificando se o jogador apertou os botões certos - Pág. 119
- Epoch Time - Pág. 121
- Desenhando o quadro na tela - Pág. 122
- A mesma velha função terminate() - Pág. 122
- Reusando constantes - Pág. 123
- Animando o botão flash - Pág. 123
- Desenhando os botões - Pág. 126
- Animando a troca do fundo - Pág. 126
- A animação de game over - Pág. 127
- Convertendo coordenadas de pixel para botões - Pág. 129
- Explícito é melhor que Implícito - Pág. 129 Capítulo 6 - Wormy - Pág. 131
- Como jogar Wormy - Pág. 131
- Código fonte do Wormy - Pág. 131
- O grid - Pág. 137
- O código de inicialização - Pág. 137
- A função main() - Pág. 138
- Uma função separada runGame() - Pág. 139
- Tratando o Event loop - Pág. 139
- Detecção de colisão - Pág. 140
- Detectando colisões com a maçã - Pág. 141
- Movendo a minhoca - Pág. 142
- O metódo insert() da classe List - Pág. 142
- Desenhando a tela - Pág. 143
- Desenhando um texto "Pressione alguma tecla" na tela - Pág. 143
- A função checkForKeyPress() - Pág. 143
- A tela de start - Pág. 144
- Girando o texto da tela de start - Pág. 145
- Giros não são perfeitos - Pág. 146
- Decidindo onde a maçã aparece - Pág. 147
- Telas de Game Over - Pág. 147
- Funções de desenho - Pág. 148
- Não reuse nomes de variáveis - Pág. 151 Capítulo 7 - Tetromino - Pág. 153
- Como jogar Tetromino - Pág. 153
- Algumas nomenclaturas do Tetromino - Pág. 153
- Código fonte do Tetromino - Pág. 154
- O usual código de configuração - Pág. 166
- Configurando constantes de tempo para teclas que foram mantidas pressionadas - Pág. 166
- Mais código de configuração - Pág. 166
- configurando os templates de peças - Pág. 168
- Dividindo uma linha de código em muitas linhas - Pág. 171
- A função main() - Pág. 172
- O início de um novo jogo - Pág. 173
- O loop do jogo - Pág. 174
- O loop de tratamento de eventos - Pág. 174
- Pausando o jogo - Pág. 174
- Usando variáveis de movimento para tratar entradas do usuário - Pág. 175
- Verificando se um movimento pro lado ou um giro é válido - Pág. 175
- Encontrando o fundo - Pág. 178
- Movendo enquanto uma tecla é mantida pressionada - Pág. 179
- Deixando a peça cair naturalmente - Pág. 182
- Desenhando tudo na tela - Pág. 182
- makeTextObjs(), um função para criar textos - Pág. 183
- A mesma velha função terminate() - Pág. 183
- Aguardando por um Key Press Event com a função checkForKeyPress() - Pág. 183
- showTextscreen(), uma função genérica para textos - Pág. 184
- A função checkForQuit() - Pág. 185
- A função calculateLevelAndFallFreq() - Pág. 185