You are on page 1of 9

Haskassonne

Informao geral
InformaogeralsobreojogoCarcassonne,sobreoqualoHaskassonnesebaseia,podeser consultadanasregrasdojogopublicadasnaplataformadeelearningouem http://en.wikipedia.org/wiki/Carcassonne_(board_game)

Regras do Jogo
AsregrasdojogoCarcassonnepodemserencontradasnapginaoficialdomesmoem http://riograndegames.com/games.html?id=48ounovdeoem http://www.youtube.com/watch?v=AcZ6ndkdDCs.OHaskassonneumavariantesimplificada doCarcassonne,apenascomasseguintespeasdeterritrio:

Note que a peaC difere ligeiramente da existente no jogo Carcassonne (no possui escudo). Como no sero usadas peas com estradas, a pea E deve ser jogada na primeira ronda. Nestaversoalternativaexistem6peasdetipoB, 2de tipoC,18detipoE,e10detipoN(total de 36 peas de territrio). O jogo Carcassonne estar disponvel s Quartasfeiras tarde (14h30) na sala DI 1.08, para quem quiser esclarecer as regras edesenvolver estratgias de jogo.

Representao XML de um estado do jogo


OXML umformato decodificaodeinformaomuitopopularhojeemdia.Maisinformaes sobre este formato emhttp://en.wikipedia.org/wiki/XML.Nesteprojectovamosusaresteformato para representar os diferentes estados do jogo. Um estado do jogo ser representado pelo elemento b o a r d . Dentro este elemento encontramse dois elementos obrigatrios: t e r r a i n , que descreve o estado actual do terreno, e s c o r e s , que descreve as pontuaes actuais. O terreno descrito por uma sequncia de elementos t i l e , cada um tendo como atributos obrigatrios o tipo dapea (B, C,EouN),ascoordenadas ondeseencontraapea(aprimeira pea colocada no tabuleiro est na origem), e a orientao da mesma (N, S, E, W). Opcionalmente, dentro do elemento t i l e pode aparecer um elemento f o l l o w e r (tambm

conhecido por meeple) caso exista algum follower nessa pea. Nestecaso ser indicado nos atributos qual o jogador a que pertence o mesmo e qual o seu tipo (K, de knight, quando se encontra na cidade M, de monk, quando se encontra noclaustro ou F, de farmer, quando se encontra no campo). Note que para as peas que vamos usar dadoo tipo do follower nunca ambguo onde se encontra. As pontuaes so indicadas por uma sequncia de elementos s c o r e , tendo como atributos o identificador de cada jogador e arespectivapontuao.Casoo jogo ainda no tenha terminado, existir tambm um elemento n e x t que indica qual o tipo da peaqueoprximojogadorterquejogar. A seguir se apresenta um possvel exemplo de um documento XML, descrevendo um estado vlidodojogo. < ? x m l v e r s i o n = " 1 . 0 " ? > < b o a r d > < t e r r a i n > < t i l e t y p e = E x = 0 y = 0 o r i e n t a t i o n = E > < f o l l o w e r p l a y e r = 1 t y p e = K / > < / t i l e > < t i l e t y p e = N x = 1 y = 0 o r i e n t a t i o n = W / > < t i l e t y p e = B x = 0 y = 1 o r i e n t a t i o n = N > < f o l l o w e r p l a y e r = 1 t y p e = M / > < / t i l e > < t i l e t y p e = E x = 1 y = 0 o r i e n t a t i o n = W > < f o l l o w e r p l a y e r = 2 t y p e = K / > < / t i l e > < / t e r r a i n > < s c o r e s > < s c o r e p l a y e r = 1 s c o r e = 0 / > < s c o r e p l a y e r = 2 s c o r e = 0 / > < / s c o r e s > < n e x t t i l e = E / > < / b o a r d > OterrenodescritonestedocumentoXMLcorrespondeaoseguinteestadodejogo(assumindo queojogador1jogadeamareloeojogador2deverde).

Programas a implementar
Nesteprojectodevemimplementarosseguintesprogramas: 1. d r a w dadaumadescriodotabuleiroemXMLnos t d i n esteprogramadeve desenharnos t d o u t oterrenousandocaracteresASCII.Cadapeaser representadaporumamatrizde5x5caracteres,ondeseusa * paracidade, . paracampo, O paraclaustro,edigitospararepresentarosfollowersdecadajogador. Maisconcretamente,pretendeseaseguinterepresentao(ondeiodigitoque identificaojogadorquecolocouofollower)quandoapeaestorientadaparaNorte: Tipo B Empty Knight Monk Farmer

. . . . . . . O . . . O O O . . . O . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . * * * . . . * . . . . . . . . . . . . * * * * * * * * * * * * * * * * * i * * * * * * * * * * * * * * * * * . * i * . . . * . . . . . . . . . . . . * * * * *

. . . . . . . O . . . O i O . . . O . . . . . . .

. . i . . . . O . . . O O O . . . O . . . . . . .

* * * * * . * * * . . . * . . . . . . . . . i . . * * * * *

* * * * . * * * . . * * . . . * . . . .

* i * * . * * * . . * * . . . * . . . .

* * * * . * * * . . * * . i . * . . . .

Nocasodotabuleiroacima,oprogramadeverimprimiroseguinteresultado

* . . . . . . . . * * . . . . * * . . . . . . * * * * . . . * 2 * . . . . * 1 * * * * . . * * . . . . . . * * * * * * . * . . . . . . . . * * * * * * . . . . . . . O . . . O 1 O . . . O . . . . . . .
2. p l a y dadaumadescriodotabuleiroemXMLnos t d i n esteprogramadeve produzirumajogadaparaapeaindicadanatagn e x t .Nestecasoooutputdeveser apenasumatagdotipot i l e ,porexemplo < t i l e t y p e = E x = 1 y = 1 o r i e n t a t i o n = N / > ou < t i l e t y p e = E x = 0 y = 2 o r i e n t a t i o n = S > < f o l l o w e r p l a y e r = 1 t y p e = F / > < / t i l e > Aquipodemimplementarvriasversesdoprogramaqueseguemestratgias diferentes.Oaspectomaisimportanteateremconsideraoacorrecoda estratgia,ousejagarantirqueajogadaproduzidacolocaapeanumaposio adjacenteaumajexistentenotabuleiro(ounaorigemcasosejaaprimeirajogada),e quenosocolocadosmaisdoque7meeplesdecadajogador,nememcidadesou camposjcontroladosporoutrosmeeples. 3. n e x t dadaumadescriodotabuleiroemXMLnos t d i n esteprogramadeve actualizaraspontuaes,retirarosmeeplesquepontuame,casoojogoaindano tenhaterminado,sortearumapeaparacolocarnoelementon e x t .Noteque,casoj tenhamsidojogadastodasaspeas,ojogotermina,enodevesergeradaoelemento n e x t edevemserusadasasregrasdefimdejogoparacalcularaspontuaes(e

retiradostodososfollowers).Esteprogramadevedevolvernos t d o u t umanova representaodotabuleiroemXML. Osprogramasd r a w ,p l a y en e x t deveroserimplementadosemHaskell.Acorreodestes seravaliadaautomaticamenteusandooMooshak.Aqualidadedaimplementao (nomeadamentedasestratgiasimplementadasnoprogramap l a y )seravaliadaatravsda leituradorelatrioenadiscussooral.

Torneio final
Nofinaldosemestreserorganizadoumtorneiovirtualparadeterminarqualamelhor implementaodoprogramap l a y .Oresultadodestetorneionosertidoemcontana avaliao,masogrupovencedor(excluindoosgruposcomalunosemregimedemelhoriade nota)recebercomoprmioojogoCarcassonne.Cadamatchdotorneioconsistirnumasrie dejogosentre2grupos,vencendoogrupoqueganharmaisjogos.Seoprogramap l a y deum dosgruposgerarumajogadainvlidaperdeimediatamenteojogo. Duranteosemestreserdisponibilizadoumprogramaquepermiteexecutarummatchdadas duasimplementaesdoprogramap l a y .Esseprogramapodeserusadopararealizartreinos paraoreferidotorneioeaferiraqualidadedaestratgiaimplementada.

Relatrio e documentao
OprojectodeveserdocumentadonumrelatrioescritoemLaTeX.Nesserelatriodevem descreveraestratgiaqueseguiramparaimplementarcadaumdosprogramas,destacandoos tiposdedadosusadoseasfunesprincipaisimplementadas.Orelatriodevesersucinto, massuficientementedetalhadoparaque,apenasrecorrendosualeitura,odocenteseja capazdeavaliaraqualidadedaimplementao.Adiscussooraltemapenasporobjectivo esclarecerdvidassobreaimplementaoeaferiroconhecimentoedestrezadoselementos dogrupocomasferramentasutilizadasnodesenvolvimentodoprojecto. TodoocdigoHaskelldeveserdocumentadousandoHaddock (http://www.haskell.org/haddock/).Aqualidadeeextensodestadocumentaosertambm avaliada.

Testes
Osprogramasd r a w ,p l a y en e x t devemsertestadosextensivamentedaseguinteforma: UsandoQuickCheck(http://hackage.haskell.org/package/QuickCheck)paraespecificar

propriedadesetestesunitriossobreomaiornmeropossveldefunes desenvolvidasemHaskell. Usandotestesunitriosparaosdiferentesprogramas:ocomportamentoesperadopara cadaumdelesdeveserverificadoexecutandooscomumconjuntoalargadode entradas(documentosXMLdescrevendopossveisestadosdojogo)paraasquaiso resultadoconhecidoecontraoqualsercomparado.Estestestesdevem,namedida dopossvel,serautomatizadosrecorrendoascriptsdesenvolvidasusandoalinhade comando. Aqualidadeeextensodostestesimplementadosserumadascomponentessujeitaa avaliao.

SVN e Makefile
Todoocdigofonte(incluindodorelatrio)doprojectodeveserdesenvolvidocomrecursoao servidorSVNdisponibilizadoaogrupo.Devemfazercommitsfrequentementeaolongodo semestre.Oslogsdoservidorseroavaliadosnofinaldosemestreparaverificaracorrecta(e frequente)utilizaodomesmoporambososelementosdogrupo. DevemtambmdefinirumaM a k e f i l e com,pelomenos,osseguintestargets: Compilarseparadamentetodososprogramassolicitadosnoprojecto. GeraropdfdorelatrioapartirdasrespectivasfontesemLaTeX. GerarHTMLparaocdigodocumentadocomHaddock. Verificarostestesqueforamimplementados. Executartodosostargetsanteriores. Limpartodososartefactosgeradospelostargetsanteriores.

Sugestes para a implementao


PackageHaskellparaprocessamentodeXML:http://hackage.haskell.org/package/xml. Usandoestepackageoprogramad r a w podeserestruturadodaseguinteforma,onde ficaafaltaradefiniodafunop r o c e s s a :

i m p o r t T e x t . X M L . L i g h t m a i n = d o e n t r a d a < g e t C o n t e n t s l e t J u s t e l e m = p a r s e X M L D o c e n t r a d a p u t S t r L n $ p r o c e s s a e l e m p r o c e s s a : : E l e m e n t > S t r i n g

Oprogramap l a y podeserestruturadodaseguinteforma,ondeficaafaltaradefinio dafunop r o c e s s a : i m p o r t T e x t . X M L . L i g h t m a i n = d o e n t r a d a < g e t C o n t e n t s l e t J u s t e l e m = p a r s e X M L D o c e n t r a d a p u t S t r L n $ s h o w E l e m e n t ( p r o c e s s a e l e m ) p r o c e s s a : : E l e m e n t > E l e m e n t Oprograman e x t podeserestruturadodaseguinteforma,ondeficaafaltaradefinio dafunop r o c e s s a ,querecebecomoprimeiroargumentouminteirogerado aleatoriamente: i m p o r t T e x t . X M L . L i g h t i m p o r t S y s t e m . R a n d o m m a i n = d o e n t r a d a < g e t C o n t e n t s l e t J u s t e l e m = p a r s e X M L D o c e n t r a d a s e e d < r a n d o m I O p u t S t r L n $ s h o w E l e m e n t ( p r o c e s s a s e e d e l e m ) p r o c e s s a : : I n t > E l e m e n t > E l e m e n t Paraverificarseumficheirot a b u l e i r o . x m l ,contendoumadescriodeumestado dojogo,estcorrectamentedefinidopodemusarocomandox m l l i n t d t d v a l i d h a s k a s s o n n e . d t d t a b u l e i r o . x m l ,ondeoficheiroh a s k a s s o n n e . d t d contmo seguinteDTDcomasregrasdevalidao:

< ! E L E M E N T b o a r d ( t e r r a i n , s c o r e s , n e x t ? ) > < ! E L E M E N T t e r r a i n ( t i l e * ) > < ! E L E M E N T t i l e ( f o l l o w e r ? ) > < ! A T T L I S T t i l e t y p e ( B | C | E | N ) # R E Q U I R E D x C D A T A # R E Q U I R E D y C D A T A # R E Q U I R E D o r i e n t a t i o n ( N | S | E | W ) # R E Q U I R E D > < ! E L E M E N T f o l l o w e r E M P T Y > < ! A T T L I S T f o l l o w e r p l a y e r C D A T A # R E Q U I R E D t y p e ( M | K | F ) # R E Q U I R E D >

< ! E L E M E N T s c o r e s ( s c o r e + ) > < ! E L E M E N T s c o r e E M P T Y > < ! A T T L I S T s c o r e p l a y e r C D A T A # R E Q U I R E D s c o r e C D A T A # R E Q U I R E D > < ! E L E M E N T n e x t E M P T Y > < ! A T T L I S T n e x t t i l e ( B | C | E | N ) # R E Q U I R E D > RecomendasequeestruturemorepositrioSVNdaseguinteforma: R E A D M E (ficheirocomaidentificaodogrupo) M a k e f i l e (ficheirocomamakefiledoprojecto) s r c (directoriacomocdigofonte) b i n (directoriaparaondesocompiladososexecutveis) r e p o r t (directoriaondeseencontraorelatrioemLaTeX) d o c (directoriaparaondegeradaadocumentaoHaddock) t e s t (directoriaquecontmosficheirosXMLusandosparatestaros programas)

Avaliao
Oprojectodeveserrealizadoemgruposde2alunos,eseravaliadosegundoosseguintes parmetros: Programasd r a w ,p l a y en e x t :qualidadedaimplementao(avaliaopelaleitura 30% dorelatrioepeladiscusso) Programasd r a w ,p l a y en e x t :correodaimplementao(avaliao automtica) Desenvolvimentodetestesparaosprogramasd r a w ,p l a y en e x t (usando QuickCheckelinhadecomando) Documentaodocdigodosprogramasd r a w ,p l a y en e x t (usandoHaddock) Utilizaodosistemadecontrolodeverses Definiodamakefile Relatrio(contedo) Relatrio(execuoemLaTeX) 25% 10% 5% 5% 5% 10% 10%

Aavaliaodos2elementosdogrupopodeserdiferente,dependendodarespectivaprestao.

Qualquercpiaquesejadetectadaleveranulaodosprojectosdetodososgrupos envolvidos,comaconsequentereprovaounidadecurricular.Dependendodagravidadeda mesma,podetambmserlevantadoumprocessodisciplinaraosenvolvidos.

You might also like