Files
kasu/mahjong_ranking/management/commands/random-ranking.py
2014-11-26 13:13:07 +01:00

95 lines
3.0 KiB
Python

# -*- coding: utf-8 -*-
"""
Generate Randum Mahjong Hanchans to the the Raning System
"""
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from django.utils.translation import ugettext_lazy as _
from events.models import Event
from mahjong_ranking import models
import random
from datetime import timedelta
class Command(BaseCommand):
help = "Deletes all expired user registrations from the database"
def add_players(self, hanchan):
user_list = set()
while len(user_list) < 4:
random_user = random.choice(self.user_list)
user_list.add(random_user)
player_list = list()
ostwind_list = list()
for user in user_list:
player_list.append(models.Player(user=user, hanchan=hanchan, score=25000))
for player in player_list:
player.save()
end_of_game = False
ostwind_list.extend(player_list)
ostwind_list.extend(player_list)
ostwind = ostwind_list.pop()
while not end_of_game:
score = random.randrange(1300, 8000, 100)
loser = player_list[random.randrange(0,4,1)]
winner = player_list[random.randrange(0,4,1)]
winner.score += score
print 'Ostwind: %s, Gewinner: %s, Verlierer: %s, %d Punkte' % (
ostwind.user,
winner.user,
loser.user,
score,
)
if winner == loser:
# Player wins with Tsumo: Everybody pays a third of the score.
print "Tsumo!"
for player in player_list:
if player != winner:
player.score -= score / 3
else:
loser.score -= score
for player in player_list:
if player.score <= 0:
player.score = 0
end_of_game = True
if winner == ostwind:
print "Wind bleibt"
else:
print "Wind wird gewechselt."
try:
ostwind = ostwind_list.pop()
except IndexError:
end_of_game = True
print '---------------------------------------------------------------------'
for player in player_list:
print "%s: %s" % (player.user, player.score)
player.save()
print ""
def create_hanchan(self, event):
start = event.start + timedelta(minutes = random.randrange(00, 300, 15))
print event.name, start
print '='*80
hanchan = models.Hanchan(event=event, start=start)
hanchan.save()
self.add_players(hanchan)
hanchan.save()
def handle(self, *args, **options):
num_hanchans = int(options.get('hanchans', 4))
self.user_list = list(User.objects.all())
for event in Event.objects.all():
for i in range(random.randrange(2,8)):
self.create_hanchan(event)