Ενότητα 6 - Τμήμα 0 - Επανάληψη!
Ιστότοπος: | ΕΛ/ΛΑΚ Moodle |
Μάθημα: | Εργαστήριο Python |
Βιβλίο: | Ενότητα 6 - Τμήμα 0 - Επανάληψη! |
Εκτυπώθηκε από: | Guest user |
Ημερομηνία: | Κυριακή, 24 Νοεμβρίου 2024, 2:21 PM |
Περιγραφή
6.0.1 - Κίνηση σχεδίων
Αν θέλουμε να δώσουμε κίνηση σε ένα αντικείμενο που θα σχεδιάσουμε μέσα στην κύρια μας επανάληψη με τη χρήση του προτύπου της pygame θα πρέπει:
- Πρώτο : δημιουργούμε ένα τμήμα αρχικοποίησης εντολών εκτός του τμήματος επανάληψης (loop), όπου καθορίζουμε την αρχική θέση (x , y) του αντικειμένου και την αρχική ταχύτητα για κάθε άξονα:
rect_x = 50 # X αρχική θέση του ορθογωνίου
rect_y = 50 # Y αρχική θέση του ορθογωνίου
speed_x = 5 # X ταχύτητα του ορθογωνίου
speed_y = 5 # Y ταχύτητα του ορθογωνίου - Δεύτερο : μέσα στην κύρια επανάληψη αλλάζουμε τη θέση ανάλογα με την ταχύτητα:
rect_x += speed_x
rect_y += speed_y - Τρίτο : Αλλάζουμε την εντολή σχεδίασης χρησιμοποιώντας τις καθορισμένες μεταβλητές:
pygame.draw.rect(screen, WHITE, [rect_x, rect_y, 50,50])
6.0.2 - Αναπήδηση
Για να κάνουμε ένα αντικείμενο να αναπηδά στις άκρες της οθόνης θα αλλάξουμε την κατεύθυνση της ταχύτητας του αντικειμένου όταν φτάσει σε κάποιο άκρο.
if rect_x >= 650 or rect_x <= 0:
speed_x *= -1
if rect_y >= 450 or rect_y <= 0:
speed_y *= -1
Αν το αντικείμενο είναι μεγαλύτερο ή μικρότερο ή είναι διαφορετικό (κύκλος) πρέπει να αλλάξουμε τι τιμές για τα όρια στις προηγούμενες εντολές αναλόγως.
6.0.3 - Χρήση του ποντικιού
Για να μάθουμε την θέση του ποντικιού μέσα σε μία οθόνη με γραφικά που δημιουργήθηκε με την pygame χρησιμοποιούμε την εντολή,
pos = pygame.mouse.get_pos()
μέσα στην κύρια επανάληση, έτσι ώστε ανάλογα με την εντολή clock.tick() η θέση να διαβάζετε συνεχώς.
Η μεταβλητή pos είναι μία πλειάδα από δύο αριθμούς που μπορούμε να χρησιμοποιήσουμε σαν συντεταγμένες για την μετακίνηση ενός σχήματος. Οι εντολές που θα χρησιμοποιήσουμε είναι:
x = pos[0] # δίνουμε την x θέση του ποντικιού στη μεταβλητή x
y = pos[1] # δίνουμε την y θέση του ποντικιού στη μεταβλητή y
και για να σχεδιάσουμε ένα σχήμα στις θέσεις x,y :
pygame.draw.circle(screen, RED, [ x, y], 30, 0)