Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Εάν είστε προγραμματιστής παιχνιδιών που χρησιμοποιεί τη βιβλιοθήκη Pygame, πιθανότατα έχετε συναντήσει την κλάση Sprite. Η κλάση Sprite είναι ένα ισχυρό εργαλείο για τη δημιουργία χαρακτήρων παιχνιδιών που μπορείτε εύκολα να μετακινήσετε, να περιστρέψετε και να κλιμακώσετε στην οθόνη.

Με ένα απλό πρόγραμμα Python, μπορείτε να μάθετε για τη διαδικασία δημιουργίας χαρακτήρων παιχνιδιών που βασίζονται σε sprite στο Pygame. Μάθετε πώς μπορείτε να δημιουργήσετε μια βασική κλάση Sprite και, στη συνέχεια, προσθέστε χαρακτηριστικά και μεθόδους για τον έλεγχο της συμπεριφοράς.

Εισαγωγή στο Pygame’s Sprite Class

Η κλάση Sprite στο Pygame είναι μια κλάση κοντέινερ που περιέχει όλα τα χαρακτηριστικά και τις συμπεριφορές ενός χαρακτήρα παιχνιδιού. Προέρχεται από την κλάση Surface της Pygame, η οποία αντιπροσωπεύει μια εικόνα με σταθερό πλάτος και ύψος.

instagram viewer

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

Δημιουργία βασικής τάξης Sprite για έναν χαρακτήρα παιχνιδιού

Πρώτα, εγκαταστήστε τη μονάδα pygame χρησιμοποιώντας το pip. Κάντε το με αυτήν την εντολή:

κουκούτσι εγκαθιστώ pygame

Για να δημιουργήσετε ένα βασικό sprite, θα χρειαστεί να εισαγάγετε την κλάση Sprite από το Pygame και να δημιουργήσετε μια νέα κλάση που κληρονομεί από αυτήν. Στη συνέχεια, μπορείτε να ορίσετε τυχόν χαρακτηριστικά και μεθόδους που θέλετε να έχει ο χαρακτήρας του παιχνιδιού σας.

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

  • θέση: Μια πλειάδα που συγκρατεί τις συντεταγμένες x και y του sprite στην οθόνη.
  • ταχύτητα: Μια πλειάδα που συγκρατεί την ταχύτητα με την οποία το ξωτικό κινείται οριζόντια και κάθετα.

Και οι ακόλουθες μέθοδοι:

  • εκσυγχρονίζω(): Μια μέθοδος που ενημερώνει τη θέση του sprite με βάση την ταχύτητά του.
  • σχεδιάζω(): Μια μέθοδος που τραβάει το sprite στην οθόνη.

Ακολουθεί ένα παράδειγμα βασικής κλάσης Sprite που υλοποιεί αυτά τα χαρακτηριστικά και τις μεθόδους:

εισαγωγή pygame

τάξηΠαίχτης(pygame.sprite. Ξωτικό):
def__μέσα σε αυτό__(εαυτός, x, y, velocity_x, velocity_y):
σούπερ().__μέσα σε αυτό__()
εαυτός.position = (x, y)
εαυτός.velocity = (velocity_x, velocity_y)

defεκσυγχρονίζω(εαυτός):
εαυτός.θέση = (εαυτός.θέση[0] + εαυτός.ταχύτητα[0], εαυτός.θέση[1] + εαυτός.ταχύτητα[1])

defσχεδιάζω(εαυτός, επιφάνεια):
pygame.σχεδιάζω.κύκλος(επιφάνεια, (255, 0, 0), εαυτός.θέση, 10)

Η μέθοδος __init__ είναι ειδική μέθοδος σε τάξεις Python που εκτελείται όταν δημιουργείτε μια παρουσία της κλάσης. Μπορείτε να το χρησιμοποιήσετε για να αρχικοποιήσετε τα χαρακτηριστικά του στιγμιότυπου.

Σε αυτόν τον κώδικα, η μέθοδος __init__ της κλάσης Player παίρνει τέσσερα ορίσματα: x, y, velocity_x και velocity_y. Αυτά τα ορίσματα ορίζουν την αρχική θέση και την ταχύτητα του sprite του παίκτη.

Η μέθοδος __init__ καλεί επίσης τη μέθοδο super().__init__(), η οποία είναι η μέθοδος __init__ της γονικής κλάσης Sprite. Αυτό είναι απαραίτητο επειδή η κλάση Player είναι μια υποκλάση της κλάσης Sprite και η μέθοδος __init__ της κλάσης Sprite ορίζει ορισμένα χαρακτηριστικά που χρειάζονται όλα τα sprite.

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

Τώρα που έχετε μια βασική κλάση Sprite, μπορείτε να προσθέσετε χαρακτηριστικά και μεθόδους για να ελέγξετε τη συμπεριφορά του χαρακτήρα του παιχνιδιού σας. Αυτό μπορεί να περιλαμβάνει πράγματα όπως κίνηση, επίθεση, άλμα και άλλα.

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

Για παράδειγμα, μπορεί να θέλετε να προσθέσετε μια μέθοδο για τον έλεγχο της κίνησης του sprite, όπως μια μέθοδο move_left() που μειώνει την ταχύτητα του sprite στον άξονα x.

Ακολουθεί ένα παράδειγμα τροποποιημένης κλάσης Sprite που περιλαμβάνει αυτά τα πρόσθετα χαρακτηριστικά και μεθόδους:

τάξηΠαίχτης(pygame.sprite. Ξωτικό):
def__μέσα σε αυτό__(εαυτός, x, y, velocity_x, velocity_y):
σούπερ().__μέσα σε αυτό__()
εαυτός.position = (x, y)
εαυτός.velocity = (velocity_x, velocity_y)

defεκσυγχρονίζω(εαυτός):
εαυτός.θέση = (εαυτός.θέση[0] + εαυτός.ταχύτητα[0], εαυτός.θέση[1] + εαυτός.ταχύτητα[1])

defσχεδιάζω(εαυτός, επιφάνεια):
pygame.σχεδιάζω.κύκλος(επιφάνεια, (255, 0, 0), εαυτός.θέση, 10)

defκινήσου αριστερά(εαυτός):
εαυτός.ταχύτητα = (-1, εαυτός.ταχύτητα[1])

defκίνηση_δεξιά(εαυτός):
εαυτός.ταχύτητα = (1, εαυτός.ταχύτητα[1])

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

Ξεκινήστε δημιουργώντας ένα παράθυρο και ένα παράδειγμα του Player sprite:

# Αρχικοποιήστε το Pygame
pygame.init()

# Ορίστε το μέγεθος του παραθύρου
μέγεθος_παραθύρου = (640, 480)

# Δημιουργήστε ένα παράθυρο
παράθυρο = pygame.display.set_mode (μέγεθος_παραθύρου)

# Δημιουργήστε ένα sprite παίκτη
παίκτης = Παίκτης(320, 240, 0, 0)

Στη συνέχεια, ορίστε έναν κύριο βρόχο παιχνιδιού που χειρίζεται συμβάντα και ενημερώσεις πληκτρολογίου και σχεδιάζει το sprite. Όταν πατάτε το αριστερό ή το δεξί βέλος, το sprite θα κινηθεί προς την αντίστοιχη κατεύθυνση.

# Κύριος βρόχος παιχνιδιού
ενώΑληθής:
# Χειριστείτε συμβάντα
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.quit()
sys.exit()

αν event.type == pygame. KEYDOWN:
αν event.key == pygame. K_LEFT:
player.move_left()
ελιφ event.key == pygame. K_RIGHT:
player.move_right()

# Ενημερώστε το sprite του προγράμματος αναπαραγωγής
player.update()

# Καθαρίστε το παράθυρο
window.fill((255, 255, 255))

# Σχεδιάστε το sprite του παίκτη
player.draw (παράθυρο)

# Ενημερώστε την οθόνη
pygame.display.update()

Με το πρόγραμμα που προκύπτει, θα μπορείτε να ελέγχετε το sprite του player και να το παρατηρείτε να τραβάει στην οθόνη σε διαφορετικές θέσεις:

Φόρτωση και εμφάνιση γραφικών Sprite με χρήση της μονάδας εικόνας

Τώρα που έχετε μια βασική κλάση Sprite με χαρακτηριστικά και μεθόδους για τον έλεγχο της συμπεριφοράς, πιθανότατα θα θέλετε να προσθέσετε μερικά γραφικά στο sprite σας. Η μονάδα εικόνας της Pygame διευκολύνει τη φόρτωση και την εμφάνιση εικόνων στην οθόνη.

Για να φορτώσετε μια εικόνα, θα χρειαστεί να χρησιμοποιήσετε τη συνάρτηση pygame.image.load(), η οποία παίρνει μια διαδρομή αρχείου ως όρισμα και επιστρέφει ένα αντικείμενο Surface. Στη συνέχεια, μπορείτε να αντιστοιχίσετε αυτό το αντικείμενο Surface σε ένα χαρακτηριστικό sprite, όπως self.image, το οποίο μπορείτε να χρησιμοποιήσετε για να σχεδιάσετε το sprite στην οθόνη.

Για παράδειγμα, δείτε πώς μπορείτε να φορτώσετε μια εικόνα και να την αντιστοιχίσετε σε ένα sprite:

εισαγωγή pygame

τάξηΠαίχτης(pygame.sprite. Ξωτικό):
def__μέσα σε αυτό__(self, x, y, velocity_x, velocity_y, image_path):
σούπερ().__μέσα σε αυτό__()
εαυτός.position = (x, y)
εαυτός.velocity = (velocity_x, velocity_y)
εαυτός.image = pygame.image.load (image_path)

defεκσυγχρονίζω(εαυτός):
εαυτός.θέση = (εαυτός.θέση[0] + εαυτός.ταχύτητα[0], εαυτός.θέση[1] + εαυτός.ταχύτητα[1])

defσχεδιάζω(εαυτός, επιφάνεια):
επιφάνεια.μπλιτ(εαυτός.εικόνα, εαυτός.θέση)

defκινήσου αριστερά(εαυτός):
εαυτός.ταχύτητα = (-1, εαυτός.ταχύτητα[1])

defκίνηση_δεξιά(εαυτός):
εαυτός.ταχύτητα = (1, εαυτός.ταχύτητα[1])

Αυτός ο κώδικας ορίζει μια κλάση Player που επεκτείνει την κλάση Sprite του Pygame και περιλαμβάνει χαρακτηριστικά για θέση, ταχύτητα και εικόνας, καθώς και μεθόδους για την ενημέρωση της θέσης του ξωτικού, τη σχεδίαση του ξωτικού στην οθόνη και τον έλεγχο κίνηση.

Μπορείτε να το ελέγξετε αυτό Αποθετήριο GitHub για τον πλήρη κώδικα!

Βελτιώστε τη διαχείριση Sprite με την κλάση Sprite

Η κλάση Sprite παρέχει ένα βολικό κοντέινερ για όλα τα χαρακτηριστικά και τις συμπεριφορές ενός χαρακτήρα παιχνιδιού, καθιστώντας εύκολη την ενημέρωση, τη σχεδίαση και τον έλεγχο του sprite στην οθόνη.

Εφαρμόζοντας μια κλάση Sprite στο παιχνίδι Pygame, μπορείτε να βελτιώσετε τη συνολική εμπειρία για τους παίκτες σας και να βελτιώσετε τη διαδικασία ανάπτυξης για τον εαυτό σας.