Αναπήδηση της μπάλας
28-01-2020 10:15:32
- από τον χρήστη Διαχειριστής ΠλατφόρμαςΤο σενάριο είναι το εξής: Όαν η μπάλα φτάσει στα όρια οριζόντια ( χ=0 ή χ=400) τότε πρέπει να αλλάξει φορά.
Η αλλαγή φοράς μπορεί να γίνει με την αύξηση ή μείωση του βήματος.
Όταν το βήμα είναι θετικό η μπάλα πάει δεξιά . x += 3
Όταν το βήμα είναι αρνητικό η μπάλα πάει αριστερά . x -= 3
Αυτό που μεταβάλεται στις δύο παραπάνω εκφράσεις είναι το πρόσημο.
χ = χ + (+1)*χ
χ = χ + (-1)*χ
Άρα η σκέψη είναι : πριν την επανάληψη μια μεταβλητή που θα αναλάβει να ελέγχει το πρόσημο θα πάρει την τιμή +1
Κάθε φορά που η μπάλα φτάνει στα όρια δεξιά ή αριστερά η μεταβλητή που εέγχει το πρόσημο γίνεται αντίθετη.
Οι αλλαγές φαίνονται παρακάτω με έντονο χρώμα.
import pygame import os import random _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 x1 = 3 (θέση χ1 δεύτερης μπάλας) y1 = 3 (θέση y1 δεύτερης μπάλας) d = 1 (πρόσημο) 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 x1 += d*3 (Μεταβολή x1 με χρήση προσήμου) if x>=400 : x=3 if x<=0 : x=400 if y>=300 : y=3 if y<=0 : y=300 if x1>=400 or x1<=0: ( έλεγχος ορίων για το χ1) d = (-1)*d (αλλαγή προσήμου) y1 +=3 ( το y1 αυξανεται σταθερά με βήμα 3) if y1>300 : y1=0 screen.fill((0, 0, 0)) screen.blit(get_image('ball.png'), (x, y)) screen.blit(get_image('ball.png'), (x1, y1)) (τοποθέτηση δεύτερης μπάλας στη θέση x1,y1) pygame.display.flip() clock.tick(60)