Κάντε την εμπειρία παιχνιδιού σας πιο καθηλωτική, εφαρμόζοντας ένα σύστημα διαλόγου.
Η εφαρμογή ενός συστήματος διαλόγου στο Pygame μπορεί να βελτιώσει σημαντικά τη διαδραστική εμπειρία ενός παιχνιδιού. Ένα σύστημα διαλόγου επιτρέπει στο παιχνίδι να παρουσιάζει συνομιλίες, μηνύματα και επιλογές στον παίκτη, δημιουργώντας ένα πιο καθηλωτικό και συναρπαστικό παιχνίδι.
Η βιβλιοθήκη Pygame παρέχει τα απαραίτητα εργαλεία για τη δημιουργία μιας γραφικής διεπαφής χρήστη (GUI) και τη διαχείριση των εισροών χρήστη, καθιστώντας την ιδανική επιλογή για την υλοποίηση ενός συστήματος διαλόγου.
Δημιουργήστε ένα απλό παιχνίδι
Πριν ξεκινήσετε, βεβαιωθείτε ότι έχετε pip εγκατεστημένο στο σύστημά σας. Χρησιμοποιήστε αυτήν την εντολή για να εγκαταστήσετε το pygame βιβλιοθήκη:
pip εγκατάσταση pygame
Μετά από αυτό, ξεκινήστε δημιουργώντας ένα απλό παιχνίδι όπου ο παίκτης μπορεί να κινηθεί αριστερά και δεξιά αποφεύγοντας έναν εχθρό.
Ο κώδικας που χρησιμοποιείται σε αυτό το άρθρο είναι διαθέσιμος σε αυτό Αποθετήριο GitHub και είναι δωρεάν για χρήση βάσει της άδειας MIT.
Το παρακάτω απόσπασμα κώδικα ρυθμίζει το παράθυρο του παιχνιδιού, προετοιμάζει τις ιδιότητες του παίκτη και του εχθρού και εκτελεί τον βρόχο του παιχνιδιού.
# Εισαγάγετε τις απαραίτητες βιβλιοθήκες
εισαγωγή pygame
από pygame.τοπικά εισαγωγή *pygame.init()
# Ρυθμίστε το παράθυρο του παιχνιδιού
screen_width, screen_height = 800, 600
οθόνη = pygame.display.set_mode((πλάτος_οθόνης, ύψος_οθόνης))
pygame.display.set_caption("Το παιχνίδι μου")# Καθορίστε τα χρώματα
ΜΑΥΡΟ = (0, 0, 0)
ΛΕΥΚΟ = (255, 255, 255)
ΓΚΡΙ = (128, 128, 128)# Ιδιότητες παίκτη
παίκτης_χ = 400
παίκτης_υ = 500
παίκτη_ταχύτητα = 5# Εχθρικές ιδιότητες
εχθρός_χ = 400
εχθρός_υ = 100
εχθρός_ταχύτητα = 3τρέξιμο = Αληθής
ρολόι = pygame.ώρα. Ρολόι()ενώ τρέξιμο:
Για Εκδήλωση σε pygame.event.get():
αν event.type == QUIT:
τρέξιμο = Ψευδήςkeys = pygame.key.get_pressed()
# Κίνηση παίκτη
αν κλειδιά[K_LEFT] και player_x > 0:
player_x -= player_speed
αν κλειδιά[K_RIGHT] και player_x < screen_width - player_speed:
player_x += player_speed# Ενημερώστε τη θέση του εχθρού
εχθρός_υ += εχθρός_ταχύτητα
αν εχθρός_υ > ύψος_οθόνης:
εχθρός_υ = -50# Ελέγξτε τη σύγκρουση
αν pygame. Rect (player_x, player_y, 50, 50) .colliderect (pygame. Rect (enmy_x, εχθρός_y, 50, 50)):
# Εφαρμογή του πλαισίου διαλόγου εδώ
πέρασμαscreen.fill (ΜΑΥΡΟ)
pygame.draw.rect (οθόνη, ΛΕΥΚΟ, (player_x, player_y, 50, 50))
pygame.draw.rect (οθόνη, ΛΕΥΚΟ, (enmy_x, εχθρός_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Παρακάτω είναι η έξοδος:
Δημιουργία πλαισίου διαλόγου
Για να εφαρμόσετε ένα πλαίσιο διαλόγου, πρέπει να το εμφανίζετε κάθε φορά που ο παίκτης αγγίζει τον εχθρό. Πρόσθεσε το πλαίσιο διαλόγου μεταβλητή, η οποία ελέγχει εάν το πλαίσιο διαλόγου θα πρέπει να εμφανίζεται ή όχι.
Μέσα στον βρόχο του παιχνιδιού, ελέγξτε για σύγκρουση μεταξύ παίκτη και εχθρού, και αν υπάρχει σύγκρουση, ορίστε πλαίσιο διαλόγου προς την Αληθής. Μέσα στην συνθήκη όπου πλαίσιο διαλόγου είναι Αληθής, σχεδιάστε ένα γκρι ορθογώνιο στην οθόνη χρησιμοποιώντας pygame.draw.rect() για να αναπαραστήσετε το πλαίσιο διαλόγου.
Δημιουργήστε ένα νέο αρχείο με όνομα διάλογος.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:
# Ιδιότητες πλαισίου διαλόγου
πλάτος_κουτιού_διαλόγου = 400
dialogue_box_ύψος = 200
dialogue_box_x = (screen_width - dialogue_box_width) // 2
dialogue_box_y = (screen_height - dialogue_box_height) // 2
πλαίσιο_διαλόγου = Ψευδής
# ...
ενώ τρέξιμο:
Για Εκδήλωση σε pygame.event.get():
αν event.type == QUIT:
τρέξιμο = Ψευδής
keys = pygame.key.get_pressed()
# Κίνηση παίκτη
αν κλειδιά[K_LEFT] και player_x > 0:
player_x -= player_speed
αν κλειδιά[K_RIGHT] και player_x < screen_width - player_speed:
player_x += player_speed
# Ενημερώστε τη θέση του εχθρού
εχθρός_υ += εχθρός_ταχύτητα
αν εχθρός_υ > ύψος_οθόνης:
εχθρός_υ = -50
# Ελέγξτε τη σύγκρουση
αν pygame. Rect (player_x, player_y, 50, 50) .colliderect (pygame. Rect (enmy_x, εχθρός_y, 50, 50)):
πλαίσιο_διαλόγου = Αληθής
screen.fill (ΜΑΥΡΟ)
αν πλαίσιο_διαλόγου:
pygame.draw.rect (οθόνη, ΓΚΡΙ, (dialogue_box_x,
dialogue_box_y,
dialogue_box_width,
dialogue_box_ύψος))
# Προσθέστε κείμενο διαλόγου και κουμπιά εδώ
αλλού:
pygame.draw.rect (οθόνη, ΛΕΥΚΟ, (player_x, player_y, 50, 50))
pygame.draw.rect (οθόνη, ΛΕΥΚΟ, (enmy_x, εχθρός_y, 50, 50))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Παρακάτω είναι η έξοδος:
Τώρα, για να κάνετε το πλαίσιο διαλόγου πιο λειτουργικό και διαδραστικό, μπορείτε να προχωρήσετε στην προσθήκη κουμπιών και κειμένου.
Προσθήκη κουμπιών χρησιμοποιώντας Python GUI
Για να προσθέσετε κουμπιά στο πλαίσιο διαλόγου, μπορείτε να χρησιμοποιήσετε μια βιβλιοθήκη Python GUI όπως Pygame GUI ή PySimpleGUI.
Εγκαταστήστε και εισαγάγετε το pygame_gui ενότητα και, στη συνέχεια, δημιουργήστε έναν διαχειριστή GUI Pygame χρησιμοποιώντας pygame_gui. UImanager. Μετά από αυτό, δημιουργήστε ένα κουμπί χρησιμοποιώντας το Κουμπί UI κλάση που παρέχεται από τη βιβλιοθήκη Python GUI.
Μέσα στο βρόχο παιχνιδιού, προσθέστε manager.update (pygame.time.get_ticks() / 1000.0) για ενημέρωση του διαχειριστή GUI και manager.draw_ui (οθόνη) για να σχεδιάσετε τα στοιχεία GUI στην οθόνη.
Δημιουργήστε ένα νέο αρχείο με όνομα buttons.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:
εισαγωγή pygame_gui# Διαχειριστής GUI Pygame
manager = pygame_gui. UImanager((πλάτος_οθόνης, ύψος_οθόνης))# Δημιουργήστε ένα κουμπί
button_width = 100
κουμπί_ύψος = 30
button_x = dialogue_box_x + (dialogue_box_width - button_width) // 2
button_y = dialogue_box_y + (dialogue_box_height - button_height) // 2
κουμπί = pygame_gui.elements. UIButton (relative_rect=pygame. Rect (button_x, button_y, button_width, button_height),
κείμενο='Κλικ μου',
διευθυντής=διευθυντής)τρέξιμο = Αληθής
ρολόι = pygame.ώρα. Ρολόι()ενώ τρέξιμο:
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
τρέξιμο = Ψευδήςmanager.process_events (γεγονός)
keys = pygame.key.get_pressed()
# Ελέγξτε τη σύγκρουση
αν pygame. Rect (player_x, player_y, 50, 50) .colliderect (pygame. Rect (enmy_x, εχθρός_y, 50, 50)):
πλαίσιο_διαλόγου = Αληθήςscreen.fill (ΜΑΥΡΟ)
αν πλαίσιο_διαλόγου:
pygame.draw.rect (οθόνη, ΓΚΡΙ, (dialogue_box_x,
dialogue_box_y,
dialogue_box_width,
dialogue_box_ύψος))
manager.update (pygame.time.get_ticks() / 1000.0)
manager.draw_ui (οθόνη)
αλλού:
pygame.draw.rect (οθόνη, ΛΕΥΚΟ, (player_x, player_y, 50, 50))
pygame.draw.rect (οθόνη, ΛΕΥΚΟ, (enmy_x, εχθρός_y, 50, 50))pygame.display.flip()
clock.tick(60)
pygame.quit()
Παρακάτω είναι η έξοδος:
Με αυτές τις αλλαγές, το κουμπί θα πρέπει τώρα να είναι ορατό μέσα στο πλαίσιο διαλόγου όταν εμφανιστεί.
Προσθήκη κειμένου χρησιμοποιώντας Python GUI
Για να εμφανίσετε προσαρμοσμένο κείμενο στο πλαίσιο διαλόγου, μπορείτε να χρησιμοποιήσετε τη λειτουργικότητα κειμένου που παρέχεται από τη βιβλιοθήκη GUI της Python.
Καθορίστε τις ιδιότητες γραμματοσειράς χρησιμοποιώντας pygame.font. Γραμματοσειρά(). Δημιουργώ ένα κείμενο μεταβλητή με το επιθυμητό περιεχόμενο και, στη συνέχεια, αποδώστε το χρησιμοποιώντας τη γραμματοσειρά και το χρώμα που καθορίσατε.
Δημιουργήστε ένα νέο αρχείο με όνομα text.py και προσθέστε τον κωδικό με τις παρακάτω ενημερώσεις:
# Εκκινήστε το Pygame GUI manager
manager = pygame_gui. UImanager((πλάτος_οθόνης, ύψος_οθόνης))# Καθορισμός ιδιοτήτων γραμματοσειράς
γραμματοσειρά = pygame.font. Γραμματοσειρά(Κανένας, 24)
text_color = ΜΑΥΡΟ# ...
ενώ τρέξιμο:
# ...αν πλαίσιο_διαλόγου:
pygame.draw.rect (οθόνη, ΓΚΡΙ, (dialogue_box_x,
dialogue_box_y,
dialogue_box_width,
dialogue_box_ύψος))# Προσθήκη κειμένου στο πλαίσιο διαλόγου
κείμενο = "Γεια σας, καλώς ήρθατε στο παιχνίδι!"
rendered_text = font.render (κείμενο, Αληθής, χρώμα κειμένου)
text_rect = rendered_text.get_rect (center=(dialogue_box_x + dialogue_box_width // 2,
dialogue_box_y + dialogue_box_height // 2))
screen.blit (rendered_text, text_rect)
Παρακάτω είναι η έξοδος:
Συμπεριλαμβανομένων πρόσθετων χαρακτηριστικών
Εκτός από τα κουμπιά και το κείμενο, υπάρχουν πολλές άλλες δυνατότητες που μπορείτε να προσθέσετε στο σύστημα διαλόγου σας στο Pygame. Ακολουθούν μερικά ακόμη παραδείγματα:
Συναισθήματα χαρακτήρων
Εμφανίστε συναισθήματα ή εκφράσεις προσώπου για χαρακτήρες κατά τη διάρκεια διαλόγου για να μεταφέρετε τη διάθεσή τους ή τις αντιδράσεις τους. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας κινούμενα sprites ή επικαλύψεις εικόνων που αλλάζουν με βάση το πλαίσιο της συνομιλίας.
Διάλογοι υπό όρους
Χρησιμοποιήστε δηλώσεις υπό όρους για να ενεργοποιήσετε συγκεκριμένους διαλόγους με βάση ορισμένα κριτήρια, όπως η πρόοδος του παίκτη, οι προηγούμενες επιλογές ή τα γεγονότα εντός του παιχνιδιού. Αυτό προσθέτει βάθος και εξατομικευμένες αλληλεπιδράσεις με βάση τις ενέργειες του παίκτη.
Φωνές
Βελτιώστε την εμβάπτιση του συστήματος διαλόγων ενσωματώνοντας φωνητική δράση για διαλόγους χαρακτήρων. Αναπαραγωγή κλιπ ήχου στο Pygame που ταιριάζουν με το κείμενο που εμφανίζεται στο πλαίσιο διαλόγου για να δώσουν στους χαρακτήρες μια ξεχωριστή φωνή.
Ενσωματώνοντας αυτές τις πρόσθετες λειτουργίες, μπορείτε να δημιουργήσετε ένα πιο δυναμικό και συναρπαστικό σύστημα διαλόγου που ενισχύει τη βύθιση του παίκτη και παρέχει μια μοναδική εμπειρία παιχνιδιού.
Βέλτιστες πρακτικές για την προσθήκη συστήματος διαλόγου
Κατά την εφαρμογή ενός συστήματος διαλόγου στο Pygame, είναι σημαντικό να ακολουθείτε ορισμένες βέλτιστες πρακτικές για να εξασφαλίσετε αποτελεσματικότητα, δυνατότητα συντήρησης και ομαλή εμπειρία παίκτη. Ακολουθούν ορισμένες πρόσθετες βέλτιστες πρακτικές που πρέπει να λάβετε υπόψη:
Χρησιμοποιήστε Σχεδίαση βάσει δεδομένων
Αποθηκεύστε περιεχόμενο διαλόγου, συμπεριλαμβανομένου κειμένου, πληροφοριών ηχείου και επιλογών διαλόγου, σε εξωτερικά αρχεία δεδομένων (π.χ. JSON, XML). Αυτό επιτρέπει την εύκολη τροποποίηση, εντοπισμό και διαχείριση του περιεχομένου του διαλόγου χωρίς να απαιτούνται αλλαγές κώδικα.
Εφαρμογή Διαχειριστή Διαλόγου
Δημιουργήστε μια ειδική κλάση ή λειτουργική μονάδα διαχείρισης διαλόγου που χειρίζεται τη λογική για τη διαχείριση των αλληλεπιδράσεων διαλόγου. Αυτό βοηθά στη διατήρηση του κώδικα οργανωμένο και επιτρέπει την ευκολότερη συντήρηση και επεκτασιμότητα.
Playtesting και εξισορρόπηση
Παίξτε τακτικά και εξισορροπήστε το σύστημα διαλόγου για να διασφαλίσετε ότι οι διάλογοι ρέουν φυσικά, οι επιλογές έχουν σημαντικές συνέπειες και ότι ο ρυθμός ευθυγραμμίζεται με τη συνολική εμπειρία παιχνιδιού. Συλλέξτε σχόλια από τους παίκτες και επαναλάβετε το περιεχόμενο και τη δομή του διαλόγου για να βελτιώσετε την αφοσίωση των παικτών.
Υποστήριξη τοπικής προσαρμογής
Σχεδιάστε το σύστημα διαλόγου με γνώμονα την τοπική προσαρμογή από την αρχή. Διαχωρίστε τις συμβολοσειρές κειμένου από τον κώδικα και χρησιμοποιήστε αρχεία γλώσσας ή βιβλιοθήκες τοπικής προσαρμογής για να υποστηρίξετε πολλές γλώσσες. Αυτό επιτρέπει την ευκολότερη μετάφραση και εντοπισμό του περιεχομένου του διαλόγου.
Ακολουθώντας αυτές τις βέλτιστες πρακτικές, μπορείτε να διασφαλίσετε ότι το σύστημα διαλόγου σας είναι καλά σχεδιασμένο, αποτελεσματικό και ευέλικτο, επιτρέποντας ευκολότερη συντήρηση και ενημερώσεις καθώς εξελίσσεται το παιχνίδι σας.
Κάντε τα παιχνίδια πιο ελκυστικά με το σύστημα διαλόγου
Η προσθήκη ενός συστήματος διαλόγου στο παιχνίδι σας μπορεί να το κάνει πιο ελκυστικό, επιτρέποντας στους παίκτες να αλληλεπιδρούν με χαρακτήρες που δεν είναι παίκτες (NPC), να αποκαλύπτουν ιστορίες, να κάνουν επιλογές και να αποκτούν πολύτιμες πληροφορίες.
Θυμηθείτε να σχεδιάσετε προσεκτικά τη δομή του διαλόγου, να χρησιμοποιήσετε μια αρθρωτή προσέγγιση και να εξετάσετε το ενδεχόμενο να ενσωματώσετε συλλεκτικά αντικείμενα και επίπεδα για να εμπλουτίσετε περαιτέρω την εμπειρία του παίκτη.