Exemple #1
0
def create_game(request , data: schemas.GameCreateSchema):
    game = models.Game(creator_id=request.auth,password=data.password)
    try:
        game.save()
    except:
        raise HttpError(422, "ERROR")
    return game
Exemple #2
0
def create_game(user_id: int, db: Session):
    db_game = models.Game(
        ran_num=json.dumps(random_number()),
        owner_id=user_id,
    )
    db.add(db_game)
    db.commit()
    db.refresh(db_game)
    return db_game
Exemple #3
0
def make_game(): #rgb
  buildings = make_possible_buildings()
  (hexes, probabilities, robber_location) = make_hexes(buildings)
  roads = make_possible_roads(buildings)
  game = models.Game(settup_round = True, started=False,
                     buildings = buildings, hexes = hexes,
                     probabilities = probabilities, roads = roads,
                     robber_location= robber_location,
                     colors_left=POSSIBLE_COLORS)
  db.session.add(game)
  db.session.commit()
  return game.id
Exemple #4
0
def reveal(request):
    params = json.loads(request.body)
    player_hash = params['player_hash']
    player_plaintext = params['player_plaintext']

    m = hashlib.sha256()
    m.update(player_plaintext.encode())
    calculated_hash = m.hexdigest()

    if calculated_hash == player_hash:
        cr = models.CommitReveal.objects.get(player_hash=player_hash)
        cr.player_plaintext = player_plaintext
        cr.save()

        m2 = hashlib.sha256()
        m2.update((player_hash + cr.server_hash).encode())
        salt = m2.hexdigest()[0:62]

        solution = generate_solution()
        models.Game(commit_reveal=cr, solution=solution, salt=salt).save()

        saltedSoln = int(salt, 16) + solution

        params = [
            settings.NODE_BINARY, 'build/mastermind/src/pedersen.js',
            str(saltedSoln)
        ]
        output = subprocess.check_output(params,
                                         cwd=os.path.join(
                                             settings.BASE_DIR, '../'))

        s = output.decode('utf-8').split('\n')
        solnHash = s[0]

        return json_response({
            'server_plaintext': cr.server_plaintext,
            'server_hash': cr.server_hash,
            'player_plaintext': cr.player_plaintext,
            'player_hash': cr.player_hash,
            'salt': salt,
            'solnHash': solnHash,
            'solution': solution
        })
    else:
        return json_bad_response('Invalid hash')
Exemple #5
0
def end_round(form, dest):
    day_index = game.get_day_index(current_user, models.Game)
    current_par = game.get_current_parameters(current_user, models.Parameter)
    current_demand = game.get_current_demand(current_user, models.Demand)
    norder = int(form.input.data)
    ndemand = int(current_demand.demand_new.split(',')[day_index - 1])
    nsold = min(norder, ndemand)
    nlost = max(0, ndemand - norder)
    rev = round(nsold * round(float(current_par.retail_price), 2), 2)
    cost = round(norder * round(float(current_par.wholesale_price), 2), 2)
    profit = round(rev - cost, 2)
    if day_index == 1:
        total_profit = round(profit, 2)
    else:
        total_profit = round(
            profit + models.Game.query.filter_by(
                id=current_user.id,
                day_index=day_index - 1).first().total_profit, 2)
    # insert into db
    current_game_rec = models.Game(session_code=current_user.session_code,
                                   id=current_user.id,
                                   pname=current_user.pname,
                                   day_index=day_index,
                                   norder=norder,
                                   ndemand=ndemand,
                                   nsold=nsold,
                                   nlost=nlost,
                                   rev=rev,
                                   cost=cost,
                                   profit=profit,
                                   total_profit=total_profit)
    db.session.add(current_game_rec)
    db.session.commit()
    return render_template(dest,
                           norder=norder,
                           ndemand=ndemand,
                           nsold=nsold,
                           nlost=nlost,
                           rev=rev,
                           cost=cost,
                           current_par=current_par,
                           profit=profit,
                           tot_profit=total_profit)
Exemple #6
0
def create_game(game: Game):
    new_game = models.Game(
        name=game.name,
        session_name=game.session_name,
        need_money=GAMES[game.name].get("need_money", False),
        can_give_cards=GAMES[game.name].get("can_give_cards", False),
        hand_count=GAMES[game.name].get("hand_count", False))
    new_game.save()
    create_deck(new_game)
    return {
        "id":
        new_game.id,
        "name":
        new_game.name,
        "session_name":
        new_game.session_name,
        "players": [
            player.serialize() for player in models.Player.select().where(
                models.Player.game == new_game)
        ]
    }