Professional Documents
Culture Documents
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.
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.
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.
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 *
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.