Django Wars [Parte 27]: É Luta, briga, fight, x1 no rio, cacete comendo no centro…

O Django Wars foi idealizado e desenvolvido no Django 1.4. Algumas funcionalidades aqui descritas podem não funcionar ou funcionar de forma diferente em outras versões do Django

Agora é a hora boa, a hora que nosso site vai separar os meninos dos homens.
Os homens estão no trabalho e os meninos estão em casa atacando os coitados que estão ocupados…

Primeiro, a url que leva ao coro comer no centro.

Agora que vem a parte boa, a view que calcula o fight.
Vou colocá-la no arquivo views/luta.py:

É grande, mas é bem fácil de compreender:
1 – a gente verifica se está sendo passado um jogador válido
2 – verifica se o alvo tem o mínimo de experiência requisitada. Assim, se algum jogador tentar criar uma URL na mão, não vai atacar um jogador mais fraco.
3 – verifica se tem raiva o suficiente para atacar
4 – verifica se nem o alvo e nem o jogador estão mortos. Morto não pode atacar e nem ser atacado, a não ser que sejam zumbis ou vampiros ou mumias.
5 – salva quanto de hp cada um tem antes de começar a luta. Fazemos isso para saber quem perdeu mais hp no final do combate.
6 – pegamos o poder da arma e da armadura do jogador e do alvo.
7 – pequeno loop da luta. as lutas duram 5 turnos
8 – verifica quem venceu. quem morrer, perde. quem perder mais hp, perde
9 – calcula a quantidade de dinheiro que o vencedor rouba do perdedor
10 – tira um ponto de raiva do atacante
11 – verifica se alguem deu level_up
12 – salva tudo
13 – exibe template.

O loop da luta é bem mobral.
Randomiza um número entre um terço do atributo ataque e o ataque inteiro e multiplica esse valor na arma.
Faz o mesmo para a defesa e multiplica o valor na armadura.
A diferença entre o resultado do ataque e o resultado da defesa é o dano que o atacante causa no defensor.
Sussa demais, né?
Eu poderia tentar algo mais parecido com sistemas de RPG de mesa, mas queremos um jogo simples.

Para finalizar, mostramos o template.
atacar.html

O código fonte de toda essa gambiarra desse maravilhoso jogo encontra-se em:
https://github.com/frenetic/django-wars

5 thoughts on “Django Wars [Parte 27]: É Luta, briga, fight, x1 no rio, cacete comendo no centro…

    1. na verdade, tá quase certo

      na linha 109 era pra ser
      alvo_arma = alvo.arma_ativa.poder

      mas ao invés de escrever “alvo_arma” eu só escrevi “alvo”.
      Que burro, dá zero pra mim…

      Vou corrigir aqui no post e depois coloco no github

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *