Događaji miša

U primeru „prekidač” smo pokazali kako možemo da reagujemo u programu kada korisnik pritisne taster miša. Iako korisnik posmatra klik kao jednu akciju, videli smo da je za računar to niz događaja koji počinje događajem tipa pg.MOUSEBUTTONDOWN.

U narednim primerima i zadacima ćemo koristiti ukupno tri tipa događaja koji nastaju upotrebom miša:

Objekti - događaji čiji je tip pg.MOUSEBUTTONDOWN sadrže i neke dodatne podatke, kao što su:

Neki od dodatnih podataka o događaju, koje sadrže objekti - događaji tipa pg.MOUSEMOTION su:

Obrada klika - vežbanje

Možda niste primetili da u programu „prekidač” iz prethodne lekcije svetlo može da se uključi i isključi bilo kojim tasterom miša. To je tako jer se događaj istog tipa generiše za svaki taster miša, a mi nismo proveravali koji taster je bio pritisnut prilikom nastupanja događaja.

Zadatak - levi taster kao prekidač: Iskopirajte ovde program „prekidač”, a zatim ga doradite tako da se uključivanje i isključivanje sijalice može obaviti samo levim tasterom miša.

Pomoć: Koristite podatak dogadjaj.button.

Zadatak - tri prekidača: Iskoristite delove programa „prekidač” i napravite program koji simulra rad tri prekidača, kao u primeru.

../_images/Shema3_Off.png ../_images/Shema3_On.png ../_images/SwitchOff.png ../_images/SwitchOn.png ../_images/BulbOff.png ../_images/BulbOn.png

Ostali događaji miša

Kao što je na početku ove lekcije rečeno, u programu se može reagovati i na događaje otpuštanja tastera miša i pomeranja miša. Radi toga je potrebno uporediti vrednost dogadjaj.type sa konstantama pg.MOUSEBUTTONUP i pg.MOUSEMOTION. Slede zadaci u kojima možete ovo i da isprobate.

Zadatak - crtanje linija: Dovršite program tako da se pomoću njega mogu crtati prave linije, kao u primeru.

Zadatak - crtanje linija sa brisanjem: Iskopirajte dole program za crtanje linija, a zatim dodajte mogućnost da se sve linije obrišu klikom na desni taster miša.

Pomoć: Da bismo u programu razlikovali levi i desni taster miša, ponovo treba koristiti podatak dogadjaj.button. Kod u funkciji obradi_dogadjaj sada treba da izgleda otprilike ovako:

Zadatak - prevlačenje: Sledeći program pokazuje kako da korisniku našeg programa omogućimo prevlačenje objekata.

Isprobajte program (prevucite jabuke u korpu) i potrudite se da ga razumete, a zatim odgovorite na pitanja ispod.

../_images/apple.png ../_images/basket.png ../_images/drag_scene.png

    Q-78: Šta predstavlja promenljiva i_jabuka u programu?

  • redni broj jabuke koju crtamo
  • Pokušajte ponovo
  • redni broj jabuke koju prevlačimo
  • Tačno
  • ukupan broj jabuka
  • Pokušajte ponovo
  • broj preostalih jabuka na drvetu
  • Pokušajte ponovo
    Q-79: Upari provere u programu sa njihovim značenjem. Pokušajte ponovo!
  • if mis_je_na_slici(dogadjaj.pos, korpa_poz, korpa_slika):
  • da li jabuku treba obrisati
  • if mis_je_na_slici(dogadjaj.pos, pozicije_jabuka[i]
  • da li je korisnik "uzeo" jabuku
  • if len(pozicije_jabuka) == 0:
  • da li je igra završena
  • if i_jabuka >= 0:
  • da li je u toku prevlačenje

    Q-80: Kako u programu razlikujemo prevlačenje od običnog pomeranja miša?

  • očitavamo da li je taster miša dole tokom pomeranja
  • To nije zgodan način, jer taster može biti pritisnut na praznom mestu (korisnik nije "uzeo" predmet koji treba da prevlači)
  • prevlačenje je poseban tip događaja
  • Ne, ne postoji takav tip događaja
  • pri običnom pomeranju miša redni broj "jabuke koju prevlačimo" je -1
  • Tačno