コード例 #1
0
ファイル: views.py プロジェクト: ArtemAstahov/colonization
def home(request):
    host_scores = []
    users = User.objects.all()
    for user in users:
        score = get_user_score(user)
        host_scores.append(UserScores(name=user.username, score=score))
    host_scores.sort(key=operator.attrgetter('score'))
    host_scores.reverse()

    if request.user.is_authenticated() and get_player(request.user) is not None and get_active_game(request.user):
        return render(request, 'home.html',
                      {'game': get_active_game(request.user), 'user_scores': host_scores[0:5]})
    else:
        return render(request, 'home.html', {'host_games': get_host_games(), 'user_scores': host_scores[0:5]})
コード例 #2
0
ファイル: views.py プロジェクト: ArtemAstahov/colonization
def move_unit(request):
    pk = int(request.GET['pk'])
    unit = Unit.objects.get(pk=pk)
    if not unit.active:
        return HttpResponseBadRequest()
    unit.active = False
    left = int(request.GET['left'])
    top = int(request.GET['top'])

    opponent = get_opponent(request.user)
    opponent_units = opponent.unit_set.all().filter(left=left, top=top)
    opponent_unit = opponent_units.first()
    opponent_unit_json = None
    settlement_json = None

    if opponent_units.exists():
        if fight(unit, opponent_unit):
            unit.save()
            opponent_unit_json = Unit.objects.filter(pk=opponent_unit.pk)
            opponent_unit_json = serializers.serialize('json', opponent_unit_json, use_natural_keys=True)
            opponent_unit.delete()
        else:
            unit.delete()
            return HttpResponse()
    else:
        opponent_settlement = Settlement.objects.all().filter(player=opponent, left=left, top=top).first()
        if opponent_settlement is not None:
            opponent_settlement.player = get_player(request.user)
            opponent_settlement.save()
            settlement_json = Settlement.objects.filter(pk=opponent_settlement.pk)
            settlement_json = serializers.serialize('json', settlement_json, use_natural_keys=True)
        unit.left = left
        unit.top = top
        unit.save()

    unit = Unit.objects.filter(pk=pk)
    opponent_units = get_opponent_units_for_unit(unit.first(), opponent)
    opponent_settlements = get_opponent_settlements_for_unit(unit.first(), opponent)

    unit = serializers.serialize('json', unit, use_natural_keys=True)

    data = {'unit': unit, 'opponent_unit': opponent_unit_json, 'settlement': settlement_json,
            'opponent_units': opponent_units, 'opponent_settlements': opponent_settlements}

    return HttpResponse(json.dumps(data), content_type='application/json')
コード例 #3
0
ファイル: views.py プロジェクト: ArtemAstahov/colonization
def finish_stroke(request):
    player = get_player(request.user)
    opponent = get_opponent(request.user)

    if player.is_lost():
        finish_game(opponent.user, player.user)
        return HttpResponse()

    if opponent.is_lost():
        finish_game(player.user, opponent.user)
        return HttpResponse()

    player.active = False
    player.save()
    Unit.objects.filter(player=player).update(active=False)
    Settlement.objects.filter(player=player).update(active=False)

    opponent.increase_money_for_day()
    opponent.active = True
    opponent.save()

    Unit.objects.filter(player=opponent).update(active=True)
    Settlement.objects.filter(player=opponent).update(active=True)
    return HttpResponse()