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”