Συμβάντα πληκτρολογίου
20-01-2020 10:53:17
- από τον χρήστη Διαχειριστής ΠλατφόρμαςΜάθημα 2ο - Εσοχές
Δοκιμάστε τον παρακάτω κώδικα. Σε περίπτωση σφαλμάτων προσαρμόστε κατάλληλα τις εσοχές.
Απαραίτητο αρχείο kasnakisg.mysch.gr/ev3/ball.png
-------
import pygame
import os
_image_library = {}
def get_image(path):
global _image_library
image = _image_library.get(path)
if image == None:
canonicalized_path = path.replace('/', os.sep).replace('\\', os.sep)
image = pygame.image.load(canonicalized_path)
_image_library[path] = image
return image
pygame.init()
screen = pygame.display.set_mode((400, 300))
done = False
clock = pygame.time.Clock()
x = 30
y = 30
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pressed = pygame.key.get_pressed()
if pressed[pygame.K_UP]: y -= 3
if pressed[pygame.K_DOWN]: y += 3
if pressed[pygame.K_LEFT]: x -= 3
if pressed[pygame.K_RIGHT]: x += 3
screen.fill((0, 0, 0))
screen.blit(get_image('ball.png'), (x, y))
pygame.display.flip()
clock.tick(60)
Με την screen = pygame.display.set_mode((400, 300)) έχουμε δημιουργήσει ένα παράθυρο γραφικών μεγέθους 400χ300.
Σε κάθε ανανέωση της οθόνης που καθορίζεται να είναι ανά 60 ticks ( clock.tick(60) ) πραγματοποιούνται οι ενέργειες
screen.fill((0, 0, 0)) γεμίζει την οθόνη με μαύρο χρώμα.
screen.blit(get_image('ball.png'), (x, y)) τοποθετεί την εικόνα ball.png στη θέση x, y που
έχουν πάρει τις τιμές x=30 και y=30
pygame.display.flip() χτίζει την οθόνη. Ουσιαστικά ότι έχει τοποθετηθεί στην προσωρινή μνήμη (buffer)
με προηγούμενες εντολές στιγμιαία γεμίζουν το αντικείμενο surface (screen)
Σε κάθε επανάληψη ελέγχεται το πάτημα ενός πλήκτρου ( pressed = pygame.key.get_pressed())
H μεταβλητή pressed δέχεται την τιμή που επιστρέφει η μέθοδο get_pressed() που αφορά το αντικείμενο
πληκτρολογίου key της κλάσης pygame.
Αυτό που επιστρέφει η get_pressed() είναι ένα διάνυσμα λογικών τιμών που σαν δείκτες έχει τους αντίσοιχους
κωδικούς πλήκτρων. Παράδειγμα αν πατηθεί το πλήκτρο UP τότε το στοιχείο pressed[pygame.K_UP] έχει την τιμή
True.
if pressed[pygame.K_UP]: y -= 3
Στο πάτημα ενός πλήκτρου έχουμε την ανάλογη επίδραση στις συντεταγμένες x,y, της μπάλας.
y -=3 . Η εντολή αυτή αντιστοιχεί στην y = y-3. Φραστικά θα μπορούσαμε να πούμε ότι το y ισούται με
την προηγούμενη τιμή του μείον 3.
Έχοντας υπόψη ότι ο άξονας των y'y έχει αντιστραφεί θα έχουμε μετακίνηση της μπάλας προς τα πάνω.
Αντίστοιχα
if pressed[pygame.K_DOWN]: y += 3 μετακίνηση προς τα κάτω στο πάτημα του πλήκτρου DOWN
if pressed[pygame.K_LEFT]: x -= 3 μετακίνηση προς τα αριστερά στο πάτημα του πλήκτρου LEFT
if pressed[pygame.K_RIGHT]: x += 3 μετακίνηση προς τα δεξιά στο πάτημα του πλήκτρου RIGHT
Τελική μορφή κώδικα
kasnakisg.mysch.gr/ev3/ball.py