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
Nosso jogo não seria um clone de “Mafia Wars” se ele não fosse focado em “cometer crimes”.
Precisamos criar uma página que só jogadores logados podem acessar onde listaremos os crimes que ele pode executar.
A primeira coisa que temos que fazer é saber como identificar se um usuário está logado ou não.
Quando logamos um usuário utilizando as biblioteca django.contrib.auth, que é o nosso caso, ele fica salvo na “sessão”.
Como nas views que estamos desenvolvendo neste projeto, os dados da requisição http do usuário são passados através da variável request, os dados de “sessão” do usuário logado estão salvos na variável request.user.
Estava lá o tempo todo e você só viu agora.
Fica mais fácil de entender com um exemplo.
Segue então a view que lista os possíveis crimes que podem ser cometidos (inserido no arquivo views.py):
# pagina que lista os crimes def crimes(request): if not request.user.is_authenticated(): return redirect(logar) # from django.shortcuts import redirect render_to_response("crimes.html")
Esta view verifica se o usuário está logado.
Se não estiver, redireciona para a página de login.
Se estiver, exibe o template.
Para ter acesso a essa view, precisamos mapea-la no urls.py:
from django.conf.urls import patterns, include, url import djangowars.views # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', url(r'^$', djangowars.views.index), url(r'^registrar/$', djangowars.views.registrar), # pagina de cadastro url(r'^login/$', djangowars.views.logar), # pagina de login url(r'^crimes/$', djangowars.views.crimes), # pagina de login # Uncomment the next line to enable the admin: url(r'^admin/', include(admin.site.urls)), # Uncomment the admin/doc line below to enable admin documentation: # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), )
Faltou então descrever o arquivo crimes.html dentro da pasta templates:
<div class="container"> <!--lista de crimes que podem ser cometidos--> <p>Roubar carrocinha de cachorro quente. (1 de energia) (nível mínimo: 1) <a href="/cometer/1">cometer crime</a></p> <p>Roubar doce de criança. (2 de energia) (nível mínimo: 2) <a href="/cometer/2">cometer crime</a></p> <p>Roubar casa. (3 de energia) (nível mínimo: 3) <a href="/cometer/3">cometer crime</a></p> <p>Roubar banco. (4 de energia) (nível mínimo: 5)(requer arma) <a href="/cometer/4">cometer crime</a></p> <p>Roubar coisas secretas. (6 de energia) (nível mínimo: 8)(requer arma)(requer armadura) <a href="/cometer/5">cometer crime</a></p> </div> <!-- /container -->
O jogo é visualmente fraco, já deu para notar.
No caso dessa sequência de artigos de desenvolvimento, estou mais preocupado em demonstrar que dá para construir um webgame com Django do que fazer algo bonito.
As perfumarias a gente deixa para depois.
Por fim, como sempre o código pode ser visualizado aqui:
https://github.com/frenetic/django-wars
One thought on “Django Wars [Parte 11]: Criando página de crimes”