Django Wars [Parte 11]: Criando página de crimes

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *