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
Criamos a página que lista os stats do jogador.
Só nos resta agora distribuir os pontos e partir para o abraço.
Eu continuo escutando as músicas do Edson Gomes enquanto programo.
Muito bom mesmo!
Primeiro, vamos adicionar uma entrada no urls.py para a url que adiciona stats:
url(r'^stats/adicionar/(\w+)$', djangowars.views.player.adicionar),
Para fechar, vamos fazer a view adicionar().
O que essa view precisa fazer é simples: verificar qual o atributo que o usuário quer adicionar, ver se ele ainda tem pontos para gastar, fazer o incremento e ser feliz.
Difícil demais, ainda mais usando uma ferramenta feito o Django que atrapalha tudo.
Só que não.
# view que adiciona pontos aos stats do jogador
def adicionar(request, atributo):
if not request.user.is_authenticated():
return redirect('pagina_de_login')
#pega o jogador logado
player = request.user.get_profile()
#verifica se o jogador ainda tem pontos para gastar
if player.pontos > 0:
#verifica o tipo do atributo para fazer a alteracao
if atributo.lower() == "ataque":
player.ataque = player.ataque + 1
player.pontos = player.pontos - 1
elif atributo.lower() == "defesa":
player.defesa = player.defesa + 1
player.pontos = player.pontos - 1
elif atributo.lower() == "vida":
player.vida = player.vida + 1
player.pontos = player.pontos - 1
elif atributo.lower() == "energia":
player.energia = player.energia + 1
player.pontos = player.pontos - 1
elif atributo.lower() == "raiva":
player.raiva = player.raiva + 1
player.pontos = player.pontos - 1
player.save()
#volta para a pagina de stats
return redirect(stats)
Note que nesta view eu faço uma comparação com o tipo de atributo, mas antes de comparar eu converto a variável passada para letras minusculas.
Na url que o usuário passa pode ser que ele decida “escrever” com letras maiusculas a variável que a gente está esperando.
Assim, fugimos do erro.
O projeto tá quase lá!
O código fonte pode ser visto aqui:
https://github.com/frenetic/django-wars