Bem Vindo à documentação do Desenvolvimento Ágil PPGI 2020!

Desenvolvimento Ágil PPGI 2020

Projetos da disciplina de Desenvolvimento Ágil Orientado a Objetos, utilizando a plataforma de programação SuperPython.

Desenvolveremos aplicações reais WEB nos seguintes temas: Tutorial Kwarwp: Um tutorial para aprendizado da linguagem Python através das aventuras de um índio. ArtAntCovid: Um aplicativo de acompanhamento e proteção da população contra a pandemia viral. ActivUFRJ Leve: Um ambiente virtual dedicado ao ensino e pesquisa com uma interface intuitiva. Plataforma SupyGirls: Uma plataforma para desenvolvimento de jogos educacionais em Python. Diversas ferramentas e bibliotecas de desenvolvimento serão usadas como o Pycharm, Jupyter, GitLab, Docker, Notion e outras. A ideia é ir do mais básico ao mais avançado em doze semanas.

Módulos Tutoriais

Módulos desenvolvidos para ensinar algum aspecto da programação

Jogo de Tabuleiro Quarto

Tutorial de Eventos

Modulos dos Participantes

Desenvolvimento das equipes de programação

Projetos das Equipes:

Projeto Alpha

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Jogo de Tabuleiro Quarto.

Modulo Quarto

Jogo de Tabuleiro Quarto.

Code author: Carlo Oliveira <carlo@ufrj.br>

Classes neste módulo:

JogoDoQuarto Jogo de tabuleiro para dois jogadores.

Pino Representa um pino que se move de um tabuleiro para outro.

Casa Representa um case que pode receber um pino no tabueiro.

Changelog

New in version 20.07: Criando o tabuleiro.

New in version 20.07.01: Criando Pino e Casa.

Note

Este módulo é um tutorial ensinando a programar um jogo de tabuleiro simples.

Classe Pino

Módulo Jogo de Tabuleiro Quarto.

class adda.quarto.Pino(indice, cor, casa, dx=101, dy=60)[source]

Pinos do jogo quarto variando em cor, altura, forma e buraco

Observação: Uma folha sprite é uma imagem contendo vários desenhos com peças que serão usados em um jogo.

Parameters:
  • indice – O índice do pino na folha sprite (cada imagem tem 8 pinos).
  • cor – Nome da imagem sprite com um conjunto de pinos claros ou escuros.
  • casa – Casa original onde o pino vai ser colocado.
  • dx – o intervalo horizontal em pixels entre duas figuras de pino na folha sprite.
  • dy – o intervalo vertical em pixels entre duas figuras de pino na folha sprite.
static pino(nome)[source]

Retorna o pino localizado dado o nome.

Parameters:nome – O nome do pino no dicionário de pinos PINOS.
Returns:O objeto pino que tem o nome dado.
Return type:Instância da classe Pino.
static pinos(cor, table)[source]

Cria um conjunto de pinos de uma cor e aloca no dado tabuleiro.

Parameters:
  • table – A tabela contendo um cojunto de casas onde os pinos serão alocados.
  • cor – Nome da imagem sprite com um conjunto de pinos claros ou escuros.
Returns:

Uma lista de pinos alocados nas casas do tabuleiro dado.

Return type:

Lista contendo instâncias da classe Pino.

Classe Casa

Módulo Jogo de Tabuleiro Quarto.

class adda.quarto.Casa(base, fundo, x, y, dx=0, dy=3, mx=0, my=0, livre=False, t=75)[source]

Casa do jogo quarto, podendo ser do tabuleiro central ou adjacentes.

Parameters:
  • base – A cena em que este tabuleiro vai entrar.
  • fundo – A imagem que representa esta casa.
  • livre – Indica se a casa está livre ou ocupada quando for criada.
  • t – Tamanho (altura e largura do desenho da casa, inicia em um oitavo do tabuleiro.
  • x – A posição absoluta horizontal em casas que esta casa vai ser colocada.
  • y – A posição absoluta vertical em casas que esta casa vai ser colocada.
  • dx – O deslocamento horizontal em casas que esta casa tem em relação à esquerda.
  • dy – O deslocamento vertical em casas que esta casa tem em relação ao topo.
  • mx – Ajuste fino horizontal em pixels do posicionamento da casa.
  • my – Ajuste fino vertical em pixels do posicionamento da casa.

Note

folha sprite:é uma imagem contendo vários desenhos com peças que serão usados em um jogo.
dropper:dicionário necessário para definir o comportamento do drop. Cada chave deste dicionário deve ser o nome de um pino passível de ser arrastado para esta casa. Os nomes são do tipo topo0 … topo7 ou lado0 … lado7. A construção {f”{nome}{pino}”: ..} é chamada em Python de dict comprehension, pois gera um dicionário a partir de uma iteração. O termo f”{nome}{pino}” constrói as chaves do dicionário a partir da lista (topo, lado) e dos números de 0 a 7. O termo lambda ev, nome_pino, *_: self.entrar(nome_pino) é uma função anônima que recebe os parametros ev e nome_pino enviados pelo mecanismo interno de arrasto do Elemento. Neste caso, para qualquer pino eu quero que ele entre na casa corrente, por isso o self.entrar(nome_pino) é chamado dentro da função anônima.
entrar(nome)[source]

Permite um pino entrar nesta casa se ela estiver livre.

Parameters:nome – O nome do pino que vai entrar na casa.

Classe Jogo do Quarto

Módulo Jogo de Tabuleiro Quarto.

class adda.quarto.JogoDoQuarto[source]

Bases: object

Jogo do Quarto - Jogo de Tabuleiro. Quarto é um jogo de tabuleiro para dois jogadores inventado pelo matemático suíço Blaise Müller em 1991.

O jogo é jogado em um tabuleiro 4 × 4. Existem 16 peças únicas para brincar, cada uma das quais é:

  • alto ou baixo;
  • vermelho ou azul (ou um par diferente de cores, por exemplo, madeira manchada de clara ou escura);
  • quadrado ou circular; e
  • topo oco ou topo sólido.

Os jogadores se revezam na escolha de uma peça que o outro jogador deve colocar no tabuleiro. Um jogador vence colocando uma peça no tabuleiro que forma uma linha horizontal, vertical ou diagonal de quatro peças, todas com um atributo em comum (todas curtas, todas circulares, etc.). Uma regra de variante incluída em muitas edições fornece uma segunda maneira de ganhar colocando quatro peças correspondentes em um quadrado 2 × 2.

table(base, fundo, linhas=5, colunas=5, dx=0, dy=3, mx=0, my=0, livre=False)[source]

Cria um conjunto de casas de um tipo e aloca na cena dada.

Parameters:
  • base – A cena em que este tabuleiro vai entrar.
  • fundo – A imagem que representa cada casa.
  • livre – Indica se as casas estão livres ou ocupadas quando forem criadas.
  • t – Tamanho (altura e largura do desenho da casa, inicia em um oitavo do tabuleiro.
  • linhas – O número de linhas de casas neste tabuleiro.
  • colunas – O número de colunas de casas neste tabuleiro.
  • dx – O deslocamento horizontal em casas que cada casa tem em relação à esquerda.
  • dy – O deslocamento vertical em casas que cada casa tem em relação ao topo.
  • mx – Ajuste fino horizontal em pixels do posicionamento de cada casa.
  • my – Ajuste fino vertical em pixels do posicionamento de cada casa.
Returns:

Uma tabela de duas dimensões de casas arranjadas nas posições dadas.

Return type:

Lista de listas contendo instâncias da classe Casa.

vai()[source]

Aloca esta cena na página do navegador.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Projeto Alpha.

Um pequeno labirinto com várias câmaras.

Modulo Main

Projeto ALPHA - Jogo de Labirinto com cenas.

Calabouço de Barro.

Code author: Rodrigo Esquinelato <resquinelato@gmail.com>

Code author: Charles Soares Pimentel <pimentelufrj@gmail.com>

Changelog

Código alterado de Monica Novellino <monicanovellino@gmail.com>

New in version 20.07: Adicionei 5 imagens iniciais do labirinto e alterei o pacman (podem criar outro peronagem) Contador adicionado para gerar as seguintes fases em função da linha da matriz Contador adicionado para gerar as seguintes posições iniciais em função do índice da lista

class alpha.main.Eventos[source]

Associa um evento a uma imagem e captura eventos de teclado.

BONECO = 'https://i.imgur.com/k63kwfa.png'
CENA_corredor_1 = 'https://i.imgur.com/L71ZV6Z.png'
CENA_corredor_2 = 'https://i.imgur.com/5Qno2fs.png'
CENA_corredor_3 = 'https://i.imgur.com/gZ5wc0h.png'
CENA_corredor_4 = 'https://i.imgur.com/xI8i7Nc.png'
CENA_corredor_5 = 'https://i.imgur.com/GLVctqb.png'
anda_boneco(ev=None)[source]
listaFase = ['https://i.imgur.com/5Qno2fs.png', 'https://i.imgur.com/gZ5wc0h.png', 'https://i.imgur.com/xI8i7Nc.png', 'https://i.imgur.com/GLVctqb.png']
vai()[source]

mostra corredor do labirinto

Modulo Hotel

Início Projeto Alpha.

Projeto ALPHA - Jogo de Labirinto com cenas.

Code author: Monica Novellino <monicanovellino@gmail.com>

Changelog

New in version 0.1: - Planta da casa - Boneco andando com as setas

class alpha.hotel.Eventos[source]

Associa um evento a uma imagem e captura eventos de teclado.

BONECO = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Prick%C3%A4tarpucken.svg/200px-Prick%C3%A4tarpucken.svg.png'
CENA_COZINHA = 'https://www.decorfacil.com/wp-content/uploads/2018/03/20180311tons-de-rosa-03.jpg'
CENA_ESCRITORIO = 'https://www.decorfacil.com/wp-content/uploads/2018/03/20180311tons-de-rosa-05.jpg'
CENA_PLANTA = 'https://w7.pngwing.com/pngs/38/713/png-transparent-floor-plan-design-plan-media-schematic.png'
anda_boneco(ev=None)[source]

” Faz o boneco caminhar com a cptura das setas. :param ev: estrutura enviad pelo evento onde se recupera informações.

vai()[source]

mostra a cena da planta da casa.

Modulo India

Início Projeto Alpha.

Jogo de Labirinto com cenas.

Calabouço de Barro.

Code author: Rodrigo Esquinelato <resquinelato@gmail.com>

Classe neste módulo:

Eventos Gera a cena, personagem e a movimentação

Changelog

New in version 20.07: Criando a lógica do jogo e o layout das fases.

Contador adicionado para gerar as seguintes fases em função da linha da matriz.

Contador adicionado para gerar as seguintes posições iniciais em função do índice da lista.

class alpha.india.Eventos[source]

Associa um evento a uma imagem

BONECO = 'https://i.imgur.com/k63kwfa.png'
CENA_corredor_1 = 'https://i.imgur.com/L71ZV6Z.png'
CENA_corredor_2 = 'https://i.imgur.com/5Qno2fs.png'
CENA_corredor_3 = 'https://i.imgur.com/gZ5wc0h.png'
CENA_corredor_4 = 'https://i.imgur.com/xI8i7Nc.png'
CENA_corredor_5 = 'https://i.imgur.com/GLVctqb.png'
anda_boneco(ev=None)[source]
listaFase = ['https://i.imgur.com/5Qno2fs.png', 'https://i.imgur.com/gZ5wc0h.png', 'https://i.imgur.com/xI8i7Nc.png', 'https://i.imgur.com/GLVctqb.png']
vai()[source]
Returns:Cenário do labirinto.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Projeto Bravo.

Um jogo que ensine o básico da programação no SuperPython.

Modulo Main

Modulo India

Início Projeto Bravo.

Modulo Hotel

Início Projeto Bravo.

Em Construção.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Projeto Charlie.

Quebra-cabeças para ensino de programação orientada a objeto.

Modulo Main

Charlie - Projeto sem descrição, (mude esta linha).

Code author: Isaac D’Césares (golf) <isaac.dcesares@gmail.com>

Code author: Nome Sobrenome (hotel) <mail@local.tipo>

Code author: Nome Sobrenome (india) <mail@local.tipo>

Code author: Nome Sobrenome (juliet) <mail@local.tipo>

Changelog

New in version 20.07: Descreva o que você adicionou no código.

Modulo Juliet

Início Projeto Charlie.

ensinar orientando ao objeto com quebra cabeça .

Code author: Leniah Lima <leniah@nce.ufrj.br>

Changelog

New in version 20.07: Descreva o que você adicionou no código.

class charlie.juliet.minipython(esta_cena, chama_quando_acerta)[source]

Usa um editor de imagem ( /) e recorta o Herdograma em linhas geracionais. No game, o jogador terá que clicar nas linhas em ordem certa para montar o herdograma corretamente.

posiciona_proxima(posicao)[source]

Chamdo pelo clique (vai) de cada peça. Atualiza a próxima posição da peça. Calcula se montou correto, comparando com a lista de posicões corretas. Se já montou quatro peças, e não acerto sinaliza com zero, para iniciar o jogo.

class charlie.juliet.normal[source]
mostra_conteudo_minipython(*_)[source]
vai(*_)[source]

Modulo India

Início Projeto Charlie.

Em Construção.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Projeto Delta.

JOGO DA MEMÓRIA.

Modulo Main

Delta - Projeto sem descrição, (mude esta linha).

Code author: Paulo Assumpção (golf) <mail@local.tipo>

Code author: Anni Provietti (hotel) <mail@local.tipo>

Code author: Emanuelle Simas (india) <ellesimas@gmail.com>

Code author: Nome Sobrenome (juliet) <mail@local.tipo>

Changelog

New in version 20.07: Descreva o que você adicionou no código.

class delta.main.end[source]
class delta.main.start[source]

Gera uma classe onde há a tela de partida do jogo da memória.

chama(event=None)[source]
solucao = None

O bind liga um evento a um método

vai()[source]

Modulo Hotel

Início Projeto Delta.

class delta.hotel.Card(name, image, position, cena, rule)[source]
turnDown(env=None)[source]
turnUp(env=None)[source]
class delta.hotel.Game[source]
cena = <Cena id='140133148222672'>
create_2x2_cards()[source]

matrix 2x3: 1A 1B 2A 2B

previous_selected_card = None
static rule(selected_card)[source]
shuffle_cards()[source]
vai()[source]

Modulo India

Início Projeto Delta.

Modulo Juliet

Início Projeto Delta.

Modulo Golf

Início Projeto Delta.

Jogo da Memória.

Code author: Paulo Assumpção <paulo.assump@gmail.com>

Changelog

New in version 20.07: Grid 2x5 de cartões do jogo da memória shuffle das cartas bind do click sobre o botão regra do jogo

class delta.golf.Card(name, image, position, cena, rule)[source]
turnDown(env=None)[source]
turnUp(env=None)[source]
class delta.golf.Game[source]
cena = <Cena id='140133147367184'>
create_2x5_cards()[source]
previous_selected_card = None
static rule(selected_card)[source]
shuffle_cards()[source]
vai()[source]
delta.golf.IMG_HEIGHT = 150

Classe responsável pelo desenho das cartas na cena

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Projeto Echo.

jogo de tabuleiro de Olimpíada Matemática.

Modulo Main

Jogo Olimpíadas de Matemática20.07 * NEW: O jogo original Autor: Grupo Echo (Aline, Lorena, Renato e Victória)

class echo.main.Jogo[source]

Representa uma cena de tabuleiro com o botão

vai()[source]

Mostra o tabuleiro

class echo.main.Tabuleiro[source]

Representa uma cena da calçada da praia

vai()[source]

Mostra a cena do tabuleiro

Modulo Hotel

Início Projeto Echo.

Modulo India

Início Projeto Echo.

Projeto sem descrição, (mude esta linha).

Code author: Victória Regina Caruzo <victoriareginalattes@gmail.com>

Changelog

New in version 20.07: Descreva o que você adicionou no código.

Modulo Juliet

Início Projeto Echo.

Modulo Golf

Início Projeto Echo.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Projeto Foxtrot.

Um jogo que ensine o básico da programaçao no SuperPython - SuperPython World.

Modulo Main

Foxtrot - Projeto sem descrição, (mude esta linha).

Code author: Nome Sobrenome (golf) <mail@local.tipo>

Code author: Nome Sobrenome (hotel) <mail@local.tipo>

Code author: Nome Sobrenome (india) <mail@local.tipo>

Code author: Nome Sobrenome (juliet) <mail@local.tipo>

Changelog

New in version 20.07: Descreva o que você adicionou no código.

Modulo Hotel

Início Projeto Foxtrot.

Modulo India

Início Projeto Foxtrot.

Modulo Juliet

Início Projeto Foxtrot.

Modulo Golf

Início Projeto Foxtrot.

Projeto SuperPython World,

Code author: Raquel Fernandes <raquelmachado4993@gmail.com>

Changelog

New in version 20.07: Página inicial do Jogo.

foxtrot.golf.FOCO = 'https://i.imgur.com/6e096Va.png'

criando classe jogo

class foxtrot.golf.Jogo[source]
avatar2 = None

exibindo elementos na cena sobre

botao_sobre = None

exibindo cena

capa = None

inserindo elementos na cena

castelo = None

texto castelo

cena_sobre = None

Cena sobre

cenaauthor = None

ação após escolha do Avatar

porta = None

textos

texto_jogar = None

ação caso seja clicado

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Tutorial Um.

Modulo Tutorial Um

Tutorial Um - respondendo dúvidas do SuperPython.

Code author: Carlo Oliveira <carlo@ufrj.br>

  • Como associar um evento a uma imagem
  • Como combinar cenas em salas diferentes
  • Como capturar o teclado

Classes neste modulo:

Eventos Exemplo de capturar eventos de mouse e teclado.

Changelog

New in version 20.07: Documentação do tutorial.

New in version 20.07.1: Inclui um import.

Note

Este módulo é um tutorial ensinando a programar um jogo de tabuleiro simples.

Classe Eventos

Módulo Tutorial Um.

class adda.tutorial_um.Eventos[source]

Bases: object

Associa um evento a uma imagem e captura eventos de teclado.

anda_banhista(ev=None)[source]

” Faz o banhista caminhar com a captura das setas.

Parameters:ev – estrutura enviada pelo evento onde se recupera informações.
vai()[source]

mostra a cena da calçada.

ve_dark(ev=None)[source]

” Faz o letreiro mostrar ou ocultar quando se passa o mouse no banhista.

Parameters:ev – estrutura enviada pelo evento onde se recupera informações.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

Unreleased

  • to be defined

20.07

Fixed

  • Shows by default main.py at page title.
  • Some PEP8 refactoring and minor documentantion.

Added

  • Handles filenames other than main.py.
  • Accept new file specification in URL, use <filename>.pys
  • New CHANGELOG.rst
  • New readme.rst
  • Add Version to inner pages

20.06

Fixed

  • Kwarwp assignment documentation.
  • Docker file gunicorn configuration

Added

  • New readme.md

18.7

Added

  • Original Code.

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE

Indices e tabelas

Laboratório de Automação de Sistemas Educacionais

Copyright © Carlo Olivera

LABASE - NCE - UFRJ

LABASE