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
Depois que o usuário entra no fight tenso e sai todo quebrado, com certeza ele vai precisar de cuidados médicos.
Como ele não possui plano de saúde, e é um criminoso procurado pela polícia, ele vai ter que pagar bem caro por um bom tratamento médico.
Vamos criar a página do hospital para cuidar do usuário.
Depois de tudo que já passamos, essa view virou trivial.
Vou fazer aquele passo-a-passo com poucos comentários.
Primeiro, colocando 3 entradas no urls.py
url(r'^hospital/$', djangowars.views.hospital.hospital, name='pagina_do_hospital'), url(r'^hospital/curar/(\d+)/$', djangowars.views.hospital.curar), url(r'^hospital/curar/x/$', djangowars.views.hospital.curarx),
A primeira URL serve para listar as opções do hospital, definidas na view hospital, que ocloquei dentro do arquivo views/hospital.py.
A segunda e a terceira URL são formas de comprar cura.
from django.shortcuts import render_to_response # funcoes de renderizacao dos templates from django.shortcuts import redirect # Funcao para executar um http-redirect #pagina do hospital def hospital(request): if not request.user.is_authenticated(): return redirect('pagina_de_login') #da um refrash no hp, energia e raiva do player player = request.user.get_profile() player.refresh() player.save() return render_to_response("hospital.html", {"player": request.user.get_profile(), "vida": request.user.get_profile().vida * 10}) # para exibir o total de vida do usuario #curar um numero qualquer def curar(request, valor): if not request.user.is_authenticated(): return redirect('pagina_de_login') player = request.user.get_profile() valor = int(valor) #o valor eh passado para a view como string, precisamos q ele seja integer #se for um valor menor que 11, cura #se nao for, ignora para nao "travar" o site com um mega loop if valor < 11: for i in range(valor): if player.carteira >= 100 and player.hp <= player.vida * 10: player.hp = player.hp + 1 player.carteira = player.carteira - 100 else: break #atualiza o jogador player.save() #retorna para a pagina do hospital return redirect(hospital) #pagina para curar o quanto der def curarx(request): if not request.user.is_authenticated(): return redirect('pagina_de_login') player = request.user.get_profile() #verifica se o jogador esta full hp if player.hp == player.vida * 10: redirect(hospital) #enquanto o hp do jogador for menor que o maximo #e enquanto ele tiver dinheiro para pagar while player.hp < player.vida * 10 and player.carteira >= 100: player.hp = player.hp + 1 player.carteira = player.carteira - 100 #salva as alteracoes player.save() #volta para o hospital return redirect(hospital)
Eu não sei se tá fácil para caramba ou se eu estou com preguiça de explicar cada view.
O código Python fala por si só, ele é lindo!
Qualquer coisa, perguntem nos comentários 😀
Por fim, o template do hospital com as opções para selecionar o que se deseja.
hospital.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> <p><a href="curar/1">Curar 1 de hp $100</a></p> <p><a href="curar/5">Curar 5 de hp $500</a></p> <p><a href="curar/10">Curar 10 de hp $1000</a></p> <p><a href="curar/x">Curar o máximo que der</a></p> </div> <!-- /container -->
Por fim, o código fonte encontra-se em:
https://github.com/frenetic/django-wars