Pelės įvestis

Iš wiki.angis.net.
Jump to navigation Jump to search

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ą.