Przejdź do treści

Kolorowa piłka

Wstęp

TODO

Czego się nauczysz

TODO

Gra

TODO

Pełen program

TODO

import pgzrun
import random

WIDTH = 800
HEIGHT = 800

kolory = ["#A3DDCB", "#E8E9A1", "#E6B566", "#E5707E"]

pilka = {"x": WIDTH / 2, "y": HEIGHT - 30, "oy": HEIGHT - 30, "promien": 10, "vy": 0, "kolor": random.choice(kolory)}

linie = []

def draw():
    screen.fill((0, 0, 0))

    pilka_rect = Rect((pilka["x"], pilka["y"]), (pilka["promien"] * 2, pilka["promien"] * 2))

    for linia in linie:
        for i in range(len(linia["segmenty"])):
            kolor = linia["segmenty"][i]
            szer = WIDTH / 4
            x = i * szer - linia["przes"]
            y = linia["y"]
            segment = Rect((x, y), (szer, 20))
            screen.draw.filled_rect(segment, kolor)

            if segment.colliderect(pilka_rect) and kolor != pilka["kolor"]:
                reset()

    screen.draw.filled_circle((pilka["x"], pilka["y"]), pilka["promien"], pilka["kolor"])

def dodaj_linie(y):
    linia = {}
    linia["segmenty"] = kolory[:]
    random.shuffle(linia["segmenty"])
    linia["segmenty"].extend(linia["segmenty"])
    linia["przes"] = 0
    linia["vx"] = random.randint(2, 5)
    linia["y"] = y
    linie.append(linia)

def update():
    global przes
    for linia in linie:
        linia["przes"] += linia["vx"]
        if linia["przes"] >= WIDTH:
            linia["przes"] = 0

    pilka["vy"] += 0.5
    pilka["y"] += pilka["vy"]

    if pilka["y"] >= pilka["oy"]:
        pilka["oy"] = pilka["y"]
        pilka["vy"] = -10

def on_key_down(key):
    global linia_y
    if key == keys.SPACE:
        pilka["vy"] = -10
        pilka["oy"] = pilka["y"]
        przesun()

def przesun():
    for linia in linie[:]:
        linia["y"] += 20
        if linia["y"] > HEIGHT:
            dodaj_linie(0)
            linie.remove(linia)

def reset():
    global pilka
    linie.clear()
    dodaj_linie(WIDTH / 2)
    dodaj_linie(WIDTH / 5)
    dodaj_linie(-80)
    pilka = {"x": WIDTH / 2, "y": HEIGHT - 30, "oy": HEIGHT - 30, "promien": 15, "vy": 0, "kolor": random.choice(kolory)}

reset()
pgzrun.go()

Testujemy działanie

https://replit.com/@damiankurpiewski/ColorBall

TODO