Turno

Turno

por André Meneghelli -
Número de respostas: 4

Bom, depois de ler a respeito, não me contentar e instalar o Pokemon Red no meu celular percebi que alterar a ordem do ataque não é suficiente já que o Quick Attack que gostaríamos de implementar sofre o desempate por velocidade apenas quando ambos pokemons a utilizam.

Então fiz uma classe pra controle do turno que gerencia a ordem de duas habilidades usadas pelos dois pokemons do duelo.

Isso fez com que a ordem de escolha dos ataques seja irrelevante o que me fez alterar um pouco a dinâmica do meu programa (sem a marcação de quem é o turno, já que isso não faz sentido):

26 - Rattata
31 - Charmander

Ataques de Rattata
1 - Tackle (20/20)
2 - Quick Attack (40/40)
Selecione um ataque para Rattata: 1

Ataques de Charmander
1 - SCRATCH (20/20)
2 - GROWL (40/40)
Selecione um ataque para Charmander: 1

Charmander used SCRATCH!
Critical hit!
Rattata fainted!

Batalha encerrada!

Posso manter desta forma? Se não, como fazer pra resolver o problema da prioridade de ataque?

Em resposta à André Meneghelli

Re: Turno

por Lucas Hiroshi Hayashida -

Acho que pra resolver isso, em cada ataque devemos definir o nivel de prioridade dele, assim adicionando mais um campo a estrutura do ataque.

Níveis de priridade: 0 o padrão, +x para prioridade positiva e -x para prioridades negativas (sendo x um numero inteiro, normalmente 1, mas alguns poucos ataques possúem prioridades maiores, como o caso de Extremespeed que tem prioridade +2, mas ele não pertence a gen I)

Por exemplo: Quick Attack tem prioridade +1, Tackle tem prioridade 0 e Bide tem prioridade -1

Em resposta à André Meneghelli

Re: Turno

por Rafael Reggiani Manzo -

A modelagem real é bem parecida com o que o Lucas mencionou: http://bulbapedia.bulbagarden.net/wiki/Priority#Generation_I

Mas no enunciado definimos que o ataque acontece no turno do pokémon. Ou seja, ele irá atacar e dar dano independente do ataque escolhido pelo oponente. Na verdade ele nem escolheu o ataque ainda. Note que aqui mudamos basstante a mecânica do jogo original.

Eu gostei da sua forma de pensar sobre isso André, mas como pretendemos fazer batalhas entre os diferentes programas entregues ao fim da etapa 3, é importante todos seguirmos esses detalhes. Então, apesar da sua solução ser legal e melhor, para o bem geralescolhemos essa mecânica mais simples e é importante você seguir ela também sorriso

Em resposta à Rafael Reggiani Manzo

Re: Turno

por André Meneghelli -

Hum, a implementação desta mecânica não foi nada difícil.

Sinceramente eu não vejo grande dificuldade em implementar a mecânica completa - ficou exatamente como o Lucas falou -, incluindo variação de status, uso de ítens ataques múltiplos e etc.

É meio estranho pensar que o pokemon vai enviar o dano ao outro sem nenhuma validação - seria fácil de roubar.

Imaginava que a segunda etapa seria a implementação da interface de comunicação e de um servidor de batalhas. Possibilitando assim que mecânicas distintas entre implementações diferentes possam ser testadas com o seu servidor e o do oponente.

Em resposta à André Meneghelli

Re: Turno

por Rafael Reggiani Manzo -

Não tenho muito mais para lhe dizer além do mesmo que respondi no outro tópico:

"Eu entendo que isso pode ser chato, mas infelizmente se cada um implementar as mecânicas como quiser ignorando o enunciado, além de ficar impossível de corrigir os trabalho de uma turma com mais de 50 alunos, fica impossível realizar batalhas entre os programas já que cada um vai estar em uma regra diferente."