Você está na página 1de 3

1º Trabalho – Programação II – 2014/2 – Prof Guilherme

Instruções:
1. Esse trabalho foi distribuído 2ª feira dia 22/setembro. Vocês terão duas semanas
para entregá-lo. Deve ser entregue por email até 23:59 hrs do dia 6/outubro.
2. Pode, e deve, ser feito em grupo de dois alunos. Mande email (mais tarde aviso para
qual email deve ser mandado) e deve conter como assunto :
Primeiro Trabalho – Grupo Fulano da Silva e Beltrano de Oliveira
Você deve mandar como anexo o programa fonte em Python e quaisquer arquivos
necessário para rodar o programa. O programa tem que estar rodando
“razoavelmente correto”.
3. Procure se juntar com um colega do mesmo nível que o seu de habilidade em
programação. Se você estiver com um companheiro mais desenvolvido, você será
muito prejudicado.
4. Esse é o 1º trabalho da série. A média desta série dará um bônus de 15% na segunda
prova, isto é, a nota da prova será acrescida de 15% se você tiver média 10. O bonus
é proporcional à sua média. A segunda nota será calculada pela fórmula: nota =
min(MT*0.15*P2,10)
sendo: MT=média dos trabalhos; P2=nota da 2ª prova
5. A multa por atraso na entrega é de 10%. Aceito trabalhos atrasados até a data da 2ª
prova, e a multa é constante de 10%. É melhor entregar atrasado que não entregar.
6. Já falei para vocês e reitero mais uma vez: VOCÊ SÓ APRENDE A PROGRAMAR
PROGRAMANDO. Sempre que possível basearei as questões da prova nos
trabalhos e exercícios dados. Não adianta tirar DEZ nos trabalhos e uma nota baixa
na prova.

O problema:
Jogo da Fôrca: Faça um programa que implemente o jogo da fôrca.
+---------+
|
|
|
+--+
O jogo deve ter uma lista de palavras e sorteia uma
| / .. \
|
|
| -- |
----
palavra desta lista a cada jogada. Para fazer um
| ||
|
bonequinho, pode ser um bonequinho estilizado como
+-------+
| X===| |===X
| | |
|
| este ao lado.
+-------+
|| ||
| || ||
| <_| |_>
|
+-----------------+
| |
| |
+-----------------+

A finalidade deste trabalho é treinar o uso de objeto e deve ser feito em POO.

POO:
Como falei em sala, a POO (Programação Orientada a Objeto) é diferente da
programação convencional que estamos habituados. Leva algum tempo para sedimentar
os conceitos. A definição dos objetos e o relacionamento entre eles é fundamental para
uma boa estruturação do programa.
Modernamente usa-se a metodologia MVC (Modelo, Visão, Controle) em que
especializamos os objetos nessas três categorias.
Modelo: são objetos que guardam as informações essenciais do problema. Sem essas
informações o problema não existiria. No caso do jogo da forca, essas informações são a
1
1º Trabalho – Programação II – 2014/2 – Prof Guilherme

palavra e o andamento do jogo (até onde acertou). Geralmente esses objetos mudam
muito pouco e são os mais estáveis das três categorias. Eles só mudam quando o
problema muda.
Visão: são objetos que realizam entrada e saída de dados e SÓ! Não contêm lógica
nenhuma. Simplesmente leem o dado e o passam para quem vai processar (objeto ou
programa do tipo controle). Ou então recebe um dado e o exibe ao usuário. Toda
mudança de hardware afeta apenas os objetos de visão. Por exemplo, se quisermos
adaptar um sistema para cegos, apenas os objetos de visão (sem trocadilho kkk) serão
afetados.
Controle: são os objetos que controlam a lógica do programa. Não precisa
necessariamente ser um objeto. Pode ser o programa principal.

Objetos:
Baseado na metodologia MVC, defini as classes abaixo para essa problema. É assim
que geralmente se faz: começa-se definindo os objetos. Como vocês ainda não têm
experiência em POO, estou dando uma definição inicial de bandeja. Ela geralmente não
é a definitiva, quando vamos desenvolvendo as classes, ligeiras modificações são feitas.
É só uma sugestão, vocês são livres para alterá-la à vontade.

Classe: Palavra (tipo modelo): controla a palavra a ser advinhada e o acerto parcial.
Métodos:
__init__(self): construtor. Constroi 2 listas vazias: self.palavra (que conterá a
palavra) e self.parcial (que conterá o acerto parcial).
nova(self, palavra): inicia uma nova palavra: faz self.palavra = palavra e
self.parcial uma lista só de “-” do tamanho da palavra.
parcial(self): retorna a palavra parcialmente preenchida com os acertos e com “-”
no lugar que ainda falta acertar.
palpite(self,letra): jogador forneceu uma letra. Essa classe deve atualizar as
. informações para refletir esse fato. Retorna True se o jogador
acertou a letra e retorna False caso contrário.
acertou(self): retorna True se acertou a palavra toda, False caso contrario.

Classe: Boneco (tipo visão) mostra o boneco sendo enforcado.


Métodos:
__init__(self): construtor.
Mostra(self,n_erros): mostra o boneco sendo enforcado, já com n_erros erros.

Classe: Le_letra (tipo visão) lê uma letra fornecida pelo jogador, não aceitando letras
já dadas.
Métodos:
__init__(self): construtor.
nova(self): inicia palavra nova zerando as letras já lidas.

2
1º Trabalho – Programação II – 2014/2 – Prof Guilherme

le(self): retorna uma letra lida. Se o jogador entrar uma letra que já deu, avisa e
lê de novo.

Classe: Sorteio (tipo modelo) sorteia uma palavra de uma tabela. Essa tabela pode ser
criada por atribuições ou preferencialmente ser lida de um arquivo. A vantagem
de se ler de um arquivo é que podemos futuramente criar nível de dificuldade ou
outra facilidade para tornar o jogo mais interessante.
Métodos:
__init__(self): cria a tabela de palavras (lendo de um arquivo ou não).
sorteia(self): retorna uma palavra sorteada, sem repetir. Se a tabala já acabou,
retorna None.
novo_jogo(self): começa a sortear de novo.

Nesta 3a feira vou começar o desenvolvinmento deste jogo na aula prática.

Você também pode gostar