コード例 #1
0
ファイル: fiasco_test.py プロジェクト: sprek/fiasco
    def test_players_db(self):
        """ Testing player functions
        player.insert_player_into_db
        player.get_players_from_db
        player.get_player_from_db_by_name
        player.update_player_by_name
        """ 
        clear_tables(self.db)

        # test empty players
        test_players = player.get_players_from_db(GAME_ID1, self.db)
        assert (test_players == [])
        test_names = player.get_player_names_from_db(GAME_ID1, self.db)
        assert (test_names == [])

        # insert player
        test_player = player.Player (*TEST_PLAYER_VALUES1)
        player.insert_player_into_db(test_player, self.db)
        db_player = player.get_players_from_db(test_player.game_id, self.db)[0]
        assert db_player == test_player
        # get player
        db_player2 = player.get_player_from_db_by_name(db_player.name, db_player.game_id, self.db)
        assert(db_player2 == db_player)
        # update player
        cur_id = db_player.id_num
        db_player.id_num = cur_id + 1
        player.update_player_by_name(db_player, self.db)
        # get player
        new_db_player = player.get_player_from_db_by_name(
            db_player.name, db_player.game_id, self.db)
        assert(new_db_player.id_num == db_player.id_num)
コード例 #2
0
ファイル: game_control.py プロジェクト: sprek/fiasco
def set_relationship(rel1_role, rel1_option, rel1_player,
                     rel2_role, rel2_option, rel2_player,
                     cur_player_name, pset, game_id, db):
    """
    Updates the database - sets the relationships for one of the neighbor pairs
    """
    rel_indices = playset.get_relationship_indices(rel1_role, rel2_role, rel1_option, rel2_option, pset)
    if not rel_indices:
        return ERROR_INVALID_RELATIONSHIP_VALUES

    # check if dice are ok
    game_dice = dice.get_dice_from_db(game_id, db)
    if game_dice.dice_dic[rel_indices[1]+1] <= 0:
        return ERROR_NOT_ENOUGH_DICE
    p1 = player.get_player_from_db_by_name(rel1_player, game_id, db)
    p2 = player.get_player_from_db_by_name(rel2_player, game_id, db)
    if not p1 or not p2:
        return ERROR_INVALID_PLAYERS
    if not rel1_player == cur_player_name and not rel2_player == cur_player_name:
        return ERROR_CURRENT_PLAYER_NOT_IN_RELATIONSHIP
    if rel1_player == rel2_player:
        return ERROR_PLAYERS_MUST_BE_DIFFERENT
    if p1.p_left_name == p2.name:
        # neighor is to the left
        set_left_relationship(rel1_role, rel1_option,
                              playset.get_relationship_id_from_indices(
                                  rel_indices, flip_a_b=False), p1, db)
        set_right_relationship(rel2_role, rel2_option, 
                               playset.get_relationship_id_from_indices(
                                   rel_indices, flip_a_b=True), p2, db)
    elif p1.p_right_name == p2.name:
        # neighbor is to the right
        set_right_relationship(rel1_role, rel1_option,
                              playset.get_relationship_id_from_indices(
                                  rel_indices, flip_a_b=False), p1, db)
        set_left_relationship(rel2_role, rel2_option,
                               playset.get_relationship_id_from_indices(
                                   rel_indices, flip_a_b=True), p2, db)
    player.update_player_by_name(p1, db)
    player.update_player_by_name(p2, db)
    return NO_ERROR
コード例 #3
0
ファイル: __init__.py プロジェクト: sprek/fiasco
 def play():
     player_names = player.get_player_names_from_db(GAME_ID, get_db())
     cur_player_name = game_control.player_name_check(request.args.get('player',''),
                                                      session['player'],
                                                      player_names)
     if cur_player_name:
         session['player'] = cur_player_name
     else:
         return render_template('select_player.html', players=player_names)
     
     if status.get_round_from_db(GAME_ID, get_db()) == -1:
         game_control.initialize_game(GAME_ID, get_db())
     cur_player = player.get_player_from_db_by_name(cur_player_name, GAME_ID, get_db())
     pd = playset.parse_playset('/Users/danielsprechman/development/projects/fiasco/playset_main_st.txt')
     return render_template('play.html',
                            player=session['player'],
                            playset_name='Main St.',
                            dice_html=view.get_dice_html(dice.get_dice_from_db(GAME_ID, get_db()).dice),
                            neighbors=[cur_player.p_left_name, cur_player.p_right_name],
                            playset_html = view.get_playset_html(pd, get_db(), cur_player_name, GAME_ID))
コード例 #4
0
ファイル: view.py プロジェクト: sprek/fiasco
def get_playset_html(pset, db, cur_player_name, game_id):
    playset_html = '<h2>Relationships</h2>\n'
    cur_player = player.get_player_from_db_by_name(cur_player_name, game_id, db)
    for i,entry_group in enumerate(pset.relationships):
        entry_id = "rel_" + str(i+1)
        # 1. family      enable for: player1 player2
        playset_html += "\n<div class=\"row\"><div class=\"col-md-4\"><h3>" + str(i+1) + ". " + entry_group.title + "</h3></div>\n" + \
                        "<div class=\"col-md-4 well-lg\">" + \
                        "<form class=\"form-inline\">Enable for:&nbsp;&nbsp;&nbsp;" + \
                        "<label class=\"checkbox\"><input type=\"checkbox\" entry_id=\"" + entry_id + "\"value = \"" + cur_player.p_left_name + "\" class=\"player_check player_check1\"> " + cur_player.p_left_name + "</input></label>&nbsp;&nbsp;&nbsp;" + \
                        "<label class=\"checkbox\"><input type=\"checkbox\" entry_id=\"" + entry_id + "\" value = \"" + cur_player.p_right_name + "\" class=\"player_check player_check2\"> " + cur_player.p_right_name + "</input></label>" + \
                        "</form></div></div>\n" + \
                        '\n<ul class="list-group" id="' + entry_id + '">'
        
        for j,entry in enumerate(entry_group.entries):
            entry_id_e = entry_id + "e" + str(j)
            select_html1 = ''
            select_html2 = ''
            for k, option in enumerate(entry.rel_a_options):
                if k == 0:
                    select_html1 = '&nbsp;&nbsp;(\n<select class="btn btn-mini rel_select1">'
                select_html1 += '<option val="'+ entry_id_e + '_g1_o' + str(k) +'">' + option + '</option>'
                if k == len(entry.rel_a_options)-1:
                    select_html1 += '</select>)'
            for k, option in enumerate(entry.rel_b_options):
                if k == 0:
                    select_html2 = '&nbsp;&nbsp;(\n<select class="btn btn-mini rel_select2">'
                select_html2 += '<option val="'+ entry_id_e + '_g2_o' + str(j) +'">' + option + '</option>'
                if k == len(entry.rel_a_options)-1:
                    select_html2 += '</select>)'
            playset_html += '<li class="p_rel_item list-group-item disabled">' + \
                        '<input type="radio" disabled="true" id="radio_' + entry_id_e + '" class="radio_rel">' + \
                        '&nbsp;&nbsp;&nbsp;' + str(j+1) + '. ' + \
                        '<span class="g1_text">' + entry.rel_a + '</span>' + select_html1 + \
                        '&nbsp;&nbsp; / &nbsp;&nbsp;<span class="g2_text">' + \
                        entry.rel_b + '</span>' + select_html2 + '</li>'
        playset_html += '</ul>\n'
    return playset_html
コード例 #5
0
ファイル: fiasco_test.py プロジェクト: sprek/fiasco
    def test_game_control(self):
        """ Testing game_control functions
        game_control.initialize_game
        """
        clear_tables(self.db)
        p1 = player.Player(*TEST_PLAYER_VALUES1)
        p2 = player.Player(*TEST_PLAYER_VALUES2)
        p3 = player.Player(*TEST_PLAYER_VALUES3)
        # insert players into db
        player.insert_player_into_db(p1, self.db)
        player.insert_player_into_db(p2, self.db)
        player.insert_player_into_db(p3, self.db)
        # initialize game
        game_control.initialize_game(p1.game_id, self.db)
        # get the updated player information
        p1 = player.get_player_from_db_by_name(p1.name, p1.game_id, self.db)
        p2 = player.get_player_from_db_by_name(p2.name, p2.game_id, self.db)
        p3 = player.get_player_from_db_by_name(p3.name, p3.game_id, self.db)
        # In a 3 person game, everyone should be neighbors with eachother
        assert(p1.p_left_name in [p2.name, p3.name])
        assert(p1.p_right_name in [p2.name, p3.name])
        assert(not p1.p_left_name == p1.p_right_name)
        assert(p2.p_left_name in [p1.name, p3.name])
        assert(p2.p_right_name in [p1.name, p3.name])
        assert(not p2.p_left_name == p2.p_right_name)
        assert(p3.p_left_name in [p1.name, p2.name])
        assert(p3.p_right_name in [p1.name, p2.name])
        assert(not p3.p_left_name == p3.p_right_name)

        # try setting relationships

        # first prepare the dice, so that there's enough for all the tests
        dice.insert_dice_into_db(dice.Dice({0:100,1:100,2:100,3:100,4:100,5:100,6:100},p1.game_id), self.db)
        
        test_playset = playset.parse_playset(TEST_PLAYSET)
        # p1 and p2: mayor / health commissioner
        # p1 and p3: drug dealer / drug manufacturer
        # p2 and p3: plumber / client
        p1_p2_rel_opt = ('elected official', 'mayor')
        p2_p1_rel_opt = ('elected official', 'health commissioner')
        p1_p3_rel_opt = ('drug person', 'dealer')
        p3_p1_rel_opt = ('drug person', 'manufacturer')
        p2_p3_rel_opt = ('tradesman', 'plumber')
        p3_p2_rel_opt = ('client', '')
        retval = game_control.set_relationship(p1_p2_rel_opt[0], p1_p2_rel_opt[1], p1.name,
                                               p2_p1_rel_opt[0], p2_p1_rel_opt[1], p2.name,
                                               p1.name, test_playset, p1.game_id, self.db)
        assert (retval == game_control.NO_ERROR)
        retval = game_control.set_relationship(p1_p3_rel_opt[0], p1_p3_rel_opt[1], p1.name,
                                               p3_p1_rel_opt[0], p3_p1_rel_opt[1], p3.name,
                                               p3.name, test_playset, p1.game_id, self.db)
        assert (retval == game_control.NO_ERROR)
        retval = game_control.set_relationship(p2_p3_rel_opt[0], p2_p3_rel_opt[1], p2.name,
                                               p3_p2_rel_opt[0], p3_p2_rel_opt[1], p3.name,
                                               p3.name, test_playset, p1.game_id, self.db)
        assert (retval == game_control.NO_ERROR)
        # get the updated player information
        p1 = player.get_player_from_db_by_name(p1.name, p1.game_id, self.db)
        p2 = player.get_player_from_db_by_name(p2.name, p2.game_id, self.db)
        p3 = player.get_player_from_db_by_name(p3.name, p3.game_id, self.db)

        #print_player_info(p1)
        #print_player_info(p2)
        #print_player_info(p3)
        
        # In a 3 person game, everyone should be neighbors with eachother
        if p1.p_left_name == p2.name:
            # for player 1: left is p2, right is p3
            assert p1_p2_rel_opt == (p1.rel_l_role, p1.rel_l_option)
            assert p1_p3_rel_opt == (p1.rel_r_role, p1.rel_r_option)
            # for player 3: left is p1, right is p2
            assert p3_p1_rel_opt == (p3.rel_l_role, p3.rel_l_option)
            assert p3_p2_rel_opt == (p3.rel_r_role, p3.rel_r_option)
            # for palyer 2: left is p3, right is p1
            assert p2_p3_rel_opt == (p2.rel_l_role, p2.rel_l_option)
            assert p2_p1_rel_opt == (p2.rel_r_role, p2.rel_r_option)
        elif p1.p_left_name == p3.name:
            # for player 1: left is p3, right is p2
            assert p1_p3_rel_opt == (p1.rel_l_role, p1.rel_l_option)
            assert p1_p2_rel_opt == (p1.rel_r_role, p1.rel_r_option)
            # for player 3: left is p2, right is p1
            assert p3_p2_rel_opt == (p3.rel_l_role, p3.rel_l_option)
            assert p3_p1_rel_opt == (p3.rel_r_role, p3.rel_r_option)
            # for palyer 2: left is p1, right is p3
            assert p2_p1_rel_opt == (p2.rel_l_role, p2.rel_l_option)
            assert p2_p3_rel_opt == (p2.rel_r_role, p2.rel_r_option)
        else:
            # this should not happen
            assert False