Pong Jokua Scratch-Euskaraz

19
TUTORIALA: PONG (S4A) Dokumentu hau gida bezala erabiliko da pong jokua intuizio-modu azkar batean. Pausuz pausu, zerotik hasita, azalduko dugu nola programatu behar den jokua S4A-rekin. Ondoren Arduino plaka bat gehitu ahal izango diogu elkarreragina hobeago bat lortzeko eta gainera, socket-en bitartez sarean jolasteko. Lehen pausua: S4A-ren instalazioa Nabegatzailea zabalduko dugu, deskargen webgunera Scratch 4 Arduino joan, eta lehenengo paragrafoaren oharrei jarraituz programa deskargatuko eta plaka kargatzeko dugun firmwarea ere adieraziko dugu. Behin instalatu dugula, gure jokuan lanean has gaitezke :) Bigarren pausua: Objektuen sorrera eta hauen portaera programatu Programa ireki eta honako hau topatuko dugu:

description

Scratch eta Arduino teknologia ikasgaian erabiltzeko adibidea.

Transcript of Pong Jokua Scratch-Euskaraz

Page 1: Pong Jokua Scratch-Euskaraz

TUTORIALA: PONG (S4A)

Dokumentu hau gida bezala erabiliko da pong jokua intuizio-modu azkar batean. Pausuz pausu, zerotik hasita, azalduko dugu nola programatu behar den jokua S4A-rekin. Ondoren Arduino plaka bat gehitu ahal izango diogu elkarreragina hobeago bat lortzeko eta gainera, socket-en bitartez sarean jolasteko.

Lehen pausua: S4A-ren instalazioa

Nabegatzailea zabalduko dugu, deskargen webgunera Scratch 4 Arduino joan, eta lehenengo paragrafoaren oharrei jarraituz programa deskargatuko eta plaka kargatzeko dugun firmwarea ere adieraziko dugu.

Behin instalatu dugula, gure jokuan lanean has gaitezke :)

Bigarren pausua: Objektuen sorrera eta hauen portaera programatu

Programa ireki eta honako hau topatuko dugu:

Page 2: Pong Jokua Scratch-Euskaraz

Ikus dezakegunez lehenetsita Arduino (Arduino1) objektua daukagu dagokion sentsoreen taularekin. Osagai hauek dira Arduino plaka batekin loturik daudenak, eta eman nahiko diegun portaera (jokabidea) edukiko dutenak.

Momentuz, ez dugu behar. Horregatik ezabatuko dugu. Objetuen zerrendara joko dugu (eskubian-behean), xaguarekin eskuin-klikatuko dugu eta ezabatu aukeratuko dugu.

Orain guztiz hutsa dagoen proiektu bat izango dugu eta pong jokua sortzeko moduan aurkituko gara. Baina, nondik hasi? Bolatxoa, paletak (jokalariak),... Berez, ez dauka garrantzirik baina gida honetan bolatxoa sortzen hasiko gara. Sor dezagun ba:

Windows-eko Paint antzeko leiho bat azalduko zaigu. Bolatxoa marraztuko dugu nahi dugun kolorearekin, eta ondoren, gorde egingo dugu. (AHOLKUA: zirkulua hobeto ateratzea nahi badugu, marrazten dugun bitartean SHIFT tekla sakatuta edukitzea komeniko zaigu):

Page 3: Pong Jokua Scratch-Euskaraz

Objektua sortu ondoren izena ematea (kasu honetan “bolatxoa”) garrantzitsua da, aurrerago ikusiko dugun bezala. ”Objektua1” izango da lehenetsita aterako den izena. Berrizendatzeko objektuaren izenean klikatu:

Behin bolatxoa sortu dugula, portaera bat eman behar zaio; hau da, programatuko dugu. Zer da egin behar duen gauzarik garrantzitsuena? Mugitu! Beraz, etengabe mugiaraziko dugu “beti” batekin. Programa nola abiarazi ere adierazi behar dugu (bandera berdeari ematen diogunean)Gainera instrukzio bat gehitu diogu: ertza ukitzean errebotatzeko agindua; bestela, ertzera itsatsita geratuko zen betirako norabidea aldatu gabe.

Page 4: Pong Jokua Scratch-Euskaraz

Orain bandera berdean klik egiten badugu bolatxoa alde batetik bestera doala ikusi ahal izango dugu; lehenengo eskubiruntz, eta gero ezkerreruntz. Hoberena litzateke jokua abiatzen dugun bakoitzean bolatxoaren norantza ausazkoa izatea, hau da, edozein alderuntz atera ahal izatea; horretarako, “seinalatu ___rantz” eta “ausazko zenbakia __ eta __ artekoa” aginduak erabiliko ditugu honako beheko irudian ikus dezakegun bezala:

Honen arabera, bolatxoak 0 eta 360 gradu bitarteko norabidea har dezake. Baina hemen arazo bat gerta daiteke: bolatxoa 0 edo 180 gradurekin ateratzen bada, denbora guztian errebotatzen egongo da jokua berrabiarazi arte (eta, beraz, angelu berri batekin atera arte). Nola egingo dugu angelu horiekin ez ateratzeko? Scratch-ek (S4A-k) sistema kartesiarra beste era “irakurtzen” du. Ikusi:

Page 5: Pong Jokua Scratch-Euskaraz

180 eta 360 bitarteko angelu bat erabiltzen badugu aplikazioak berak itzultzen du eta 0 eta 180 tarteko bihurtuko du. Beraz, nola konponduko dugu lehenago esan duguna? Har dezakeen norabide angelua pixkat akotatu beharko dugu, adibidez, 30 eta 150 tartea edo 45 eta 135:

Okerrena da, modu honetan beti eskubiko jokalariruntz joango dela eta beraz, ausazko faktorea pixkat galduko duela. Konpontzerik badu honek? Aldagai bat sortu dezakegu ausazko 1 eta 2 balioen artean (txapon bat airera botatzea bezala litzateke), eta balio horren arabera, alde batera edo bestera aterako da bolatxoa. Horretarako “Aldagaiak” kategoriara joko dugu, “Aldagai berria” klikatu eta izen bat emango diogu: aldea

Page 6: Pong Jokua Scratch-Euskaraz

Nola adierazi (programatu) goiko hori? Ikusi:

Modu honetan “aldea” aldagaiak 1 edo 2 balioa hartuko du programa abiatzen dugun bakoitzean. 1 balioa ateratzen bada, ezkerreruntz aterako da (-45 eta -135 tartea) eta 2 balioa ateratzen bada, eskubiruntz aterako da (45 eta 135 tartea).

Geratzen zaigun beste detaile bat: bolatxoa pantailaren zentrutik abiatzea programa hasten den bakoitzean; horretarako, mugimendua x=0 y=0 posiziotik hasteko agindua gehituko dugu. Ikusi:

Page 7: Pong Jokua Scratch-Euskaraz

Honekin nahikoa dugu. Orain “palak” sortu eta programatzea pasako gara. Momentuz, pala bat egingo dugu, eta horretarako, bolatxoa marrazteko jarraitu ditugun pausuak errepikatuko ditugu.

Zer da egin behar dugun lehenego gauza? Izena eman, kasu honetan “1. jokalaria”. Jarraian hau programatzen hasiko gara. Lehenengo gauza: ezkerreko posizioan eta zentratuta egon behar duela adieraziko dugu (edo eskubiko posizioan) Adibidez, x=-225 y=0:

Page 8: Pong Jokua Scratch-Euskaraz

Eta orain, nola mugituko dugu? Xaguaren bitartez, teklatuaren bitartez,... edo sentsore bat eta Arduino plakarekin (aurrerago ikusiko dugun bezala). Momentuz, teklatuko norabide geziekin egingo dugu. Honela:

Baldintzazko bi erabiliko ditugu tekla aproposa sakatzen ari garela jakiteko, eta betetzen diren kasurako, pala gora edo behera mugituko da. “mugitu y __ aldiz” agindua erabiliko dugu horretarako. Agindu honekin “y” osagaiaren balioa aldatuko du (gora, balio positiboa jartzen badugu, eta behera, sartutako balioa negatiboa denean). Balio hau handituko dugu azkarrago mugitzea nahi badugu, edo txikitu, motelago joatea nahi badugu.

Hau da lehenengo jokalariaren palak egin behar duena. Orain bigarrenarena egin behar dugu, baina horretarako, ez dugu zerotik hasi beharrik. Lehenengoarekin egindakoa aprobetxa dezakegu: palaren gainean klik egin eta “bikoiztu” aukeratuko dugu.

Bere itxura bikoizteaz gain, bere portaera ere bikoiztu da. Orain “pala2” bezala berrizendatuko dugu (beste kolore bat eman dezakegu) eta bere programazioan hainbat gauza aldatu (hasierako posizioa eta mugitzeko erabiliko ditugun teklak, adib.):

Page 9: Pong Jokua Scratch-Euskaraz

AUKERAKOA: erosoago egiteko, behar bada, jokalari bakoitzeko agindu erremintak aldatu beharko genituzke; adibidez, “pala1” jokalariak A eta Z teklak erabilita jokatuko luke eta “pala2” jokalariak xaguaren bitartez mugituko luke bere pala:

Behin palak kokatu eta programatu ditugula gauza bat falta zaigu: bolatxoak paletetan errebotatu arazi.

Hirugarren pausua: objektuen arteko interakzioa

Ez dago funtzio bat “osagai hau jotzen duzunean errebota ezazu” esango duena. Hortaz, guk sortu beharko dugu funtzio hori.

Zer litzateke errebote bat errealitatean? Norabide aldaketa bat objektua ukitzean, besterik ez. Eta zein da hartu behar duen norabide berria? Norabide aldaketa berria simetrikoa izatea nahi badugu, balioa kalkulatu beharko dugu:

Beraz, bolatxoak pala ukitzen duen bakoitzean daraman norabidea (angelua) “-1” koefizientearekin biderkatzearekin nahikoa litzateke:

Page 10: Pong Jokua Scratch-Euskaraz

Bolatxoaren portaerari gehituko diogu horrela geldituko delarik:

Guzti honen arabera lortu dugu oinarrizko “pong” jokua; jokua bolatxo bat eta bi jokalariz kontrolaturiko bi palaz osaturik egongo da.

Orain puntuaketa sistema bat beharko genuke. Nola programatuko dugu puntu bat irabazteko zer gertatu behar den? Modu ezberdinak daude, baina guk hau erabiliko dugu: lehenengo gauza, ertz bakoitzean lerro bat kokatuko dugu (eskubi-ezkerrean). Bolatxoak lerroa ukitzen duen bakoitzean puntuak gehitzen joango da. Lehenengo pala batentzat egingo dugu eta gero, bikoiztuko dugu:

Page 11: Pong Jokua Scratch-Euskaraz

GARRANTZITSUA: zooma ahalik eta urruitena jarri beharko dugu, bestela, objektua (kasu honetan atzeko planoko lerroa) nahi duguna baino txikiagoa geratuko da.

Orain atzeko planoko lerro honi (ertza1) izena jartzea besterik etzaigu geratzen, eta programa abiatzean posizio bat egokitzea:

Bikoiztuko dugu, berrizendatu (ertza2) eta hartu behar duen posizioa aldatu, “pala2”-rekin egin genuen bezala; hau da, -235 aldatuko dugu 235gatik.

Orain bai egin dezakegula: bolatxoak atzeko planoko lerroa ukitzean, beste aldeko jokalariaren puntuaketa unitate batean igotzea. Hau da, atzeko planoko (ertza2) lerroa ukitzen duenean “pala1” jokalariaren puntuaketa unitate batean igotzea, eta alderantziz. Baina nola egingo dugu puntuak zenbatzeko? Aldagaiekin. Aldagai pare bat sortu eta “jokalari1” eta “jokalari2” deituko ditugu, adibidez:

Page 12: Pong Jokua Scratch-Euskaraz

Zeinek zenbatuko ditu puntuak? Bolatxoatik egin dezakegu; atzeko planoko lerroa (fondo1) ukitzen duenean puntu ba gehitzea “jugador1” aldagaiari, eta berdin “jugador2” aldagaiari bolatxoak atzeko planoko lerroa (fondo2) ukitzean:

Beste zeozer gehitzeko aukera dugu: jokalari batek puntua irabazten duenean, hurrengo jokaldian bolatxoa beste zentzuan ateratzea (puntua galdu duenak aterako balu futbolean bezala). Gainera bolatxoak pantailaren zentrutik atera behar da berriro ere:

Guzti hau bolatxoaren portaerari gehitzea besterik ez da geratzen:

Page 13: Pong Jokua Scratch-Euskaraz

Eta noiz bukatuko da jokua? Hori guk erabakiko dugu; adibidez, jokalari batek 10 puntu lortzen dituenean. Hori gertatzen denean, zein jokalarik irabazi duen azaldu daiteke ere: “1. jokalaria irabazle!!”:

Page 14: Pong Jokua Scratch-Euskaraz

Gainera, bigarren jokalariak irabazi duela adierazteko aurrekoa eraldatu besterik ez da behar:

Ikus dezakezuenez, objektuen jantziak berrizendatu ditzazkegu edizio botoia sakatuz. Orain bakarrik portaera gehitu behar diogu:

Page 15: Pong Jokua Scratch-Euskaraz

Laburtuz, objektu honek uneoro konprobatuko du puntuazioak 10era iristen diren edo ez (adib. aldagaien balioa 9 baino handiagoa dela esanez); eta baldintza hori betetzen bada jantzia aldatzea. Gainera, jantzi hori programaren hasieran ezkutatuta egon behar da, eta bi baldintzetako bat betetzen denean azaldu. Programa ere geratu ahal izango dugu “gelditu dena” aginduaren bitartez.

Laugarren pausua: Objektu fisikoekin elkarreragina (Arduino)

Page 16: Pong Jokua Scratch-Euskaraz

Orain, nahi badugu, Arduinon objektu bat gehitu dezakegu e,, tafragorri-gailu pare bat erabili ditzakegu palen mugimendua eskuaren mugimenduarekin kontrolatzeko. Sentsoreen eskema Arduino plakarekin honako hau da:

Arduinoko objektuak honako portaera hau izango luke:

Bi aldagai berri sortuko ditugu: “sensor1” eta “sensor2” eta begizta baten bitartez uneoro gordeko ditugu sentsoreek jasotzen dituzten balioak. Gainera, sentsoreen taula eta Arduinoko sentsorea bera ezkuta dezakegu.

Bukatzeko, palen mugitzeko modua aldatzea besterik etzaigu geratzen:

Page 17: Pong Jokua Scratch-Euskaraz

Sentsoreek emandako balio-barrutia 0 eta 650 tarteko denez (gutxi gora behera), kalkulu txiki bat egin beharko dugu: sentsore bakoitzak emandako balio minimo eta maximoen aldearen erdia kentzea. Adibidez, balio minimoa 50ekoa bada eta maximoa 650ekoa, barrutia edo tartea 600ekoa da, eta beraz, erdia 300ekoa. Gainera norantza aldatu nahi badugu (eskua aldentzean pala goraka joan dadin) egindako kalkulua -1ekin biderkatuko dugu.

Badugu Scratch 4 Arduino erabilita egindako pong joku bat!!