Ενότητα 7 - Τμήμα 0 - Νιφάδες χιονιού και Χιονάνθρωποι ξανά
Ιστότοπος: | ΕΛ/ΛΑΚ Moodle |
Μάθημα: | Εργαστήριο Python |
Βιβλίο: | Ενότητα 7 - Τμήμα 0 - Νιφάδες χιονιού και Χιονάνθρωποι ξανά |
Εκτυπώθηκε από: | Guest user |
Ημερομηνία: | Πέμπτη, 21 Νοεμβρίου 2024, 8:52 PM |
Περιγραφή
7.0.1 - Συναρτήσεις σχεδιασμού
Στην προηγούμενη ενότητα δημιουργήσαμε μία συνάρτηση για να σχεδιάσουμε ένα χιονάνθρωπο. Σε αυτή τη συνάρτηση χρησιμοποιήσαμε μεταβλητές για να σχεδιάσουμε το χιονάνθρωπο σε διαφορετικές θέσεις μέσα στην οθόνη.
Η Συνάρτηση είχε γραφεί έξω από την κύρια επανάληψη της pygame:
def draw_snowman(screen, x, y):
# Draw a circle for the head
pygame.draw.circle(screen, WHITE, [60 + x, 50 + y], 15)
# Draw the middle snowman circle
pygame.draw.circle(screen, WHITE, [60 + x, 80 + y], 20)
# Draw the bottom snowman circle
pygame.draw.circle(screen, WHITE, [60 + x, 120 + y], 30)
# Draw the buttons
pygame.draw.circle(screen, BLACK, [60 + x, 120 + y], 6)
pygame.draw.circle(screen, RED, [60 + x, 120 + y], 4)
pygame.draw.circle(screen, BLACK, [60 + x, 100 + y], 6)
pygame.draw.circle(screen, RED, [60 + x, 100 + y], 4)
pygame.draw.circle(screen, BLACK, [60 + x, 80 + y], 6)
pygame.draw.circle(screen, RED, [60 + x, 80 + y], 4)
#Draw the hat
pygame.draw.rect(screen, BROWN, [45 + x, 8 + y, 30,30])
pygame.draw.rect(screen, BROWN, [30 + x, 34 + y, 60,5])
#Draw the eyes
pygame.draw.circle(screen, BLACK, [54 + x, 44 + y], 3)
pygame.draw.circle(screen, BLACK, [66 + x, 44 + y], 3)
#Draw the mouth
pygame.draw.arc(screen, RED, [50 + x, 40 + y, 20, 20] , 3.34, 6.08,3)
#Draw the nose
pygame.draw.polygon(screen, ORANGE, [[58 + x , 46 + y], [60 + x , 54 + y], [72 + x, 60 + y]], 0)
7.0.2 - Παραπάνω από ένα χιονάνθρωπο
Για να σχεδιάσουμε το χιονάνθρωπο σε πολλαπλά μέρη πρέπει να επαναλάβουμε την συνάρτηση draw_snowman.
Γι αυτό το σκοπό μπορούμε να χρησιμοποιήσουμε μία επανάληψης ή εμφωλευμένες επαναλήψεις για τον αριθμό των χιονανθρώπων που θέλουμε να σχεδιάσουμε στην οθόνη.
Η Επανάληψη πρέπει να τοποθετηθεί στο τμήμα σχεδιασμού μέσα στην κύρια επανάληψη.
# --- Drawing code should go here
for i in range(9):
for j in range(3):
draw_snowman(screen, 70*i, 160*j)
7.0.3 - Κινούμενα σχέδια με χρήση και ενημέρωση μίας λίστας
Για να δημιουργήσουμε πολλαπλά αντίγραφα ενός σχήματος ή αντικειμένου, μπορούμε να δημιουργήσουμε μία λίστα για να αποθηκεύσουμε τα χαρακτηριστικά των αντικειμένων. Χρησιμοποιήσαμε αυτή την τεχνική για να δημιουργήσουμε τις χιονονιφάδες και μετά ενημερώσαμε τη θέση της μεταβλητής Υ για να μοιάζει με νιφάδα χιονιού που πέφτει. Επίσης, μόλις η νιφάδα φύγει από την οθόνη ενημερώνουμε τη θέση της σε μία θέση που αντιστοιχεί ψηλότερα από το πάνω μέρος της οθόνη, έτσι ώστε να αρχίσει να πέφτει ξανά.
import random
snow_list = []
for i in range(50):
x = random.randrange(10,690)
y = random.randrange(10,490)
snow_list.append([x,y])
print(snow_list)