background image

 

 

44 

 

@app.route('/set_no_more_quest', methods=['POST']) 
def set_no_more_quest(): 

    global  knowledge_topic,  knowledge_npc,  initial_response_sent,  follow_up_question_sent, 
no_more_questions 
    data = request.get_json() 

    message = data.get('message') 
    user_id = get_last_user_id() 
    if user_id is not None: 
        print(f"userid: {user_id}") 

    else: 
        print("No users in db.") 
    initial_num_questions = get_initial_num_questions(user_id, knowledge_topic) 
    num_questions = get_user_question_count(user_id, knowledge_topic) 

    print(f"num_questions {num_questions}") 
    if initial_num_questions <=0: 
        no_more_questions = True 
    if num_questions <=0: 

        no_more_questions = True 
    return jsonify({'no_more_questions': no_more_questions}) 

 

Βάση Δεδομένων 

Ο  τρόπος  αποθήκευσης  και  διαχείρισης  των  δεδομένων  αναβαθμίστηκε.  Το  JSON 

αντικαταστάθηκε με μία βάση δεδομένων (DB) sqlite3. Τα θέματα και τα δεδομένα τους δεν 

φορτώνονται  πλέον  από  το  αρχείο  topics.json  αλλά  από  μια  βάση  δεδομένων  db.py.  Αυτό 

παρέχει  μεγαλύτερη  αποτελεσματικότητα  και  καλύτερο  συγχρονισμό  των  στοιχείων  του 

παιχνιδιού. 

Πίνακας  topics:  Αποθηκεύει  τα  διαθέσιμα  θέματα  γνώσης  και  το  όνομα  του  NPC  που  τα 

εκπροσωπεί. Κάθε θέμα γνώσης έχει ένα μοναδικό όνομα και συνδέεται με έναν NPC, ο οποίος 

αναλαμβάνει την παρουσίαση των ερωτήσεων. 

import sqlite3 

def init_db(): 
    conn = sqlite3.connect('topics.db') 

    cursor = conn.cursor() 
    cursor.execute(''' 
        CREATE TABLE IF NOT EXISTS topics ( 
            id INTEGER PRIMARY KEY AUTOINCREMENT, 

            topic_name TEXT UNIQUE NOT NULL, 
            npc_name TEXT NOT NULL 
        ) 
    ''')

 

 

Στον πίνακα topics καταχωρήθηκαν οι προκαθορισμένες θεματικές και τα ονόματα των NPCs.

 

    cursor.execute(''' 

        INSERT OR IGNORE INTO topics (topic_name, npc_name) VALUES 
        ('mathematics', 'Archimedes'), 
        ('geography', 'Magellan') 
    ''')