Pelės įvestis
Naudojantis žaidimas
moduliu, galima programuoti interaktyvias programas, reaguojančias į pelės paspaudimus. Į pelės signalus reaguoja arba žaidimo Scena
, arba ant šios scenos sudėti Daiktai
(taip pat ir Veikėjai
bei Dekoracijos
, kurie paveldi visas savo savybes iš Daikto).
Pelės signalai
Programa gali reaguoti į šiuos pelės signalus:
- pelęUžvedus
- pelęJudinant
- pelęNuvedus
- pelęPaspaudus
- pelęAtleidus
- pelęPaspaudusDešinįKlavišą
- pelęAtleidusDešinįKlavišą
Veiksmų (komandų) registravimas
Norint, kad programa reaguodama į pelės signalą atliktų kokį nors veiksmą, reikia registruoti savo sukurtą komandą (procedūrą/funkciją). Dėmėsio! Tokios komandos privalo turėti lygiai du parametrus, į kuriuos pelės signalas automatiškai įrašys X ir Y koordinates.
Registruoti šiuos veiksmus galima reaguoti tiek žaidimo Scenai, tiek ir ant šios scenos sudėtiems Daiktams. Jeigu scenos neturite, galima pelės signalus registruoti tiesiog žaidimui, pavyzdžiui, žaidimas.pelęPaspaudus
.
reikalingas žaidimas
komanda klikt(x, y):
rašyk("pelė paspausta koordinatėse", x, "ir", y)
žaidimas.pelęPaspaudus( klikt )
SVARBU! Reikia nurodyti tik komandos pavadinimą, be parametrų ir be skliaustelių:
reikalingas žaidimas
komanda klikt(x, y):
rašyk("pelė paspausta koordinatėse", x, "ir", y)
# KLAIDA:
# žaidimas.pelęPaspaudus( klikt(10, 10) )
# Teisingai:
žaidimas.pelęPaspaudus( klikt )
Telefonai, planšetės ir kiti liečiami ekranai
Ne visi įrenginiai turi peles: kai kurie (pvz., mobilieji telefonai, planšetiniai kompiuteriai arba kompiuteriai su liečiamaisiais ekranais) yra valdomi liečiant ekraną pirštais arba specialiais rašikliais. Tačiau Angies programos reaguoja į piršto prisilietimą taip pat, kaip ir į pelės paspaudimą - tai yra, palietus ekraną, iškviečiami signalai pelęPaspaudus
, pelęJudinant
ir pelęAtleidus
.
Daikto prikabinimas prie pelės
Žr komandas Daiktas.prisikabinkPriePelės()
ir Daiktas.atsikabinkNuoPelės()
Daiktas bus judinamas per ekraną, judinant pelės kursorių.
reikalingas žaidimas
pilis = žaidimas.Daiktas("pav/pilis1.png", x=300, y=300)
komanda prikabinkPilį(naujasX, naujasY):
pilis.prisikabinkPriePelės()
komanda palikPilį(naujasX, naujasY):
pilis.atsikabinkNuoPelės()
pilis.pelęPaspaudus(veiksmas = prikabinkPilį)
pilis.pelęAtleidus(veiksmas = palikPilį)
Pavyzdžiai
Daikto perkėlimas į naują vietą ekrane
reikalingas žaidimas
pilis = žaidimas.Daiktas("pav/pilis1.png", x=300, y=300)
komanda perkelkPilį(naujasX, naujasY):
pilis.atsirask(x = naujasX, y=naujasY)
žaidimas.pelęPaspaudus(veiksmas = perkelkPilį)
Taško padėjimas pelės paspaudimo vietoje
reikalingas žaidimas
medis = žaidimas.Daiktas("pav/medis1.png", x=100, y=100)
komanda pasodinkMedį(naujasX, naujasY):
medis.atsirask(x = naujasX, y=naujasY)
medis.padėkTaškelį()
žaidimas.pelęPaspaudus(veiksmas = pasodinkMedį)
Linijos piešimas iš vieno taško į kitą
Daiktai gali piešti keliaudami iš vienos vietos į kitą (žr. Daiktas.pradėkPiešti ir Daiktas.nustokPiešti ). Tokiu būdu galima linijomis sujungti pelės paspaudimo taškus.
Štai pavyzdys, kaip Veikėjas vaikšto piešdamas liniją iš vieno taško į kitą, pagal pelės paspaudimus:
reikalingas žaidimas
reikalinga herojai
karys = herojai.karys
karys.atsirask(100, 100)
karys.pradėkPiešti()
komanda sujunkTaškus(naujasX, naujasY):
karys.keliaukĮ(x = naujasX, y=naujasY)
žaidimas.pelęPaspaudus(veiksmas = sujunkTaškus)
Daikto nutempimas iš vienos vietos į kitą
reikalingas žaidimas
pilis = žaidimas.Daiktas("pav/pilis1.png", x=300, y=300)
komanda pilieJudėkSuPele(naujasX, naujasY):
pilis.prisikabinkPriePelės()
komanda pilieAtsiraskNaujojeVietoje(naujasX, naujasY):
pilis.atsikabinkNuoPelės()
pilis.pelęPaspaudus(pilieJudėkSuPele)
pilis.pelęAtleidus(pilieAtsiraskNaujojeVietoje)
Globalių kintamųjų naudojimas
Jeigu reikia naudoti kintamuosius už pelės komandos ribų, naudokite globalius kintamuosius - tai yra, už komandos ribų sukurtus kintamuosius komandos bloke pažymėkite kaip global
.
reikalingas žaidimas
paspaudimai = 0
komanda padidinkPaspaudimus(x,y):
globalus paspaudimai
paspaudimai = paspaudimai + 1
rašyk("paspausta", paspaudimai, "kartų")
žaidimas.pelęPaspaudus(padidinkPaspaudimus)
Visa specifikacija
- pelęUžvedus ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama užvedus pelės kursorių virš Daikto arba Scenos.
Pavyzdžiui:
reikalingas žaidimas
medis = žaidimas.Daiktas('pav/medis1.png', 300, 300)
komanda rašykKadPelėUžvesta(x, y):
rašyk("pelė užvesta ant medžio")
medis.pelęUžvedus ( rašykKadPelėUžvesta )
- pelęJudinant ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama judinant pelės kursorių virš Daikto arba Scenos.
- pelęNuvedus ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama patraukus pelės kursorių nuo Daikto arba Scenos.
Pavyzdžiui:
reikalingas žaidimas
medis = žaidimas.Daiktas('pav/medis1.png', 300, 300)
komanda rašykKadPelėNuvesta(x, y):
rašyk("pelė patraukta nuo medžio")
medis.pelęNuvedus( rašykKadPelėNuvesta )
- pelęPaspaudus ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama paspaudus pelės kairį mygtuką.
Pavyzdžiui:
reikalingas žaidimas
medis = žaidimas.Daiktas('pav/medis1.png', x=200, y=230)
komanda pranyk(pelėsX, pelėsY):
medis.pasislėpk()
medis.pelęPaspaudus( veiksmas = pranyk )
- pelęAtleidus ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama atleidus pelės kairį mygtuką.
reikalingas žaidimas
pilis = žaidimas.Daiktas("pav/pilis1.png", 300, 300)
komanda pilieAtsiraskNaujojeVietoje(naujasX, naujasY):
pilis.atsirask(naujasX, naujasY)
žaidimas.pelęPaspaudus(pilieAtsiraskNaujojeVietoje)
- pelęPaspaudusDešinįKlavišą ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama paspaudus pelės dešinįjį mygtuką.
- pelęAtleidusDešinįKlavišą ( veiksmas ) - registruojama komanda
veiksmas
, kuri iškviečiama atleidus pelės dešinįjį mygtuką.