background image

 

 

33 

 

4.2. Δεύτερη Φάση Ανάπτυξης – Έκδοση 2 της εφαρμογής 

Στη  δεύτερη  φάση  της  υλοποίησης,  στόχος  ήταν  η  ενσωμάτωση  του  συστήματος 

συνομιλίας  (chat)  σε  ένα  περιβάλλον  παιχνιδιού.  Το  LLM  έπρεπε  να  εξειδικευτεί  σε 

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

αυτό, δημιουργήθηκαν δύο νέα αρχεία: το level.py και το topics.json. Το πρώτο αποτελεί το 

πρώιμο περιβάλλον του παιχνιδιού, ενώ το δεύτερο αποθηκεύει τα διαθέσιμα θέματα γνώσης. 

 

Περιβάλλον παιχνιδιού 

Το  περιβάλλον  του  παιχνιδιού  σχεδιάστηκε  ως  ένας  χάρτης  διαστάσεων  1000x1000 

pixels, ο οποίος αποτελείται από πλακίδια (tiles). Η τοποθέτηση των tiles γίνεται τυχαία, ώστε 

κάθε φορά που ξεκινά εκ νέου το παιχνίδι, ο χάρτης να μην είναι πανομοιότυπος. Η δημιουργία 

και  απόδοση  του  χάρτη  επιτυγχάνεται  μέσω  ενός  εμφωλευμένου  βρόχου  for,  ο  οποίος 

υπολογίζει τις θέσεις των tiles βάσει της θέσης του παίκτη και του πεδίου ορατότητας (field of 

view). 

    

#draw tiles in map with nested loop for x and y range 

    for y in range(first_y_pos, last_y_pos): 

        for x in range(first_x_pos, last_x_pos): 
#calculate screen positions based on players position and field of view for each tiles x and y 
coordinate 

            screen_x = (x - offset_x) * tile_size 
            screen_y = (y - offset_y) * tile_size   
            #draw each tile 
            pygame.draw.rect(screen, tilemap[y][x], (screen_x, screen_y, tile_size, tile_size)) 

 

Πεδίο ορατότητας – Field of view 

Το πεδίο ορατότητας (field of view) έχει οριστεί σε 30 x 20 πλακίδια (tiles). Το κάθε 

πλακίδιο έχει μέγεθος 40 pixels. Οι διαστάσεις της οθόνης του παιχνιδιού έχουν οριστεί 1200 

x 800, μέγεθος που ταιριάζει ικανοποιητικά στις περισσότερες οθόνες.

  

# set the size of each tile 

tile_size = 40 
# set the size of the map 

map_size = 1000 
#set screen dimensions 
screen_width, screen_height = 1200, 800 
#set the field of view dividing with the use of // to have an integer as a result. It represents 

the amount of tiles displayed on x and y axis 
field_of_view_x = screen_width // tile_size 
field_of_view_y = screen_height // tile_size