コード例 #1
0
def leaderboard():
    global leader_board
    if 'username' in session:
        user = session.get('username')
        my_users[user]['game-over'] = True
        leader_board = get_leaderboard(my_users, leader_board)

        socketio.emit('leaders', {'data': leader_board})
        return render_template('leaderboard.html', leaders=leader_board)
    else:
        leader_board = get_leaderboard(my_users, leader_board)
        return render_template('leaderboard.html', leaders=leader_board)
コード例 #2
0
def game():
    global online
    global leader_board

    idType = id_type()

    if 'username' in session:
        user = session.get('username')

        if user in my_users:

            del my_users[user]['username']
            my_users[user] = set_up_new_user(user)

            if not user in online:
                online = add_user_online(my_users, user, online)
            else:
                online = remove_user_online(user, online)
                online = add_user_online(my_users, user, online)

            leader_board = get_leaderboard(my_users, leader_board)

            socketio.emit('in_out_game', {'data': online})
            socketio.emit('leaders', {'data': leader_board})

            return render_template('game.html',
                                   username=user,
                                   type_id=idType,
                                   on_line=online,
                                   leader=leader_board[:3])
        else:
            user = session.get('username')
            my_users[user] = set_up_new_user(user)

            if not user in online:
                online = add_user_online(my_users, user, online)

            else:
                online = remove_user_online(user, online)
                online = add_user_online(my_users, user, online)

            leader_board = get_leaderboard(my_users, leader_board)

            socketio.emit('in_out_game', {'data': online})
            socketio.emit('leaders', {'data': leader_board})

            return render_template('game.html',
                                   username=user,
                                   type_id=idType,
                                   on_line=online,
                                   leader=leader_board[:3])
    else:
        return redirect(url_for('index'))
コード例 #3
0
ファイル: app.py プロジェクト: JohnL3/trial-milestone-two
def answer():
    global online
    global leader_board
    if request.method == 'POST':
        data = request.get_json()
        user = session.get('username')
        result = check_answer(data['questionId'], data['answer'])

        if result[0]['result'] == 'correct':
            online = update_user_online(user, online)
            my_users[session.get('username')]['score'] = my_users[session.get(
                'username')]['score'] + 1
        else:
            my_users[user]['wrong'].append(
                [result[0]['id'], result[0]['answer']])

        socketio.emit('in_out_game', {'data': online})
        score = my_users[user]['score']
        socketio.emit('my_score', {'score': score, 'user': user})

        answered_count = len(my_users[user]['answered'])
        if answered_count == 12:
            my_users[user]['game-over'] = True
            leader_board = get_leaderboard(my_users, leader_board)

            socketio.emit('leaders', {'data': leader_board})
            data = {'msg': result, 'game-over': True}
            return jsonify(data)
        else:
            data = {'msg': result}
            return jsonify(data)
    else:
        return redirect(url_for('index'))
コード例 #4
0
def leavegame():
    global leader_board
    if 'username' in session:
        user = session.get('username')
        my_users[user]['game-over'] = True
        leader_board = get_leaderboard(my_users, leader_board)
        socketio.emit('leaders', {'data': leader_board})
        return redirect(url_for('index'))
コード例 #5
0
    def test_returns_list_length_0_if_no_one_answers_correctly(self):
        '''Should return an empty list if user/s played game and have answered no questions correctly'''

        my_users = {
            'j': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 0
            },
        }
        leader_board = []
        result = get_leaderboard(my_users, leader_board)

        self.assertEqual(0, len(result))
コード例 #6
0
    def test_returns_usernames_score(self):
        '''Should return tuples with username and score and highest score/username pair should be first in list'''

        my_users = {
            'j': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 2
            },
            'e': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 5
            },
            'a': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 9
            },
            'b': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 6
            },
            'c': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 2
            },
            'd': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 7
            }
        }
        leader_board = []

        result = get_leaderboard(my_users, leader_board)

        self.assertEqual(9, result[0][1])
        self.assertEqual('a', result[0][0])
        self.assertTrue(type(result[0]) == tuple)
コード例 #7
0
    def test_returns_list_length_greater_than_0(self):
        '''Should return a list of length of at least one if a user has played game and answered a question correctly'''

        my_users = {
            'j': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 1
            },
        }
        leader_board = []

        result = get_leaderboard(my_users, leader_board)

        self.assertEqual(1, len(result))
コード例 #8
0
    def test_return_list_length(self):
        '''Should return a list of length 5 as 5 users score greater than 0'''

        my_users = {
            'j': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 2
            },
            'e': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 5
            },
            'a': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 9
            },
            'b ': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 6
            },
            'c': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 2
            },
            'd': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 0
            }
        }
        leader_board = []

        result = get_leaderboard(my_users, leader_board)

        self.assertEqual(5, len(result))
コード例 #9
0
    def test_get_leaderboard_returns_list(self):
        '''Ensure get_leaderboard returns a list'''

        my_users = {
            'j': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 2
            },
            'e': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 5
            },
            'a': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 9
            },
            'b ': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 6
            },
            'c': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 2
            },
            'd': {
                'username': '******',
                'ans': [],
                'wrong': [],
                'score': 7
            }
        }
        leader_board = []
        result = get_leaderboard(my_users, leader_board)

        self.assertTrue(type(result) == list)