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

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

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

Δημιουργία ενός απλού παιχνιδιού

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

Μπορείτε να βρείτε τον πλήρη κωδικό σε αυτό Αποθετήριο GitHub.

Ξεκινήστε εισάγοντας την απαραίτητη ενότητα PyGame και αρχικοποιώντας την.

εισαγωγή pygame

pygame.init()

Στη συνέχεια, ρυθμίστε την οθόνη και δημιουργήστε το πρόγραμμα αναπαραγωγής και τα αντικείμενα του εχθρού χρησιμοποιώντας το pygame. Rect() λειτουργία.

instagram viewer
# Ρυθμίστε την οθόνη
οθόνη = pygame.display.set_mode((800, 600))

# Ρυθμίστε τα χρώματα
μαύρο = (0, 0, 0)
λευκό = (255, 255, 255)

# Ρυθμίστε το ορθογώνιο του παίκτη και το εχθρικό αντικείμενο
παίκτης = pygame. Rect(350, 500, 50, 50)
εχθρός = pygame. Rect(350, 0, 50, 50)

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

# Ρυθμίστε τον βρόχο παιχνιδιού
τρέξιμο = Αληθής

ενώ τρέξιμο:
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
τρέξιμο = Ψευδής

# Γεμίστε την οθόνη με λευκό
screen.fill (λευκό)

# Μετακινήστε το ορθογώνιο αναπαραγωγής
keys = pygame.key.get_pressed()

αν κλειδιά[pygame. K_LEFT]:
παίκτης.χ -= 5

αν κλειδιά[pygame. K_RIGHT]:
παίκτης.χ += 5

αν κλειδιά[pygame. K_UP]:
παίκτης.y -= 5

αν κλειδιά[pygame. K_DOWN]:
player.y += 5

# Ελέγξτε για σύγκρουση μεταξύ παίκτη και εχθρού
αν player.colliderect (εχθρός):
τρέξιμο = Ψευδής

# Σχεδιάστε το ορθογώνιο του παίκτη και το εχθρικό αντικείμενο στην οθόνη
pygame.draw.rect (οθόνη, μαύρο, πρόγραμμα αναπαραγωγής)
pygame.draw.rect (οθόνη, μαύρο, εχθρός)

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

# Κλείστε το παιχνίδι
pygame.quit()

Άμεσοι εχθροί προς τον παίκτη

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

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

# Υπολογίστε την απόσταση μεταξύ του εχθρού και του παίκτη
απόσταση_χ = παίκτης.χ - εχθρός.χ
απόσταση_υ = παίκτης.υ - εχθρός.υ
απόσταση = (απόσταση_x ** 2 + απόσταση_υ ** 2) ** 0.5

# Μετακινήστε τον εχθρό προς τον παίκτη
ταχύτητα = 2

αν απόσταση != 0:
εχθρός.χ += ταχύτητα * απόσταση_χ / απόσταση
εχθρός.y += ταχύτητα * απόσταση_υ / απόσταση

Τυχαιοποιήστε την κίνηση του εχθρού στην οθόνη

Μπορείτε επίσης να κάνετε τον εχθρό να κινείται τυχαία στην οθόνη για να κάνετε το παιχνίδι πιο προκλητικό.

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

εισαγωγή τυχαίος

# Μετακινήστε τον εχθρό τυχαία στην οθόνη
κατεύθυνση = random.choice(['αριστερά', 'σωστά', 'πάνω', 'κάτω'])

αν κατεύθυνση == 'αριστερά':
εχθρός.χ -= 5
ελιφ κατεύθυνση == 'σωστά':
εχθρός.χ += 5
ελιφ κατεύθυνση == 'πάνω':
εχθρός.y -= 5
ελιφ κατεύθυνση == 'κάτω':
εχθρός.y += 5

Κίνημα εχθρού που βασίζεται στην εγγύτητα

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

Εάν η απόσταση είναι μικρότερη από μια ορισμένη τιμή, κάντε τον εχθρό να κινηθεί προς τον παίκτη. Αυτό κάνει το παιχνίδι πιο στρατηγικό και αναγκάζει τον παίκτη να είναι πιο προσεκτικός στις κινήσεις του.

# Μετακινήστε τον εχθρό προς τον παίκτη εάν ο παίκτης είναι κοντά
ταχύτητα = 2

αν απόσταση < 300:
αν απόσταση != 0:
εχθρός.χ += ταχύτητα * απόσταση_χ / απόσταση
εχθρός.y += ταχύτητα * απόσταση_υ / απόσταση

Ο εχθρός αποφεύγει τις επιθέσεις παικτών

Μπορείτε επίσης να κάνετε τον εχθρό να αποφύγει την κίνηση του παίκτη. Ο εχθρός θα προσπαθήσει να αποφύγει τον παίκτη κινούμενος κάθετα στη θέση του παίκτη.

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

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

ταχύτητα = 2

αν απόσταση < 400:
αν απόσταση != 0:
# Υπολογίστε το διάνυσμα μονάδας προς τη συσκευή αναπαραγωγής
unit_vector_x = απόσταση_x / απόσταση
unit_vector_y = απόσταση_y / απόσταση

# Υπολογίστε το κάθετο διάνυσμα
perpendicular_vector_x = -unit_vector_y
perpendicular_vector_y = unit_vector_x

# Υπολογίστε το γινόμενο της τελείας του κάθετου διανύσματος και του
# μονάδα διάνυσμα
τελεία_προϊόν = κάθετο_διάνυσμα_χ * μονάδα_διάνυσμα_χ
+ perpendicular_vector_y * unit_vector_y

# Μετακινήστε τον εχθρό κάθετα στο μοναδιαίο διάνυσμα
αν dot_product > 0:
εχθρός.χ += ταχύτητα * κάθετος_διάνυσμα_χ
εχθρός.y += ταχύτητα * perpendicular_vector_y
αλλού:
εχθρός.χ -= ταχύτητα * κάθετος_διάνυσμα_χ
εχθρός.y -= ταχύτητα * perpendicular_vector_y

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

Προσθήκη επιπλέον λειτουργιών

Μπορείτε επίσης να προσθέσετε περισσότερες δυνατότητες στο παιχνίδι σας για να το κάνετε πιο δύσκολο. Για παράδειγμα, μπορείτε να προσθέσετε πολλούς εχθρούς που κινούνται τυχαία στην οθόνη, εμπόδια που πρέπει να αποφύγει ο παίκτης ενώ κινείται, power-ups που ενισχύουν τις ικανότητες του παίκτη και ούτω καθεξής.

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

# Προσθέστε πολλούς εχθρούς που κινούνται τυχαία στην οθόνη
εχθροί = []

Για Εγώ σε εύρος(5):
εχθρός = pygame. Rect (random.randint(0, 750), random.randint(0, 550), 50,
50)

enemies.append (εχθρός)

# Προσθέστε εμπόδια που πρέπει να αποφύγει ο παίκτης
εμπόδιο = pygame. Rect(200, 250, 50, 50)

# Ρυθμίστε τον βρόχο παιχνιδιού
ρολόι = pygame.ώρα. Ρολόι()
τρέξιμο = Αληθής

ενώ τρέξιμο:
Για Εκδήλωση σε pygame.event.get():
αν event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
τρέξιμο = Ψευδής

# Γεμίστε την οθόνη με λευκό
screen.fill (λευκό)

# Μετακινήστε το ορθογώνιο αναπαραγωγής
keys = pygame.key.get_pressed()

αν κλειδιά[pygame. K_LEFT]:
παίκτης.χ -= 5
αν κλειδιά[pygame. K_RIGHT]:
παίκτης.χ += 5
αν κλειδιά[pygame. K_UP]:
παίκτης.y -= 5
αν κλειδιά[pygame. K_DOWN]:
player.y += 5

# Μετακινήστε τους εχθρούς τυχαία στην οθόνη
Για εχθρός σε εχθροί:
κατεύθυνση = random.choice(['αριστερά', 'σωστά', 'πάνω', 'κάτω'])

αν κατεύθυνση == 'αριστερά':
εχθρός.χ -= 5
ελιφ κατεύθυνση == 'σωστά':
εχθρός.χ += 5
ελιφ κατεύθυνση == 'πάνω':
εχθρός.y -= 5
ελιφ κατεύθυνση == 'κάτω':
εχθρός.y += 5

# Ελέγξτε για σύγκρουση μεταξύ παίκτη και εχθρού
αν player.colliderect (εχθρός):
τρέξιμο = Ψευδής

# Σχεδιάστε το ορθογώνιο του παίκτη, τα εχθρικά αντικείμενα και το εμπόδιο
# η οθόνη
pygame.draw.rect (οθόνη, μαύρο, πρόγραμμα αναπαραγωγής)

Για εχθρός σε εχθροί:
pygame.draw.rect (οθόνη, μαύρο, εχθρός)

pygame.draw.rect (οθόνη, μαύρο, εμπόδιο)

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

# Ορίστε τον ρυθμό καρέ του παιχνιδιού
clock.tick(60)

# Κλείστε το παιχνίδι
pygame.quit()

Βελτιώστε την εμπειρία παιχνιδιού σας με εχθρούς

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