34
Η θέση του παίκτη καθορίζει το οπτικό του πεδίο, δημιουργώντας την αίσθηση ότι η
κάμερα τον ακολουθεί.
#setting positions within the tilemap based on field of view
#first_x_pos and first_y_pos won’t be less than 0
first_x_pos = max(0, player_pos[0] - field_of_view_x // 2)
first_y_pos = max(0, player_pos[1] - field_of_view_y // 2)
#last_x_pos and last_y_pos won’t exceed map_size
last_x_pos = min(map_size, player_pos[0] + field_of_view_x // 2)
last_y_pos = min(map_size, player_pos[1] + field_of_view_y // 2)
#calculate the offset based on the player's position to adjust it with the field of view
offset_x = player_pos[0] - field_of_view_x // 2
offset_y = player_pos[1] - field_of_view_y // 2
#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
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))
# draw the player based on his movement
player_screen_x = (player_pos[0] - offset_x) * tile_size
player_screen_y = (player_pos[1] - offset_y) * tile_size
pygame.draw.rect(screen, player_color, (player_screen_x, player_screen_y, tile_size,
tile_size))
NPCs (Μη παικτικοί χαρακτήρες)
Στο περιβάλλον του παιχνιδιού προστέθηκαν δύο NPCs, καθένας από τους οποίους
εξειδικεύεται σε ένα γνωστικό αντικείμενο:
• Ο πρώτος NPC είναι ειδικός στα Μαθηματικά.
• Ο δεύτερος NPC έχει γνώση της Γεωγραφίας.
Η θέση και η θεματική τους αποθηκεύονται σε ένα λεξικό.
#a dictionary with npcs information
npcs = {
"npc1":{"name": "Npc1", "pos":[player_pos[0]+1, player_pos[1]],
"color": pygame.Color('yellow'),"topic": "mathematics"},
"npc2":{"name":"Npc2","pos":[player_pos[0]
-
1,
player_pos[1]],
"color":
pygame.Color('green'), "topic": "geography"}}
Αντικείμενα Γνώσης – Knowledge topics
Τα αντικείμενα γνώσης (knowledge topics) φορτώνονται από ένα εξωτερικό αρχείο
JSON, το οποίο περιλαμβάνει όλες τις σχετικές πληροφορίες. Αυτό εξασφαλίζει την καλύτερη
διαχείριση των θεματικών, καθώς επιτρέπει εύκολη προσθήκη νέων ή επεξεργασία των ήδη
υπάρχουσων.
"topics": ["mathematics","geography"]