Jogo do Galo Past Paper PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document is a past paper for a programming exam focused on the game Tic-Tac-Toe. The exam includes multiple questions on writing Java functions for a board game designed to calculate wins. It includes detailed specifications for each problem.
Full Transcript
# Jogo do Galo O tema deste teste é o Jogo do Galo, à semelhança dos exercícios. | | | | |---|---|---| | O | X | | | X | O | X | | | | O | Todas as questões serão para escrever funções/procedimentos para completar a seguinte classe que representa o estado do jogo. ```java class TicT...
# Jogo do Galo O tema deste teste é o Jogo do Galo, à semelhança dos exercícios. | | | | |---|---|---| | O | X | | | X | O | X | | | | O | Todas as questões serão para escrever funções/procedimentos para completar a seguinte classe que representa o estado do jogo. ```java class TicTacToe { private static final int COLS = 3; private static final int EMPTY = 0; private static final int X = 1; private static final int O = 2; private int[] grid; private boolean xTurn; ``` Considere também que está disponível o seguinte tipo de valor composto. ```java record Position(int line, int column) { } ``` ## Questão 1 (1.5) Escreva uma função para devolver todas a posições do tabuleiro que já foram jogadas por um dado jogador (parâmetro inteiro, a validar {1, 2}). ## Questão 2 (0.75) Escreva uma função para determinar se a linha com determinado índice (parâmetro inteiro, a validar [0,2]) corresponde a uma vitória: * em caso da linha não ter as peças todas iguais, é devolvido zero; * no caso da linha ter as peças todas do mesmo jogador, é devolvido o código desse jogador (1 ou 2) ## Questão 3 (0.75) Escreva uma função para determinar se a coluna com determinado índice (parâmetro [0,2]) corresponde a uma vitória, de forma análoga à questão anterior. ## Questão 4 (1.0) Assumindo que a vitória se consegue apenas com uma linha ou uma coluna (sem diagonais), escreva uma função que devolve o jogador vencedor: * em caso de não haver vencedor é devolvido zero * no caso de vitória, é devolvido o código do vencedor (1 ou 2) ## Questão 5 (1.0) Escreva uma função booleana para saber se o jogo já terminou (i.e. já houve vitória ou já não há posições livres). ## Questão 6 (1.5) Escreva um procedimento para gravar o estado do jogo para um ficheiro (nome dado em parâmetro), de acordo com o seguinte formato: * símbolos: X, O, * primeira linha: jogador que tem a vez * restantes linhas: tabuleiro com posições separadas por um espaço ``` 0 OX XOX ``` ## Questão 7 (1.5) Implemente a classe Stats para gerir estatísticas de jogos entre dois jogadores (X e O). Os objetos são responsáveis por: * registar o número de vitórias de cada jogador (uma a uma); * saber o total de jogos jogados; * determinar as percentagens de vitória de cada jogador.