Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Professores: Gustavo Soares (turma 1) Kyller Gorgônio (turma 2) Livia Campos (turma 3) Raquel Lopes (turma 4) Disciplina: Laboratório de Programação 2 Período: 2014.1 Laboratório 03 Neste laboratório, exploramos mais questões em Java envolvendo o uso de arrays e modularização. Instruções Este laboratório terá duração de 2 aulas e deve ser entregue de acordo com as datas e instruções abaixo: ● Data de entrega: 27/05/2014, até 23:59h; ● Será tolerado o atraso de no máximo 24hs para a entrega do laboratório. Laboratórios entregues com atraso terão uma penalização de 50% na nota; ● Crie o projeto lab03 no eclipse e programe todos os exercícios dentro do pacote lp2.lab03; ● As submissões serão feitas via moodle (veja instruções no site da disciplina: https://sites.google.com/site/prog2ufcg/lp2/programa-20141) ● Certifique-se de que seus programas não têm erros de compilação; ● Antes da definição de cada classe escreva o seu nome em comentário /* Aluno: <seu nome> */ Fixando conceitos Depois da aula teórica, você já sabe declarar, inicializar e usar arrays de uma dimensão (se você não lembra, volte lá no material.). O que você precisa saber também é como criar arrays de arrays. Esses arrays multidimensionais são muito parecidos com listas de listas em Python. A diferença principal entre os dois é que arrays em java têm tamanho fixo. De resto, um array de arrays é usado da seguinte forma: Entendendo o problema Os alunos da disciplina LP2 normalmente ficam na Universidade no horário do almoço para aproveitar melhor o tempo entre as aulas da manhã e da tarde e estudar para as disciplinas. Entretanto, nesse início de semestre eles ainda não possuem muitas provas e projetos e com isso estão com tempo ocioso. Eles, então, pensaram em aproveitar seus conhecimentos em Java para implementar um programa de jogo da velha para que possam se divertir e ajudar o tempo a passar mais rápido nesses dias de “folga”. Seu sistema deve garantir os seguintes requisitos: ● Os jogadores não poderão jogar em posições que já foram “ocupadas em jogadas anteriores”. ● O mesmo jogador não pode jogar duas vezes seguidas. ● Se um dos jogadores ganhar a partida ela deve ser finalizada, mesmo que o tabuleiro ainda não se encontre completamente preenchido. ● Se ao “ocupar” todas as casas do tabuleiro, nenhum dos jogadores ganhar o jogo deve ser decretado como empate. ● O tabuleiro deve ser exibido no início do jogo para que se tenha certeza que ele está vazio. ● A cada jogada o tabuleiro deve ser exibido para mostrar quais posições encontram-se ocupadas e por qual dos jogadores. Jogo da velha Um dos alunos da disciplina LP2 fez uma versão inicial do jogo e enviou para que outros alunos pudessem colaborar na implementação. Essa primeira versão do código encontra-se disponível aqui1 . O autor dessa versão inicial do jogo enviou seu código para os outros alunos seguido da mensagem abaixo: “Galera, segue o jogo da velha que eu implementei. Coloquei muito código repetido só pra funcionar e ficou meio desorganizado. Seria bom arrumar o código, pois se os professores olharem do jeito que tá vão querer arrancar nosso couro!!!” Todos os alunos começaram então uma maratona para ajudar o colega a organizar o código da melhor maneira possível. Para tanto é importante que vários métodos sejam implementados no sentido de agrupar as funcionalidades da aplicação e com isso deixá-la mais organizada, fácil de entender e de modificar no futuro. Passo1: Selecione o pacote lp2.lab03 no Eclipse e importe dentro desse pacote o código que foi disponibilizado para vocês (File-> Import->File System). No botão “Browse...” você deve selecionar o diretório onde está localizada classe JogoDaVelha.java que você baixou e, em seguida, selecionar essa classe. Faça uma cópia da classe JogoDaVelha.java, chamando-a de JogoDaVelhaModularizado.java. Nesse novo arquivo vocês devem organizar o código, que está todo concentrado no método main, em diversos métodos. Lembrem-se, ao dividir o código em métodos temos que pensar em como as informações serão armazenadas e como esses métodos podem se relacionar para aproveitar funcionalidades já feitas pelos outros. Sugestão! Pense nas ações que devem ser realizadas para a implementação do jogo, como: inicialização do jogo, impressão do tabuleiro, verificação do vencedor, etc. Passo2: Os alunos de LP2 resolveram o problema da modularização muito rápido e pensaram em implementar mais funcionalidades para deixar o jogo ainda mais interessante. Nesse sentido, 1 http://www2.lsd.ufcg.edu.br/~programacao2/labs-20141/JogoDaVelha.java modifique a classe JogoDaVelhaModularizado.java para que vários jogos sejam realizados em sequência. Ao término de cada partida deve-se perguntar se uma nova partida será iniciada ou se o sistema deve ser finalizado. Para exercitar mais 1. Os alunos se envolveram tanto com o jogo da velha que pensaram em fazer um campeonato entre eles. Crie uma nova classe JogoDaVelhaCampeonato, e modifique o código da classe JogoDaVelhaModularizado para que ele armazene o nome e o número de vitórias de 4 usuários. No início da partida deve-se identificar quais jogadores participarão da partida e sempre o vencedor aumentará o número de vitórias que possui. Quando não se desejar jogar mais partidas, antes de ser finalizado, o sistema deve apresentar um ranking com os jogadores ordenados de maneira decrescente pela quantidade de vitórias.