background image

 

 

37 

 

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

    # make sure knowlwdge_topic is a global variable 
    global knowledge_topic 
    # take the data received and create a dict named data to access json file 

    data = request.get_json() 
    # returns the message received 
    topic = data.get('topic') 
    #check if topic exists in available topics 

    if topic in topics: 
        knowledge_topic = topic 
        print("Received knowledge topic:", knowledge_topic) 
        return jsonify({'message': f'Knowledge topic updated to {knowledge_topic}'}) 

    else: 
        return jsonify({'error': 'Invalid topic provided'}) 

 

 

Συνομιλία (Chat) στο παιχνίδι 

Η συνομιλία (chat) εμφανίζεται σε μια ειδική επιφάνεια (surface) μέσα στο παράθυρο 

του παιχνιδιού. Αυτή η επιφάνεια ενεργοποιείται και απενεργοποιείται κάνοντας κλικ πάνω σε 

κάποιον NPC. 

 

chat_surface = pygame.Surface((400, 600)) 
# set the transparency so the game screen can be semi-visible behind chat_surface 

chat_surface.set_alpha(200) 

 

Μόλις ο χρήστης πατήσει το κουμπί του ποντικιού, το πρόγραμμα ανιχνεύει το συμβάν 

MOUSEBUTTONDOWN και αποθηκεύει τις συντεταγμένες του σημείου όπου έγινε το κλικ. 

Στη  συνέχεια,  γίνεται  προσπέλαση  σε  όλους  τους  NPCs  που  υπάρχουν  στο  παιχνίδι  και  οι 

συντεταγμένες τους στο παιχνίδι (global coordinates) μετατρέπονται σε συντεταγμένες οθόνης 

(screen coordinates), λαμβάνοντας υπόψη τη θέση του παίκτη και το οπτικό του πεδίο (field of 

view). Το tile_size αντιπροσωπεύει το μέγεθος ενός τετραγώνου στο grid του παιχνιδιού, και 

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

Αν  το  chat  ήταν  ανενεργό,  ενεργοποιείται,  ενώ  αν  ήταν  ήδη  ενεργό,  απενεργοποιείται. 

Παράλληλα, αποθηκεύονται τα δεδομένα του NPC, όπως το όνομά του και το θέμα γνώσης 

που θα συζητηθεί, ενώ η set_knowledge_topic (knowledge_topic) καλείται για να ενημερώσει 

τη  θεματική  του  διαλόγου.  Τέλος,  αν  ο  χρήστης  έκανε  κλικ  και  απενεργοποίησε  το  chat, 

καλείται  η  restart_chat()  ώστε  να  γίνει  επανεκκίνηση  της  συνομιλίας  εφόσον  αυτή 

ενεργοποιηθεί ξανά.