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