Βασικός κορμός ενός παιχνιδιού με χρήση της βιβλιοθήκης pygame
Μάθημα 1ο
Η ανατομία ενός παιχνιδιού PyGame
Παρακάτω ακολουθεί η βασική δομή ενός παιχνιδιού με χρήση της βιβλιοθήκης pygame.
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pygame.display.flip()
import pygame . Απαραίτητη βιβλιοθήκη για να έχουμε πρόσβαση σε όλες τις κλάσεις και μεθόδους της πλατφόρμας Pygame.
pygame.init() . Αρχικοποιεί όλα τα modules που είναι απαραίτητα για ένα αντικείμενο pygame.
pygame.display.set_mode((width, height)) . Κατασκευάζει ένα παράθυρο γραφικών (Surface object).
pygame.event.get() . Αυτό αδιεάζει την ουρά συμβάντων. Αν δεν γίνει αυτή η ενέργεια τότε τα μηνύματα των Windows θα αρχίσουν να συσσωρεύονται και το παιχνίδι θα αποκλείσει την απόκριση του λειτουργικού συστήματος.
pygame.display.flip() . Φαντασστείτε ότι χτίζουμε μια εικόνα σταδιακά (την αποθηκεύουμε σε μια προσωρινή μνήμη buffer)
και στη συνέχεια την παρουσιάζουμε σε κάποια χρονική στιγμή ολόκληρη.
Αυτή η ενέργεια πρέπει να γίνεται επαναληπτικά όσο κάτι να συμβεί. Όταν ελέγχουμε τα συμβάντα πληκτρολογίου επειδή
δεν είναι ένα αλλά είναι μετρήσιμα μπορούμε πάλι να τα σαρώσουμε επαναληπτικά.
Έχουμε λοιπόν την <while not done:> η οποία επαναλαμβάνει ότι ακολουθεί και βρίσκεται σε εσοχή μετά την 5 στήλη μέχρι
η μεταβλητή done να αλλάξει από False (ψευδής) που ήταν σε True(Αληθής).
Σημειώνω ότι η done είναι λογική μεταβλητή δηλαδή παίρνει αποκλειστικά μόνο τις τιμές True ή False
Επίσης ο λογικός τελεστής not αντιστρέφει το περιεχόμενο της λογικής μεταβλητής.
Για να εξετάσουμε μια μεταβλητή σε ένα σύνολο τιμών κάνουμε χρήση της επαναληπτικής δομής
for μεταβλητή in σύνολο_τιμών :
Η μεταβλητή σ' αυτή την περίπτωση παίρνει μία μία τις τιμές που ανήκουν στο σύνολο τιμών και εκτελεί τις εντολές
που ακολουθούν και βρίσκονται σε εσοχή 5 στηλών σε σχέση μ' αυτή.
for event in pygame.event.get(): για κάθε συμβάν πληκτρολογίου (event) στο σύνολο τιμών pygame.event.get() εκτελείτε
η εντολή
if event.type == pygame.QUIT:
done = True
Η εντολή if χρησιμοποιείται για τη λήψη κάποιας απόφασης και στη συνέχεια την εκτέλεση μιας ομάδας εντολών αν
η συνθήκη είναι αληθής.
Αν προσέξετε υπάρχουν αντικείμενα που έχουν ιδιότητες ή διαθέτουν λειτουργίες (μεθόδους)
παράδειγμα η pygame.event.get() μας λέει ότι το αντικείμενο pygame έχει σαν μέλη της αντικείμενα
event τα οποία διαθέτουν μια λειτουργία get() που τα επιστρέφει κατά την κλήση της εντολής.
Έτσι κάθε αντικείμενο event έχει την ιδιότητα type που ελέγχουμε αν έχι την τιμή pygame.QUIT
Ο έλεγχος της ισότητας διαφοροποιείται από την απόδοση τιμής σε κάποια μεταβλητή.
Έτσι ελέγχουμε την ισότητα με διπλό ίσον == και αποδιδουμε τιμή με =.
Το αντικείμενο pygame διαθέτει και σταθερές στις οποίες είναι αποθηκευμένες τιμές που μας είναι δύσκολο να θυμόμαστε.
Η pygame.QUIT αντιστοιχεί το πάτημα του κουμπιού [χ] για το κλείσιμο του παραθύρου