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
Pra fechar toda a parte de programação de views, vamos fazer um ranking.
A essa altura do campeonato vocês já devem achar isso trivial, mas não custa nada.
Primeiro, adicionamos a entrada no urls.py
url(r'^rank/$', djangowars.views.player.rank, name='pagina_do_rank'),
Como o rank é uma lista de jogadores, a view estará dentro do aquivo de views dos players, views/players.py:
# pagina rank
def rank(request):
if not request.user.is_authenticated():
return redirect('pagina_de_login')
#da um refrash no hp, energia e raiva do player
jogador = request.user.get_profile()
jogador.refresh()
jogador.save()
#pega a lista de 50 jogadores ordenado pelo xp
rank = Player.objects.all().order_by("-experiencia")[:50]
return render_to_response("rank.html", {"player": jogador,
"vida": jogador.vida * 10,
"rank": rank})
Por fim, só nos resta fazer um template bem bonitnho para listar os top players (rank.html).
<div class="container">
<p>
Informações do usuário:
Nível {{ player.nivel }}
|
Energia {{ player.energia_atual }}/{{ player.energia }}
|
Raiva {{ player.raiva_atual }}/{{ player.raiva }}
HP: {{ player.hp }}/{{ vida }}
|
Carteira {{ player.carteira }}
</p>
{% if player.raiva > 0 %}
<!--lista de rank com possibilidade de atacar os n00bs-->
{% for alvo in rank %}
<p>{{ alvo.user.username }} - Level {{ alvo.nivel }} - <a href="atacar/{{ alvo.id }}">ATACAR!!!</a></p>
{% endfor %}
{% else %}
{% for alvo in rank %}
<p>{{ alvo.user.username }} - Level {{ alvo.nivel }} - <a href="atacar/{{ alvo.id }}">ATACAR!!!</a></p>
{% endfor %}
{% endif %}
</div> <!-- /container -->
Eitcha, esse template é o template de alvos modificado…
Mas ninguém precisa saber 😀
Senhores (e senhoras), gostaria de informá-los que esta foi a última vez que programamos Python nesse projeto.
Agora só falta a gente dar um tapa no visual pra ficar legalzinho e colocar no ar.
TA ACABANDO
AEEEEEEEEE!!!
Código fonte encontra-se em:
https://github.com/frenetic/django-wars