Django Wars [Parte 16]: Cometendo 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

Nossos players agora precisam de uma forma de adquirir dinheirus.
No Django Wars esta forma é cometendo crimes.
Se vocês lembram, já criamos uma listagem dos crimes que podem ser cometidos no jogo.
Agora, precisamos executar a ação do crime.

Simples, primeiro iremos editar o urls.py para executar os crimes:

url(r'^crimes/cometer/1/$', djangowars.views.cometer_crime1),
url(r'^crimes/cometer/2/$', djangowars.views.cometer_crime2),

Agora, é só programar as views de acordo com os crimes.
Quem lembra quando definimos a página dos crimes, definimos 5 crimes diferentes:

<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 primeiro crime é o mais básico, visto que qualquer um pode cometê-lo se tiver energia para fazê-lo.
O segundo e o terceiro crimes são análogos ao primeiro, com um adendo: agora precisamos verificar se o usuário possui o nível mínimo para executar a ação.
Por fim, temos o quarto e o quinto crime, onde, além de verificarmos a quantidade de energia e o nível atual do usuário, precisamos verificar se este está equipado.
Neste post iremos explorar apenas o primeiro, o segundo e o terceiro crime.

O primeiro crime é uma mamata.
Nossa views será inserida na views.py dessa forma:

def cometer_crime1(request):
    if not request.user.is_authenticated():
        return redirect(logar)

    player = request.user.get_profile()

    if player.energia_atual < 1:
        return redirect(crimes)

    #ganha um dinheirinho aleatorio    
    player.carteira = player.carteira + (11 * randint(0, player.ataque))
    #reduz a quantidade de energia atual do player
    player.energia_atual = player.energia_atual - 1
    player.save() #salva no banco de dados as alteracoes
    return redirect(crimes)

No primeiro crime, verificamos se o usuário está logado e se este possui a quantidade de energia mínima necessária, no caso 1.
Se passar nestes dois testes, damos um dinheirinho aleatório ao usuário e salvamos a alteração no banco de dados.
Para gerar esse dinheiro aleatório, useu a função randint.
No começo do arquivo views.py adicionei a seguinte linha:

from random import randint

No segundo crime adicionamos mais um nível de “dificuldade” ao programador, verificar se o usuário possui um nível mínimo.

def cometer_crime2(request):
    if not request.user.is_authenticated():
        return redirect(logar)

    player = request.user.get_profile()

    #verifica se o usuario possui nivel e energia para realizar o crime
    if player.energia_atual < 2 or player.nivel < 2:
        return redirect(crimes)

    player.carteira = player.carteira + (21 * randint(0, player.ataque))
    player.energia_atual = player.energia_atual - 2
    player.save()
    return redirect(crimes)

Novamente, após verificar se o usuário está logado, e se ele tem energia e nível suficiente para realizar o crime, dá um dinheirinho para ele.
O terceiro crime é a mesma coisa, apenas com outro nível no requerimento e retirando mais energia do usuário. Porém, dando mais dinheiro.
Fica pra quem está lendo fazer em casa 😀 (que coisa de preguiçoso isso…)

O código, como sempre, está aqui:
https://github.com/frenetic/django-wars

Deixe um comentário

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