fixed deck create, added function to generate room

This commit is contained in:
Alexander Karpov 2022-07-28 16:50:17 +03:00
parent 71d811100b
commit 7e48242780
4 changed files with 60 additions and 6 deletions

48
common/debug.py Normal file
View File

@ -0,0 +1,48 @@
from common.generators import gen_ton
from game.models import Player, Deck, Hero
from room.services.room_create import sync_create_room
def _check_players_score(players):
for player in players:
for player2 in players:
if player != player2:
s_min = players[player] * 0.95
s_max = players[player] * 1.05
if s_min <= players[player2] <= s_max:
return False
return True
def generate_room():
players = {}
for _ in range(2):
player = Player.objects.create(ton_wallet=gen_ton())
players[player] = player.get_last_deck().score()
while _check_players_score(players):
player = Player.objects.create(ton_wallet=gen_ton())
players[player] = player.get_last_deck().score()
for player in players:
for player2 in players:
if player != player2:
s_min = players[player] * 0.95
s_max = players[player] * 1.05
if s_min <= players[player2] <= s_max:
p1 = player
p2 = player2
room_slug = sync_create_room(
p1.get_last_deck().id,
p1.id,
players[p1],
p2.get_last_deck().id,
p2.id,
players[p2],
)
print(f"ws://127.0.0.1:8000/room/{room_slug}")
print(f"Authorization: {p1.get_access_token()}")
print(f"Authorization: {p2.get_access_token()}")
return None

View File

@ -167,6 +167,7 @@ class HeroInDeck(models.Model):
db_table = "hero_in_deck"
verbose_name = "Hero in deck"
verbose_name_plural = "Heroes in decks"
ordering = ["y", "x"]
class PlayerAuthSession(models.Model):

View File

@ -9,9 +9,9 @@ def create_first_deck(player: Player):
for x in range(8):
for y in range(2):
if (x != 3 and y != 0) or (x != 4 and y != 0):
positions.append((x, y))
print(positions)
positions.append((x, y))
positions.remove((3, 0))
positions.remove((4, 0))
random.shuffle(positions)
types = (

View File

@ -6,15 +6,15 @@ from game.models import Player, Deck
from room.models import Room, PlayerInRoom, GameState, HeroInGame
@sync_to_async
def create_room(
def sync_create_room(
deck_id_1: int,
player_id_1: int,
player_score_1: int,
deck_id_2: int,
player_id_2: int,
player_score_2: int,
) -> str:
):
room = Room.objects.create(slug=generate_charset(16))
player_1 = Player.objects.get(id=player_id_1)
player_2 = Player.objects.get(id=player_id_2)
@ -58,3 +58,8 @@ def create_room(
y=8 - hero_in_deck.y,
)
return room.slug
@sync_to_async
def create_room(**kwargs):
return sync_create_room(**kwargs)