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')
''')