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
Quando o jogador compra uma arma ou armadura, ele, geralmente, gostaria de ter uma opção para equipá-los.
Se o jogador possui mais de um item, ele gostaria de saber quais itens ele possui afim de escolher um.
Assim, precisamos criar o inventário do usuário, onde listaremos os itens que ele possui, além de dar opções de equipar itens.
Como estamos trabalhando por partes, vamos dividir o trabalho do inventário.
Neste momento, queremos fazer apenas uma listagem dos itens que o usuário possui.
Primeiro, precisamos criar a url que irá responder pelas requisições do inventário no urls.py.
url(r'^inventario/$', djangowars.views.inventario),
Como podemos perceber pelo padrão que foi criado, a view que irá responder a esta requisição se chamará inventario.
Logo, precisamos criá-la no arquivo views.py.
def inventario(request): if not request.user.is_authenticated(): return redirect(logar) return render_to_response("inventario.html", {"player": request.user.get_profile()})
Agora você deve estar espantado: “ué, tão pouco código????”
Se ler o código bem direitinho, o que não é difícil, dá para perceber que a única coisa que estamos fazendo é recuperando o usuário da sessão e passando-o para o template.
Se você está lembrado, já definimos como associar as armas e armaduras ao usuário.
Assim, só precisamos recuperar o usuário para saber quais armas e armaduras ele possui, além de sabermos quais que estão ativas.
Fica mais fácil entender vendo.
Para isso, crio o template inventario.html
<div class="container"> Armadura Ativa: <br /> {{ player.armadura_ativa.nome }} <img src="{{ player.armadura_ativa.imagem.url }}" /> <br /> <hr /> Arma Ativa: <br /> {{ player.arma_ativa.nome }} <img src="{{ player.arma_ativa.imagem.url }}" /> <br /> <hr /> <p>Armaduras:</p> {% for armadura in player.armaduras.all %} <img src="{{ armadura.imagem.url }}" /> {{ armadura.nome }} <a href="equipar/armadura/{{ armadura.pk }}">Equipar</a> <br /> {% endfor %} <hr /> <p>Armas:</p> {% for arma in player.armas.all %} <img src="{{ arma.imagem.url }}" /> {{ arma.nome }} <a href="equipar/arma/{{ arma.pk }}">Equipar</a> <br /> {% endfor %} </div>
Como sempre, já deixamos pronto os links para equipar a arma e a armadura desejada.
A ação de equipá-los iremos definir no próximo post.
O código fonte do projeto encontra-se em:
https://github.com/frenetic/django-wars
One thought on “Django Wars [Parte 17]: Inventário do usuário”