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

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

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

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

Για να ξεκινήσετε, πρέπει να εισαγάγετε τις απαραίτητες ενότητες. Θα χρησιμοποιείτε το pygame μονάδα για πρόσβαση στις λειτουργίες του PyGame. Για να εγκαταστήσετε τη μονάδα, μπορείτε χρησιμοποιήστε τον διαχειριστή πακέτων pip:

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

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

εισαγωγή pygame
pygame.μέσα σε αυτό()

screen_width = 750
Ύψος_οθόνης = 450
οθόνη = pygame.display.set_mode((πλάτος_οθόνης, ύψος_οθόνης))

εμπόδιο_x = 400
εμπόδιο_y = 400
πλάτος_εμποδίου = 40
εμπόδιο_ύψος = 40
player_x = 200
player_y = 400
πλάτος_player = 20
Ύψος παίκτη = 20

ενώΑληθής:

ΓιαΕκδήλωσησεpygame.Εκδήλωση.παίρνω():

if event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.εγκαταλείπω()
εγκαταλείπω()


keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_LEFT]:
παίκτης_x -= 5
ανκλειδιά[pygame. K_RIGHT]:
παίκτης_x += 5


αν player_x + player_width > εμπόδιο_x και player_x < εμπόδιο_χ + εμπόδιο_πλάτοςκαιplayer_y + παίκτης_ύψος > εμπόδιο_υ και παίκτη_υ < εμπόδιο_υ + εμπόδιο_ύψος:
παιχνίδι_πάνω = Αληθής


οθόνη.γέμισμα((0, 0, 0))
pygame.σχεδιάζω.ορθ(οθόνη, (255, 0, 0), (εμπόδιο_χ, εμπόδιο_υ, εμπόδιο_πλάτος, εμπόδιο_ύψος))
pygame.σχεδιάζω.ορθ(οθόνη, (0, 255, 0), (player_x, player_y, player_width, παίκτης_ύψος))
pygame.απεικόνιση.εκσυγχρονίζω()

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

Δημιουργία του μενού Έναρξη

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

κατάσταση_παιχνιδιού = "αρχικο ΜΕΝΟΥ"

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

defdraw_start_menu():
οθόνη.γέμισμα((0, 0, 0))
γραμματοσειρά = pygame.font. SysFont('arial', 40)
title = font.render("Το παιχνίδι μου", Αληθής, (255, 255, 255))
start_button = font.render('Αρχή', Αληθής, (255, 255, 255))
screen.blit (τίτλος, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.απεικόνιση.εκσυγχρονίζω()

Στη συνέχεια, μπορείτε να προσθέσετε το draw_start_menu() λειτουργία στον κύριο βρόχο παιχνιδιού.

ενώΑληθής: 

ΓιαΕκδήλωσησεpygame.Εκδήλωση.παίρνω():
if event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.εγκαταλείπω()
εγκαταλείπω()

αν κατάσταση_παιχνιδιού == "αρχικο ΜΕΝΟΥ":
draw_start_menu()

αν κατάσταση_παιχνιδιού == "παιχνίδι":
keys = pygame.key.get_pressed()
# υπόλοιπο κώδικα

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

αν κατάσταση_παιχνιδιού == "αρχικο ΜΕΝΟΥ":
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_SPACE]:
player_x = 200
player_y = 400
κατάσταση_παιχνιδιού = "παιχνίδι"
παιχνίδι_πάνω = Ψευδής

Με αυτόν τον κωδικό, το παιχνίδι θα ξεκινήσει όταν ο χρήστης πατήσει το κουμπί έναρξης.

Υλοποίηση του Game Over Screen

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

defdraw_game_over_screen():
οθόνη.γέμισμα((0, 0, 0))
γραμματοσειρά = pygame.font. SysFont('arial', 40)
title = font.render('Τέλος παιχνιδιού', Αληθής, (255, 255, 255))
restart_button = font.render('R - Επανεκκίνηση', Αληθής, (255, 255, 255))
quit_button = font.render('Q - Κλείστε', Αληθής, (255, 255, 255))
screen.blit (τίτλος, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (κουμπί_restart, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.απεικόνιση.εκσυγχρονίζω()

Στη συνέχεια, μπορείτε να προσθέσετε αυτή τη συνάρτηση στον κύριο βρόχο του παιχνιδιού.

αν κατάσταση_παιχνιδιού == "αρχικο ΜΕΝΟΥ":
draw_start_menu()
αν κατάσταση_παιχνιδιού == "τέλος παιχνιδιού":
draw_game_over_screen()

αν κατάσταση_παιχνιδιού == "παιχνίδι":
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_LEFT]:
παίκτης_x -= 5
ανκλειδιά[pygame. K_RIGHT]:
παίκτης_x += 5

αν player_x + player_width > εμπόδιο_x και player_x < εμπόδιο_χ + εμπόδιο_πλάτοςκαιplayer_y + παίκτης_ύψος > εμπόδιο_υ και παίκτη_υ < εμπόδιο_υ + εμπόδιο_ύψος:
παιχνίδι_πάνω = Αληθής
κατάσταση_παιχνιδιού = "τέλος παιχνιδιού"

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

αν κατάσταση_παιχνιδιού == "αρχικο ΜΕΝΟΥ":
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_SPACE]:
κατάσταση_παιχνιδιού = "παιχνίδι"
player_x = 200
player_y = 400
κατάσταση_παιχνιδιού = "παιχνίδι"
παιχνίδι_πάνω = Ψευδής

αν κατάσταση_παιχνιδιού == "τέλος παιχνιδιού":
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_r]:
κατάσταση_παιχνιδιού = "αρχικο ΜΕΝΟΥ"
ανκλειδιά[pygame. K_q]:
pygame.εγκαταλείπω()
εγκαταλείπω()

Με αυτόν τον κωδικό, το παιχνίδι θα επανεκκινήσει όταν ο χρήστης πατήσει το κουμπί 'R' και θα τερματιστεί όταν ο χρήστης πατήσει το κουμπί 'Q' στο πληκτρολόγιο.

Παρακάτω είναι ο πλήρης κωδικός:

εισαγωγή pygame

pygame.μέσα σε αυτό()
screen_width = 750
Ύψος_οθόνης = 450
οθόνη = pygame.display.set_mode((πλάτος_οθόνης, ύψος_οθόνης))
εμπόδιο_x = 400
εμπόδιο_y = 400
πλάτος_εμποδίου = 40
εμπόδιο_ύψος = 40
player_x = 200
player_y = 400
πλάτος_player = 20
Ύψος παίκτη = 20
κατάσταση_παιχνιδιού = "αρχικο ΜΕΝΟΥ"

defdraw_start_menu():
οθόνη.γέμισμα((0, 0, 0))
γραμματοσειρά = pygame.font. SysFont('arial', 40)
title = font.render("Το παιχνίδι μου", Αληθής, (255, 255, 255))
start_button = font.render('Αρχή', Αληθής, (255, 255, 255))
screen.blit (τίτλος, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
pygame.απεικόνιση.εκσυγχρονίζω()

defdraw_game_over_screen():
οθόνη.γέμισμα((0, 0, 0))
γραμματοσειρά = pygame.font. SysFont('arial', 40)
title = font.render('Τέλος παιχνιδιού', Αληθής, (255, 255, 255))
restart_button = font.render('R - Επανεκκίνηση', Αληθής, (255, 255, 255))
quit_button = font.render('Q - Κλείστε', Αληθής, (255, 255, 255))
screen.blit (τίτλος, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (κουμπί_restart, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
pygame.απεικόνιση.εκσυγχρονίζω()

ενώΑληθής:
ΓιαΕκδήλωσησεpygame.Εκδήλωση.παίρνω():
if event.type == pygame. ΕΓΚΑΤΑΛΕΙΠΩ:
pygame.εγκαταλείπω()
εγκαταλείπω()
αν κατάσταση_παιχνιδιού == "αρχικο ΜΕΝΟΥ":
draw_start_menu()
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_SPACE]:
player_x = 200
player_y = 400
κατάσταση_παιχνιδιού = "παιχνίδι"
παιχνίδι_πάνω = Ψευδής
ελιφ κατάσταση_παιχνιδιού == "τέλος παιχνιδιού":
draw_game_over_screen()
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_r]:
κατάσταση_παιχνιδιού = "αρχικο ΜΕΝΟΥ"
ανκλειδιά[pygame. K_q]:
pygame.εγκαταλείπω()
εγκαταλείπω()

ελιφ κατάσταση_παιχνιδιού == "παιχνίδι":
keys = pygame.key.get_pressed()
ανκλειδιά[pygame. K_LEFT]:
παίκτης_x -= 5
ανκλειδιά[pygame. K_RIGHT]:
παίκτης_x += 5

αν player_x + player_width > εμπόδιο_x και player_x < εμπόδιο_χ + εμπόδιο_πλάτοςκαιplayer_y + παίκτης_ύψος > εμπόδιο_υ και παίκτη_υ < εμπόδιο_υ + εμπόδιο_ύψος:
παιχνίδι_πάνω = Αληθής
κατάσταση_παιχνιδιού = "τέλος παιχνιδιού"

οθόνη.γέμισμα((0, 0, 0))
pygame.σχεδιάζω.ορθ(οθόνη, (255, 0, 0), (εμπόδιο_χ, εμπόδιο_υ, εμπόδιο_πλάτος, εμπόδιο_ύψος))
pygame.σχεδιάζω.ορθ(οθόνη, (0, 255, 0), (player_x, player_y, player_width, παίκτης_ύψος))
pygame.απεικόνιση.εκσυγχρονίζω()

ελιφ τέλος παιχνιδιού:
κατάσταση_παιχνιδιού = "τέλος παιχνιδιού"
παιχνίδι_πάνω = Ψευδής

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

Ο κώδικας ορίζει δύο λειτουργίες, draw_start_menu() και draw_game_over_screen(), για να σχεδιάσετε το μενού έναρξης και την οθόνη του παιχνιδιού. Αυτές οι συναρτήσεις χρησιμοποιούν τις συναρτήσεις PyGame για να σχεδιάσουν κείμενο και κουμπιά στην οθόνη.

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

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

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

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

Αυξήστε την αφοσίωση χρήστη με οπτικά ελκυστική διεπαφή χρήστη

Η χρήση μιας καλά σχεδιασμένης διεπαφής χρήστη (UI) μπορεί να αυξήσει σημαντικά την αφοσίωση των χρηστών σε ένα παιχνίδι PyGame. Μια σαφής και ευανάγνωστη γραμματοσειρά, τα οπτικά ελκυστικά γραφικά, η εύκολη πλοήγηση και τα σχόλια των χρηστών είναι όλα σημαντικά στοιχεία που πρέπει να ληφθούν υπόψη κατά το σχεδιασμό του UI. Εφαρμόζοντας αυτά τα στοιχεία, μπορείτε να δημιουργήσετε μια διεπαφή χρήστη που βοηθά τον παίκτη να κρατήσει το ενδιαφέρον και να βυθιστεί στο παιχνίδι.

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