Ενότητα 7 - Τμήμα 0 - Νιφάδες χιονιού και Χιονάνθρωποι ξανά

Ιστότοπος: ΕΛ/ΛΑΚ Moodle
Μάθημα: Εργαστήριο Python
Βιβλίο: Ενότητα 7 - Τμήμα 0 - Νιφάδες χιονιού και Χιονάνθρωποι ξανά
Εκτυπώθηκε από: Guest user
Ημερομηνία: Σάββατο, 27 Απριλίου 2024, 11:47 AM

Περιγραφή

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)