Interakcija sa mišem i tastaturom u Processing Python Mode


Lekcija 6 od 14

Python Processing početna:Povratak na hub | Prethodna lekcija: Animacija i promenljive


Zašto je interakcija važna?


Do sada smo crtali i animirali objekte. Sada učimo kako da reagujemo na:

  • poziciju miša
  • klik miša
  • pritiskanje tastera

Ovo je osnova za pravljenje igara i interaktivnih projekata.

Interakcija = korisnik utiče na program u realnom vremenu.

Pozicija miša — mouseX i mouseY



def setup():
    size(600, 400)

def draw():
    background(240)
    ellipse(mouseX, mouseY, 40, 40)
Rezultat
Krug prati kursor miša u realnom vremenu.

mouseX i mouseY su ugrađene promenljive koje prate poziciju kursora.

Savet: Dodaj više krugova sa različitim veličinama za “trag miša”.

Detekcija klika — mousePressed



def setup():
    size(600, 400)

def draw():
    background(240)
    
    if mousePressed:
        fill(255, 0, 0)
    else:
        fill(0, 150, 255)
    
    ellipse(300, 200, 120, 120)
Rezultat
Klikom miša menja se boja kruga.

mousePressed je logička promenljiva (True/False).

Ovo proverava da li je dugme trenutno pritisnuto (ne samo klik).

Funkcija mousePressed()


Možemo definisati posebnu funkciju koja se poziva kada korisnik klikne:


def mousePressed():
    print("Klik na poziciji:", mouseX, mouseY)
Razlika:

- mousePressed → stanje (da li je dugme pritisnuto) - mousePressed() → događaj (klik se desio)

Primer: klik dodaje krug



krugovi = []

def setup():
    size(600, 400)

def draw():
    background(240)

    for k in krugovi:
        ellipse(k[0], k[1], 30, 30)

def mousePressed():
    krugovi.append((mouseX, mouseY))
Rezultat
Svaki klik dodaje novi krug na ekranu.

Interakcija sa tastaturom — key i keyPressed()



x = 300

def setup():
    size(600, 400)

def draw():
    global x
    background(240)
    ellipse(x, 200, 50, 50)

def keyPressed():
    global x
    if key == 'a':
        x -= 10
    if key == 'd':
        x += 10
Rezultat
Objekat se pomera levo i desno pritiskom tastera A i D.

Koristimo:

  • key — koji taster je pritisnut
  • keyPressed() — funkcija koja se aktivira
Možeš koristiti i strelice (napredno): keyCode

Napredno: držanje tastera



def draw():
    global x
    background(240)

    if keyPressed:
        if key == 'a':
            x -= 3
        if key == 'd':
            x += 3

    ellipse(x, 200, 50, 50)

Ovde se objekat pomera dok držimo taster.


Mini projekat: interaktivna scena


  • lopta prati miš
  • klik menja boju
  • tasteri pomeraju drugi objekat
Rezultat
Interaktivna scena sa više objekata i kontrolama.
Savet: Svaki objekat može imati svoje ponašanje i kontrole.

Mini projekat (napredniji): klik menja brzinu



dx = 2

def mousePressed():
    global dx
    dx *= -1  # menja smer kretanja

Klik može menjati ponašanje objekta — ovo je osnova za igre.


Poređenje sa Java verzijom


Isti principi važe i u Java Processing-u:

Processing sa Javom — interakcija


Sledeća lekcija


Mini projekat: osnove igre Pong →


Povezane teme