1 / 33

1 dalis: Programavimas Greenfoot’u

1 dalis: Programavimas Greenfoot’u. James Brucker Kasetsart University 2010 Lietuvi ška (KTU) versija – 2011 Tomas Blažauskas , Eimutis Kar čiauskas. Ar įsivaizduojate , kas tai yra klasės ir objektai ? Tai iš siai š kinsime tiesiog parašydami žaidimą !.

gordy
Download Presentation

1 dalis: Programavimas Greenfoot’u

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1 dalis: Programavimas Greenfoot’u James Brucker Kasetsart University 2010 Lietuviška (KTU) versija – 2011 Tomas Blažauskas, Eimutis Karčiauskas Ar įsivaizduojate,kas tai yra klasės ir objektai? Tai išsiaiškinsime tiesiog parašydami žaidimą!

  2. Greenfootas: kitoks mokymasis Greenfoot yra Java karkasas, kuris padės išmokti prorgamuoti. Jis turikomponentusjūsų gyvenimo palengvinimui. Jūs galitematytiirsąveikauti susavo programa. Nepaisant to – programuosite gryna Java. Jūsų programa Greenfoot Java

  3. Krabų programavimas Pamėginsime suprogramuoti krabų žaidimą. • PaleiskiteGreenfootprogramą. • Atidarykitektu-crab scenarijų... • Jis yra katalogegreenfoot\scenarios • Jei nepatinkaktu-crab, naudokite "crab” • Išsaugokitekaip "crabgame“: Scenario -> Save a Copy As ... "greenfoot\scenarios\crabgame" 4. Atidarykite "crabgame" scenarijų(iruždarykite ku-crab)

  4. Programos kūrimo planas 1 etapas aiškinsimės kaip programuojama, naudojant Greenfoot sukuriamas Krabas, kuris juda ir valgo Sliekus sukuriamas Jūros Vėžys, kuris juda ir valgo Krabus 2 etapas valdyti klaviatūrą (kad galėtume žaisti) ir pridėti garsus 3 etapas veikėjų animacija taškų lenta po 3 etapo Patarimai tapti darkūrybiškesniu

  5. Patyrinėkite elgesį patys Naudokitecrabgame scenarijų. 1. Sukurkite naują Krabą (new Crab). • Dešiniu mygtukuspustelkite Crab. • Parinkite "new Crab( )". • Padėkite krabą į krabų “pasaulį” kairėje. 2. Dešiniu mygtukuspustelkite ant Krabo. 3. Kokią elgsenąturi Krabas? 4. Kokią elgsenąpaveldiKrabasišAnimalklasės?

  6. Krabų žaidimas Kraboobjektassukurtas iš Krabo klasės Čia yra “klasės" Dešinys mygtukasnaujo krabo sukūrimui

  7. Suteikite krabui judėjimą ir pasisukimą • Dešiniumygtuku spustelkite krabą... inherited from Animal > move( ) • Dar kartą iškvieskite meniu ir... inherited from Animal > turn( int angle ) Veikia! • Dabar pasirinkite "act( )" Krabo metodą. act( )yra Krabo klasės dalis. • Kas atsitinka? ... Nieko neįvyksta.

  8. Krabo elgsena • move( )irturn( )yrakrabo elgsenos dalis (metodai). • act( )yra kita elgsenos dalis. • Elgsena apibrėžiamametodais, parašytais Java kalba. Dabar rašysiteJava kodą act( )elgsenai.

  9. Kodėl "act()" yra svarbus act( )yra Greenfoot "run“ (vykdyti)scenarijaus dalis Mes spaudžiame Greenfootiškviečiaact() metodąpasaulio (world)objektui ir kiekvienamveikėjui (actor)vieną kartą. Kai spaudžiame Greenfootliepia pasauliuiir kiekvienamveikėjuivykdyti act( ) vėl irvėlirvėl...

  10. ParedaguokiteKrabo act( ) medotą Pakeiskite act( ) taip, kad jis lieptų krabui judėti. • Redaguojame krabo programą: • Dešiniu mygtukuantCrabklasės • pasirinkiteOpen editor • Koreguokite act( ) metodątokiu būdu: public void act( ) { move(); }

  11. Krabas: act( ) • Spauskite "compile" Krabo klasės sukompiliavimui. • Uždarykiteredaktoriaus langą(naujoje versijoje tai nebūtina) • Sukurkite naują krabą. • Spauskite">Act". • Spauskite "►Run" tam kad iškviesti act() daug kartų.

  12. Protingesnis krabas • Kai paspaudžiate ">Run", kas atsitinka? Liūdna – atsimušęs į sieną, užstringa  • Reikia krabui įkrėsti proto. Tarkime, pradžioje būtų gerai tokia elgsena: move Jei esate pasaulio krašte, tuometpasisukite 15 laipsnių

  13. atWorldEdge( ) Animal(gyvūnas) turi metodą, pavadintą:atWorldEdge( ). Ką jis daro? 1) Padėkite krabą į pasauliocentrą. Dešiniu mygtukuparinkite: Inherited from Animal ->atWorldEdge() Kokia reikšmė? 2) Pajudinkite krabą į pasaulio kraštą.Dar kartą panaudokite atWorldEdge(). Kokia reikšmė?

  14. NaudokiteatWorldEdgeKrabo kode • AtidarykiteCrabklasę redaktoriuje • Pakeiskite "act()" metodą šitaip: public void act() {// atlieka vieną judesio elementą move(); // jei pasaulio krašte - pasisukti if ( atWorldEdge() ) turn( 15 ); } Bustiesa ("true“),jei krabas yra pasaulio krašte Turite rašyti tiksliai taip kaip pateikta. • Sukompiliuokite • Uždarykiteredaktorių • Sukurkite naują krabą ir paleiskite (Run)

  15. Kiekvienas Objektasturi savožinias • Naudokite "new Crab( )" sukuriant 3 krabus. • Pasukitekiekvieną krabą – padarykite kiekvieną krabąskirtingą. • Spauskite "►Run". • Kiekvienas Kraboobjektaselgiasi skirtingai. Kiekvienas krabas turiskirtingasatributų reikšmes. Taigi, jie elgiasi skirtingai. turn(-45) turn(-90)

  16. Krabai išalko... Reikia pašerti krabus kokiu nors maistu. Sukurkime naująobjekto “tipą" pavadintą slieku (Worm). • Dešiniu mygtuku spauskiteAnimalir pasirinkite "New subclass..." • PavadinkiteWorm • Parinkite jam paveiksliuką.

  17. Worm yra Klasė Ką tik sukūrėte naują klasę "class" pavadintąWorm. Sliekas (Worm) taip pat yra gyvūnas(Animal). Dabar galime sukurti Worm objektus.

  18. Pridėkite Worm objektų į pasaulį 1. Dešiniu mygtuku ant Worm pasirinkite "new Worm( )" 2. Kad greičiau sukurti daug sliekų: • Parinkite Worm klasę • ĮspauskiteSHIFTmygtuką ir dėliokitekrabų pasaulyje. 3. Padarykite krabą objektu. 4. ►Run Kas atsitinka?

  19. Išmokykite krabą suvalgyti slieką • užveskitekrabą ant slieko • Dešiniu mygtukuant krabo ir inherited from Animal -> eat( Class cls ) • įrašykiteWorm.class (tipasdaikto kurį norime valgyti).

  20. Suprogramuokime krabą valgyti sliekus Paredaguokitekrabo programą (ir vėl)... new act()elgseną: act( ) move Jei matote slieką, suvalgykite slieką kitaip jei esate pasaulio krašte, pasisukite 15 laipsnių

  21. Paredaguokite krabo klasę (redaktoriuje) • Pakeiskite "act()" metodąšitaip: public void act() { move( ); // jei krabas mato valgomą objektą... if ( canSee( Worm.class ) ) eat( Worm.class ); // jei pasaulio krašte - pasisukite else if ( atWorldEdge() ) turn( 15 ); } (1) Sukompiliuokite. (2) uždarykite redaktorių. |(3) Išmėginkite scenarijų.

  22. Objektų išdėliojimas krabų pasaulyje Tarkime, mes norime turėti jau išdėstytą krabų pasaulį,kiekvieną kartąpaleisdami jį. • Pridėkite populatemetodąkrabų pasauliuitam, kad sukurti objektus: populate( ) sukurti keletą sliekų sukurti krabą išdėstyti pasaulyje (atsitiktinai)

  23. crabWorld.addObject( ) • CrabWorld turi metodą pavadintąaddObject( ). • Jis turi 1 parametrą: veikėją, kurį norime pridėti. • addObject()padeda objektą atsitiktinėje vietoje. • Išmėginkite! new Crab( )

  24. Daugeli objektų įdėjimas automatiškai Tikslas: Realizuotipopulate metodąpridedant daugybę sliekų ir vieną krabą. RedaguokiteCrabWorldklasę, joje įrašykite: public void populate( ) {// create worms addObject( new Worm() ); addObject( new Worm() ); ... // create one crab, too addObject( new Crab() ); }

  25. Patikrinkite populate metodą • Dešiniu meniu krabų pasaulyje iškvieskite meniu • choose populate() • ►Run

  26. Tegul pasaulispopulate()’inasipats • populate( )yra naudingas, bet mesvis darturime iškviesti jį per meniu. • Mes norime daugintis (populate) patys ;-) Kaip?

  27. Kvieskite populate() metodą CrabWorld viduje Kiekviena klasė specialų metodą, vadinamąkonstruktoriumi. Konkstruktoriusiškviečiamas visada, kai objektas sukuriamas. Pridėkitepopulate()metodą CrabWorld konstruktoriui. 1. ParedaguokiteCrabWorldklasę. 2. Pakeiskite "public CrabWorld()" tokiu būdu: 3. Pridėkite "populate();" 4. Sukompiliuokiteir uždarykite redaktorių. Čia yrakonstruktorius public CrabWorld() { super(500, 400, 1); setBackground("sand.jpg"); populate( ); }

  28. Geriau! Krabų pasaulis pats susikuria • Kiekvieną kartą kai “išvalome" (Reset) žaidimą, Greenfoot sukuria naują krabų pasaulį. • CrabWorldkonstruktoriusiškviečiąpopulate( ). 1. Resetsukurianaująkrabų pasaulį. 2. Java iškviečiaCrabWorld konstruktorių. 3. Konkstruktorius iškviečiapopulate( ).

  29. Apibendrinimai: Objektiškai – orientuotos prorgamos • Objektiškai orientuotose programose: • programasusideda išobjektų • objektaižino būsenasiratlieka veiksmus (elgsena) • objektai galisąveikauti. • klasėapibrėžia objektų tipą Kiekvienas daiktasyra objektas, Net ir pasaulis yra objektas

  30. Apibendrinimai: Objektai ir klasės Klasėyra objekto tipopavyzdys (šablonas). Klasėapibrėžia objektųelgsenąiratributus (ką objektai žino). Objektaiyra klasių egzemplioriai (instances). Krabųobjektaiyrakonkretūs gyvūnai Kraboklasėyrašablonas

  31. Apibendrinimai: Kas yra klasė? • Klasė apibrėžia (būsimų) objektųatributus (charakteristikas) irmetodus. • Klasė yra aprašomaprogramavimokalbatokia kaip Java. public class Crab extends Animal { public void act() { move( ); // if you see a Worm then eat it if ( canSee( Worm.class ) ) eat( Worm.class ); // if at edge of world, then turn else if ( atWorldEdge() ) turn( 15 ); } ...

  32. Apibendrinimai: Java naudojimas • Krabo klasėsišeities kodasyra faile Crab.java. • PakeiskiteKrabo kodą, naudodami redaktorių. • Pakeitusišeities kodą, turitesukompiliuotijį prieš naudodami. • Kompiliatoriusišverčia Java tekstus į “baitkodą". • Jeiyra klaidų, kompiliatorius rodysklaidos pranešimą. • Sukompiliuotas “baitkodas" yra faileCrab.class. Neredaguokite jo – tai beprasmiška. • Java Virtuali Mašina (JVM) vykdobaitkodą.

  33. Užduotys savarankiškam darbui Įveskite į krabų pasaulį naują veikėją (vėžį, delfiną, žuvį, ... ), kurie judėtų ne tiesiai, o ratu.Patarimas – metode move() kombinuokite super.move() ir turn(a) komandas bei tinkamai parinkite kampus. Sukurkite naujus pasaulius:pavyzdžiui panaudokite povandeninius rūmus, į kuriuos įplaukęs krabas žūsta (rūmai suvalgo krabą  );raketų, skriejančių tarp meteoritų, pasaulį;bitučių, skaidančių tarp gėlių, pasaulį; ir panašiai ...

More Related