Αναπήδηση της μπάλας
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)