M14 | L8 – Timere si animatii cu Python

Astăzi vom afla despre:

  • Crearea animatiilor cu python
  • folosirea modulului pygame

Aplicațiile pe care le vom folosi sunt:

Replit, python

PROIECTE:

Jocuri

De acum vom folosi modulul pygame in loc de Turtle Graphics

Desenam un punct:

# ShowDot.py

import pygame

pygame.init()

screen = pygame.display.set_mode([800,600])

keep_going = True

GREEN = (0,255,0)    # RGB color triplet for GREEN

radius = 50

while keep_going:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            keep_going = False

    pygame.draw.circle(screen, GREEN, (100,100), radius)

    pygame.display.update()

pygame.quit()

Desenam un smiley:

# ShowPic.py

import pygame        # Setup

pygame.init()

screen = pygame.display.set_mode([800,600])

keep_going = True

pic = pygame.image.load(„CrazySmile.bmp”)

while keep_going:    # Game loop

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            keep_going = False

    screen.blit(pic, (100,100))

    pygame.display.update()

pygame.quit()        # Exit

Animam un smiley:

import pygame                                    # Setup

pygame.init()

screen = pygame.display.set_mode([600,600])

keep_going = True

pic = pygame.image.load(„CrazySmile.bmp”)

colorkey = pic.get_at((0,0))

pic.set_colorkey(colorkey)

picx = 0

picy = 0

BLACK = (0,0,0)

timer = pygame.time.Clock()            # Timer for animation

while keep_going:

#

Game loop

for event in pygame.event.get():

if event.type == pygame.QUIT:

keep_going = False

 

picx += 1

#

Move the picture

picy += 1

 

 

screen.fill(BLACK)

#

Clear screen

screen.blit(pic, (picx,picy))

pygame.display.update()

 

 

timer.tick(60)

#

Limit to 60 frames per second

pygame.quit()

#

Exit

Facem un smiley sa se loveasca de pereti:

import pygame                   # Setup

pygame.init()

screen = pygame.display.set_mode([800,600])

keep_going = True

pic = pygame.image.load(„CrazySmile.bmp”)

colorkey = pic.get_at((0,0))

pic.set_colorkey(colorkey)

picx = 0

picy = 0

BLACK = (0,0,0)

timer = pygame.time.Clock()

speedx = 5

speedy = 5

while keep_going:             # Game loop

for event in pygame.event.get():

if event.type == pygame.QUIT:

keep_going = False

picx += speedx

picy += speedy

if picx <= 0 or picx + pic.get_width() >= 800:

speedx = -speedx

if picy <= 0 or picy + pic.get_height() >= 600:

speedy = -speedy

screen.fill(BLACK)

screen.blit(pic, (picx, picy))

pygame.display.update()

timer.tick(60)

pygame.quit()                     # Exit

Provocare 1:

Să explorăm în continuare tripletele de culoare RGB. Am lucrat cu câteva culori RGB în acest capitol; amintiți-vă, verde era (0,255,0), negru era (0,0,0) și așa mai departe. La http: // colorschemer.com/online/, introduceți valori diferite de roșu, verde și albastru de la 0 la 255 pentru a vedea culorile pe care le puteți crea combinând cantități diferite de lumină roșie, verde și albastră din pixelii ecranului. Începeți prin alegerea propriului triplet de culoare pe care să îl utilizați în programul ShowDot.py. Apoi modificați programul pentru a desena punctul mai mare sau mai mic și în diferite locații de pe ecran. În cele din urmă, încercați să creați un triplet de culoare RGB aleatoriu folosind random.randint (0,255) pentru fiecare dintre cele trei componente de culoare (nu uitați să importați aleator în partea de sus a programului), astfel încât punctul să schimbe culorile de fiecare dată când desenează pe ecran. Efectul va fi un punct care schimbă culoarea. Apelați noua dvs. creație DiscoDot.py

Provocare 2:

Ca a doua provocare, să înlocuim singurul punct cu 100 de puncte în culori, dimensiuni și locații aleatorii.

Provocare 3:

În cele din urmă, să facem RandomDots.py cu un pas mai departe, programând punctele pentru a „ploua” de pe partea inferioară și dreaptă a ecranului și să reapară de-a lungul părții de sus și din stânga.