You are on page 1of 5

Proposta de Implementao do Software-Jogo Batalha Naval com Jogador Mquina

tico Mismana, Thairone Loureiro Universidade Federal da Bahia (UFBA) Rua Baro do Jeremoabo, s/n Campus Universitrio de Ondina CEP: 40.170-115 Salvador Ba Brazil
aticomismana7@gmail.com, thairone@bol.com.br

Abstract. This article aims to describe the topic and the proposed solution for implementing software-game Battleship with machine player, which is a laboratory activity in curricular component: Object Oriented Programming. Resumo. O presente artigo objetiva descrever o tema e a soluo proposta para implementao do software-jogo Batalha Naval com jogador mquina, que a atividade semestral no componente curricular: Programao Orientada a Objetos.

1. Jogo Batalha Naval

Figura 1. Batalha Naval

Batalha naval um jogo de tabuleiro de dois jogadores, no qual os jogadores tm de adivinhar em que quadrados esto os navios do oponente. Embora o primeiro jogo em tabuleiro comercializado e publicado pela Milton Bradley Company em 1931, o jogo foi originalmente jogado com lpis e papel. Seu objetivo derrubar os barcos do oponente adversrio, ganha quem derrubar todos os navios adversrios primeiro. O jogo original jogado em duas grades ou matrizes para cada jogador uma que representa a disposio dos barcos do jogador, e outra que representa a do

oponente. As matrizes so tipicamente quadradas, estando identificadas na horizontal por nmeros e na vertical por letras. Em cada matriz o jogador coloca os seus navios e registra os tiros do oponente. Antes do incio do jogo, cada jogador coloca os seus navios nos quadros, alinhados horizontalmente ou verticalmente. O nmero de navios permitidos igual para ambos jogadores e os navios no podem se sobrepor. Aps os navios terem sido posicionados o jogo continua numa srie de turnos, em cada turno um jogador diz um quadrado na matriz do oponente, se houver um navio nesse quadrado, colocada uma marca vermelha, seno houver colocada uma marca branca. Os tipos de navios so: porta-avies (5 quadrados adjacentes), os submarinos (1 quadrado apenas), barcos de dois, trs e quatro quadros.

2. Software-Jogo Batalha Naval j desenvolvido


O ponto de partido o software-jogo Batalha Naval desenvolvido na atividade anterior, de forma a acrescentar as funcionalidades de inteligncia artificial para que 1 nico jogador possa jogar, e o computador se comporte como o outro jogador. De for a recapitular citamos as especificaes do jogo: N de jogadores: 2 (1 humano e 1 mquina) N de matrizes (tabuleiros) por jogador: 1 Dimenso da matriz: 10x10 Tipo de navios: porta-avies (5 quadrados adjacentes), fragata (4 quadrados adjacentes), barcos de dois canos (2 quadrados), barco de trs canos (3 quadrados), submarinos (1 quadrado apenas). N de navios por jogador: 1 porta-avies, 1 fragata, 1 barco de trs canos, 1 barco de dois canos, 3 submarinos. 2.1 Roteiro Etapa 1: Quando o jogo for iniciado, a aplicao criar as duas matrizes (ou dois tabuleiros) atribuindo cada uma a um respectivo jogador. Etapa 2: Ser mostrado na tela aos jogadores a opo para escolherem as posies de cada embarcao. Sendo um jogador por vez. Esses dados de entrada serviro para a aplicao alimentar "os vetores internos, onde sero guardados a coordenada ou localizao dos barcos nos tabuleiros". Etapa 3:

Ser iniciada a srie de turnos. A aplicao mostrar na tela os dois tabuleiros, e o jogador da vez dever selecionar o quadrado que deseja atirar no tabuleiro do oponente. Etapa 4: A aplicao verificar se algum barco foi atingido, se for atingido totalmente ser mostrado na tela o smbolo "#", se for atingido parcialmente *, se no for atingido, ou seja, tipo na gua ser exibido "+". Para cada parte atingida da embarcao realizado um decremento do atributo Integridade (por meio do mtodo DecrementarIntegridade) que inicialmente assume o mesmo valor do atributo Tamanho. Quando todas as partes de uma embarcao for atingida, conseqentemente o atributo Integridade ter assumido valor igual a 0 (zero) e as casas onde se localiza a embarcao assumem o smbolo "#" e ser exibida a informao de que a embarcao foi afundada. A Classe Jogador, possui um atributo IntegridadeTotal que inicialmente a soma dos atributos Integridade de todas as embarcaes. Cada vez que o mtodo DecrementarIntegridade de uma embarcao for chamado, ele ir tambm chamar o mtodo DecrementarIntegridadeTotal da classe jogador. E quando o atributo IntegridadeTotal assumir valor igual a 0 (zero), tem-se um oponente como ganhador.

3. Proposta de Implementao do Software Jogador


Conforme pr-estabelecido, o software-jogo ser desenvolvido em JAVA para plataforma desktop, sendo completamente orientado a objetos. Para isso adicionamos ao diagrama de classes do software-jogo as classes dos objetos que tornaro possvel a interao do jogador humano com a mquina. So eles: 'JogadorPC' e 'InteligenciaArtificial'.

3.1. Diagrama de Classes

<<cl asse pr i nci pal >>

JogoBatalhaNaval
st at us_j ogo:i nt +j ogador 1:Jogador +j ogador :Jogador !" +#encedor :Jogador +r egr as:$ egr a +t ur no:i nt% & +' t d_j ogador es:i nt% & +( ai n) * +cl s) * ++t ual i ,a-el a_. ase ) * 1 1

Regra
+;er i . i car / m pedi m ent o+l ocacao) t abu: -abul ei r o, em bar c: 5m bar cacao, l i n: i nt , col : i nt * +;er i . i car -i r o) t abul ei r o_al #o: -abul ei r o, l i n: i nt , col : i nt * :i nt +!r ocessar -i r o) j ogador _al #o: Jogador , l i n: i nt , col : i nt * :i nt +" hecar ;encedor ) j ogador 1: Jogador , j ogador : Jogador * :Jogador +" asas;a,i as5s<) t abu: -abul ei r o, em bar c: 5m bar cacao, l i n: i nt , col : i nt * :i nt +" asas;a,i as1 i r ) t abu : -abul ei r o, em bar c: em bar cacao, l i n: i nt , col : i nt * :i nt +" asas;a,i as+l t o) t abu: -abul ei r o, em bar c: 5m bar cacao, l i n: i nt , col : i nt * :i nt +" asas;a,i as=ai >o) t abu: -abul ei r o, em bar c: 5m bar cacao, l i n: i nt , col : i nt * :i nt

Casa
st at us:i nt% & +em bar cacao:5m bar cacao +( udar 2i t uacao) t i po: i nt %1* +4 et 2t at us) * 1&&

Tabuleiro
+casas:" asa6 7 6 7 +por t a_a#i ao:5m bar cacao +. r agat a:5m bar cacao +na#i o1:5m bar cacao 1 +na#i o :5m bar cacao +subm ar i no1:5m bar cacao +subm ar i no :5m bar cacao +subm ar i no8:5m bar cacao +-abul ei r o) * +/ m pr i mi r -abul ei r o) * 1

Jogador
nom e:st r i ng +t abul ei r o:-abul ei r o / nt egr i dade-ot al :i nt% 10 r egr as:$ egr a +1 ecr em ent ar / nt egr i dade-ot al ) * +2et 3 om e) nom e_no#o: st r i ng* +4 et 3 om e) * +4 et / nt egr i dade-ot al ) * ++l ocar 5m bar cacao) em bar c: 5m bar cacao* +dar -i r o) j ogador _al #o: Jogador * +cl s) * 1

Embarcacao
nom e:2t r i ng t am anho:i nt par t es:" oor denadas6 7 i nt egr i dade:i nt . l ag:2t r i ng +5m bar cacao) nom e1: st r i ng, t am : i nt , ne9 _. l ag: st r i ng* +2et " oor denada) l i nha: i nt , col una: i nt * +4 et / nt egr i dade) * +1 ecr em ent ar / nt egr i dade) *

7 1

Coordenadas
1. . ? l i nha col una +2et :i nha) * +2e" ol una) *

JogadorPC
/ +:/ nt el i genci a+r t i . i ci al ++l ocar 5m bar cacao ) em bar c: 5m bar cacao* +dar -i r o ) j ogador _al #o: Jogador * 1

InteligenciaArtificial
r egr as:$ egr a t abu:-abul ei r o >@:" oor denadas sor t e:$ andom 1 <uadr ant e:i nt% & +' uadr ant eA sado:i nt 6 7 >:i nt @:i nt au>:i nt +" oor d-i r os:;ect or +/ nt el i genci a+r t i . i ci al ) t abu: -abul ei r o* 4 et " oor denadas) t am : i nt , l i nha1: i nt , l i nha : i nt , col una1: i nt , col una * +4 et " oor denadas-i r o) j ogador _al #o: Jogador *

4. Roteiro do Jogador Mquina


Como possvel ver no diagrama, a classe 'JogadorPC' herda da classe 'Jogador', porm tem mtodos prprios que so executados, dependendo da condio de haverem dois jogadores humanos ou apenas um jogador humano. Funciona da seguinte forma: Sempre os mtodos da classe filha so chamados. Sendo que quando informado pelo usurio que haver apenas um jogador humano, a aplicao chama os mtodos 'AlocarEmbarcacao' e 'darTiro', diferente de quando so informados que dois jogadores humanos iro disputar o jogo, nesse caso so chamados os mtodos 'AlocarEmbarcacao2' e 'darTiro2' da classe filha que invocam os mtodos 'AlocarEmbarcacao' e 'darTiro' da classe pai.

Na classe 'InteligenciaArtificial' esto definidas as estratgias para realizar os mtodos 'AlocarEmbarcacao' e 'darTiro' quando houver apenas um jogador humano. Para situao de 'AlocarEmbracacao' funciona da seguinte forma: Quando nenhuma parte de embarcao foi alocada, o programa divide o tabuleiro em 4 quadrantes e sorteia um dos quatro para iniciar a alocao. Como temos 4 embarcao com tamanhos maiores de 1, distribui-se uma embarcao (com tamanho maior que 1) em cada quadrante, de modo a ter um porta-avies em um quadrante, uma fragata em outro quadrante, um barco de 3 partes em outro e por fim o outro barco de 2 partes no ltimo quadrante. Feito a distribuio das 4 embarcaes maiores, so sorteados as coordenadas dos 3 submarinos que restam. Enquanto que para 'darTiro', sorteador um par ordenado distinto dos que j foram sorteados e remetido aos mtodos que tratam as jogadas similares as feitas pelo jogador humano.

5. Concluso As definies desse projeto de software so fruto de intensa anlise (domnio do problema), representando a fase final de implementao que contemplou considerar caractersticas novas que surgiram, principalmente nos mdulos de comunicao entre os objetos (atributos e mtodos) das classes, ao longo do processo.

6. Referencias
Batalha Naval (jogo), http://pt.wikipedia.org/wiki/Batalha_naval_(jogo) , Abril/2013.

You might also like