Escolar Documentos
Profissional Documentos
Cultura Documentos
Primeiro Exercício-Programa
Tabuleiro
No jogo original, cada casa do tabuleiro pode ser marcada por ×, ⃝ ou vazio. Neste
EP1, vamos representar uma casa marcada com × pelo número 1, uma casa mar-
cada com ⃝ pelo número 2, e uma casa vazia pelo número 0 (zero). Desta maneira,
podemos representar qualquer configuração do tabuleiro do jogo da velha como um
número inteiro na base 3 (sistema de numeração ternário ou trinário), usando o equi-
valente à representação posicional de números, com o dígito representando o menor
número ocupando a posição à esquerda superior e o dígito representando o maior
número ocupando a posição à direita inferior. Isto é, os dígitos da representação
inteira ihgfedcba são organizados da seguinte forma:
a b c
d e f
g h i
1
O número ternário representando um tabuleiro do jogo da velha pode ser con-
vertido para base 10, um inteiro pertencente ao intervalo entre 0 e (39 − 1 = 19682).
Por exemplo, a configuração do tabuleiro
× × ⃝ 1 1 2
× ⃝ ⇔ 1 2 0
⃝ × 2 1 0
é representada pelo inteiro 012021211 na base 3 (na ordem ihgfedcba), denotado por
0120212113 , que quando convertido para a base 10 resulta no inteiro 385610 (inteiro
na base 10), isto é:
1 × 30 + 1 × 31 + 2 × 32 + 1 × 33 + 2 × 34 + 0 × 35 + 2 × 36 + 1 × 37 + 0 × 38 = 3856
Regras do Jogo
No modo oficial do jogo, participam duas pessoas, que jogam alternadamente, pre-
enchendo cada uma das casas vazias. Cada participante pode usar uma marcação
2
(× ou ⃝). Vence o jogador que conseguir formar primeiro uma linha com três
símbolos iguais, seja ela na horizontal, vertical ou diagonal.
Quando todas as casas do tabuleiro estiverem preenchidas e nenhum dos dois
jogadores conseguiu a vitória, dizemos que houve um empate, mais comumente
descrito como VELHA. Para rejuvenescer esta velha, propomos a regra do desempate
descrita a seguir.
Regra do Desempate
• a casa central e ;
Programas em Python
3
Parte C [data de entrega 30/04/2023] Finalmente, a terceira e última tarefa
é fazer um programa em Python, ep1_parteC.py, que implemente todas as regras
do jogo da velha (incluindo a nova regra do desempate), bem como a interface que
controla o jogo com os dois usuários humanos. O seu programa deve, a cada turno,
perguntar por uma jogada para o usuário da vez, que deve digitar um dígito de 1 a
9 correspondente às casas de a a i do tabuleiro. Em seguida o seu programa deve
exibir o inteiro na base 10 representando a configuração do tabuleiro após a marcação
correspondente. Se a marcação terminar o jogo, seu programa deve também exibir o
texto VELHA, caso o jogo termine empatado, VENCEU JX caso o jogo tenha sido
vencido pelo primeiro jogador ×, e VENCEU JO caso o jogo tenha sido vencido
pelo segundo jogador ⃝. Por exemplo, uma possível execução do seu programa
poderia gerar a seguinte sequência de tabuleiros ser:
Jogada do JX: 1
Tabuleiro: 1
Jogada do JO: 5
Tabuleiro: 163
Jogada do JX: 2
Tabuleiro: 166
Jogada do JO: 3
Tabuleiro: 184
Jogada do JX: 4
Tabuleiro: 211
Jogada do JO: 7
Tabuleiro: 1669
Resultado: VENCEU JO
X X X X X X 0 X X 0 X X 0
⇒ 0 ⇒ 0 ⇒ 0 ⇒ X 0 ⇒ X 0
0
Jogada do JX: 1
Tabuleiro: 1
4
Jogada do JO: 5
Tabuleiro: 163
Jogada do JX: 3
Tabuleiro: 172
Jogada do JO: 2
Tabuleiro: 178
Jogada do JX: 8
Tabuleiro: 2365
Jogada do JO: 9
Tabuleiro: 15487
Jogada do JX: 7
Tabuleiro: 16216
Jogada do JO: 4
Tabuleiro: 16270
Jogada do JX: 6
Tabuleiro: 16513
VELHA
Casas apagadas: 5 e 1
Jogada do JO: 1
Tabuleiro: 16352
Jogada do JX: 5
Tabuleiro: 16433
VENCEU JX
Neste EP, assumimos que o jogador nunca digite uma jogada inválida
(por exemplo, uma posição já marcada ou inexistente), e portanto seu programa
não precisa considerar que uma jogada deste tipo ocorra.
Importante: Todas as saídas impressas pelos programas devem ser exatamente
iguais às mostradas nos exemplos deste enunciado.
Entrega
5
gitar o seu programa diretamente no editor disponível no e-Disciplinas, no próprio
navegador. Veja o vídeo que mostra como fazer o envio e a edição de um EP no
e-Disciplinas.
Avaliação
A nota do EP1 será calculada como a soma ponderada das notas de cada parte:
NotaEP1 = 0.15*ParteA + 0.15*ParteB + 0.7*ParteC
Observações
1. O exercício-programa é estritamente individual. Exercícios copiados (com ou
sem eventuais disfarces) receberão nota ZERO.
3. Exercícios com erros de sintaxe (ou seja, o compilador detecta erros, e portanto
não compila nem roda) recebem nota ZERO.