Django Wars [Parte 25]: Distribuindo ponto de stats

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

Deixe um comentário

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