Ενότητα 5 - Τμήμα 2 - Έλεγχος του ποντικιού

Ιστότοπος: ΕΛ/ΛΑΚ Moodle
Μάθημα: Εργαστήριο Python
Βιβλίο: Ενότητα 5 - Τμήμα 2 - Έλεγχος του ποντικιού
Εκτυπώθηκε από: Guest user
Ημερομηνία: Παρασκευή, 3 Μαΐου 2024, 5:50 PM

Περιγραφή

Μετά την ολοκλήρωση αυτής της ενότητας οι φοιτητές θα μπορούν να:

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


5.2.1 - Πλειάδες

Οι Πλειάδες (Tuples) μοιάζουν πολύ με τις λίστες εκτός του ότι είναι αμετάβλητες (δεν μπορούν να αλλάξουν). Επίσης, δημιουργούνται χρησιμοποιώντας παρενθέσεις αντί αγκύλες.

>>> breakfast = ("spam", "eggs", "milk")

Όπως και με τι λίστες μπορούμε να έχουμε πρόσβαση στις τιμές μίας πλειάδας με τη χρήση δεικτών:

>>> print (breakfast[0])

Αλλά δεν μπορούμε να αλλάξουμε την τιμή οποιασδήποτε θέσης στην πλειάδα. Αν το δοκιμάσουμε η python μας επιστρέφει ένα μήνυμα λάθους:

>>> breakfast[1] = "yougurt"

Οι πλειάδες μπορούν να δημιουργηθούν και χωρίς παρενθέσεις, απλά χωρίζοντας τις τιμές με κόμμα:

>>> my_tuple = "biscuits", "soda", "ice cream"

>>> print (my_tuple[0]) 

Μία άδεια πλειάδα δημιουργείτε χρησιμοποιώντας ένα άδειο ζευγάρι από παρενθέσεις:

>>> tpl = () # Αλλά ..... που μπορεί να χρησιμοποιηθεί μία άδεια πλειάδας;

Αν μπορούμε να κάνουμε τα ίδια πράγματα που κάνουμε και με μία λίστα ποιος ο λόγος ύπαρξης των πλειάδων; Οι πλειάδες είναι γρηγορότερες από τις λίστες και χρησιμοποιούν λιγότερη μνήμη, αλλά δεν μπορούν να αλλάξουν.

5.2.2 - Εντολές για κινήση μαζί με το ποντίκι

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

Η βιβλιοθήκη Pygame προσφέρει μία μέθοδο για την μετακίνηση αντικειμένων με το ποντίκι. Αρχικά πρέπει να ξέρουμε σε ποια θέση βρίσκεται το ποντίκι. 

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



Αντιγράψτε την παρακάτω γραμμή κώδικα στην γραμμή 36 προσέχοντας για τη σωστή στοίχηση της εσοχής

# Get Mouse Position pos = pygame.mouse.get_pos() x = pos[0] y = pos[1] print(x,y)


Η πρώτη εντολή φτιάχνει μία πλειάδα με 2 αριθμούς που είναι οι συντεταγμένες της θέσης του ποντικιού. Οι εντολές που ακολουθούν δίνουν στις μεταβλητές x και y τις συντεταγμένες. Η εντολή εκτύπωσης μπορεί να μετατραπεί σε σχόλιο. Υπάρχει για να βλέπετε τις συντεταγμένες όπως κινείτε το ποντίκι.

Τώρα θα χρησιμοποιοήσουμε αυτές τις συντεταγμένες για να μετακινήσουμε τον κόκκινο κύκλο.

Αλλάξτε τη γραμμή που σχεδιάζει τον κύκλο (βρίσκεται πάνω-κατω στη γραμμή 54)  σε

pygame.draw.circle(screen, RED, [ x,  y], 30, 0) 

και εκτελέστε τον κώδικα

Ουάου!! μετεκινείτε όπως το διατάζουμε.

Μπορείτε να βάλετε σε σχόλιο την γραμμή που εκτυπώνει την θέση του ποντικιού  (βρίσκεται στη γραμμή 50 πάνω-κάτω)

Μπορείτε να κατεβάσετε τον κώδικα από εδώ και να τον δοκιμάσετε.

Μετακινήστε τον κύκλο κοντά στο άσπρο τετράγωνο, είναι πάνω από το τετράγωνο ή από κάτω;

Ασκήσεις

  • Μπορείτε να αλλάξετε τον κώδικα ώστε το τετράγωνο να εμφανίζεται πάνω από τον κύκλο;
  • Μπορείτε να αλλάξετε τον κώδικα ώστε να κινεί το τετράγωνο;

5.2.3 - Μία φιγούρα από ράβδους

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

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

Μερικα χρώμματα λείπουν, έτσι πρέπει να τα δημιουργήσετε (στην ίδια θέση που είναι και τα άλλα χρώμματα). Μπορείτε να δείτε μία παλέττα RGB εδώ ή μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα για να φτιάξετε ΠΟΡΤΟΚΑΛΙ και ΜΠΛΕ

ORANGE   = ( 232, 163,  24)
BLUE     = (   0,   0, 255)

stick explained

Μπορείτε να κατεβάσετε τον κώδικα από εδώ

5.2.4 - Μετακινώντας τη φιγούρα

Κάντε λήψη του κώδικα για τη Φιγούρα με ράβδους από εδώ και ενοίξτε το αρχείο με το Thonny.

Θα χρησιμοποιήσουμε την κίνηση του ποντικιού για να μετακινήσουμε τη φιγούρα.

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

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

Αλλάξτε τις γραμμές 65 έως 79 για να προσθέσετε κίνηση στο σχέδιο.

# Draw stick figure # Head pygame.draw.circle(screen, BLACK, [100 + x, 100 + y], 15) # Body pygame.draw.line(screen, ORANGE, [100 + x, 115 + y], [100 + x , 180 + y], 5) # Legs pygame.draw.line(screen, BLUE, [100 + x , 180 + y ], [80 + x, 250 + y], 5) pygame.draw.line(screen, BLUE, [100 + x, 180 + y], [120 + x, 250 + y], 5) # Arms pygame.draw.line(screen, RED, [100 + x, 125 + y], [50 + x, 140 + y], 5) pygame.draw.line(screen, RED, [100 + x, 125 + y], [150 + x, 140 + y], 5)


Μην ξεχνάτε να ελέγχετε τη στοίχηση της εσοχής.

Μπορείτε να κατεβάσετε τον κώδικα από εδώ και να τον δοκιμάσετε.