GreenFoot 1 dalis
-
Upload
vivult -
Category
Technology
-
view
108 -
download
0
Transcript of GreenFoot 1 dalis
![Page 1: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/1.jpg)
1 dalis: Programavimas Greenfoot’u
Ar įsivaizduojate, kas tai yra klasės ir objektai?
Tai išsiaiškinsime tiesiog parašydami žaidimą!
James Brucker
Kasetsart University 2010
Lietuviška (KTU) versija – 2011
Tomas Blažauskas, Eimutis Karčiauskas
![Page 2: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/2.jpg)
Greenfootas: kitoks mokymasis
Greenfoot yra Java karkasas , kuris padės išmokti prorgamuoti.
Jis turi komponentus jūsų gyvenimo palengvinimui.
Jūs galite matyti ir sąveikauti su savo programa.
Nepaisant to – programuosite gryna Java.
Java
Greenfoot
Jūsų programa
![Page 3: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/3.jpg)
Krabų programavimas
Pamėginsime suprogramuoti krabų žaidimą.
1. Paleiskite Greenfoot programą.
2. Atidarykite ktu-crab scenarijų...
Jis yra kataloge greenfoot\scenarios
Jei nepatinka ktu-crab, naudokite "crab”
3. Išsaugokite kaip "crabgame“:
Scenario -> Save a Copy As ...
"greenfoot\scenarios\crabgame"
4. Atidarykite "crabgame" scenarijų (ir uždarykite ku-crab)
![Page 4: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/4.jpg)
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 dar kūrybiškesniu
![Page 5: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/5.jpg)
Patyrinėkite elgesį patys
Naudokite crabgame scenarijų.
1. Sukurkite naują Krabą (new Crab).
Dešiniu mygtuku spustelkite Crab.
Parinkite "new Crab( )".
Padėkite krabą į krabų “pasaulį” kairėje.
2. Dešiniu mygtuku spustelkite ant Krabo.
3. Kokią elgseną turi Krabas?
4. Kokią elgseną paveldi Krabas iš Animal klasės?
![Page 6: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/6.jpg)
Krabų žaidimas
Čia yra “klasės"
Dešinys mygtukas naujo krabo sukūrimui
Krabo objektas sukurtas iš Krabo klasės
![Page 7: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/7.jpg)
Suteikite krabui judėjimą ir pasisukimą
Dešiniu mygtuku 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.
![Page 8: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/8.jpg)
Krabo elgsena
move( ) ir turn( ) yra krabo elgsenos dalis (metodai).
act( ) yra kita elgsenos dalis.
Elgsena apibrėžiama metodais, parašytais Java kalba.
Dabar rašysite Java kodą act( ) elgsenai.
![Page 9: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/9.jpg)
Kodėl "act()" yra svarbusact( ) yra Greenfoot "run“ (vykdyti) scenarijaus dalis
Mes spaudžiame
Kai spaudžiame
Greenfoot iškviečia act() metodą pasaulio (world ) objektui ir kiekvienam veikėjui (actor) vieną kartą.
Greenfoot liepia pasauliui ir kiekvienam veikėjui vykdyti act( ) vėl ir vėl ir vėl...
![Page 10: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/10.jpg)
Paredaguokite Krabo act( ) medotą
Pakeiskite act( ) taip, kad jis lieptų krabui judėti.
1. Redaguojame krabo programą:
a) Dešiniu mygtuku ant Crab klasės
b) pasirinkite Open editor
2. Koreguokite act( ) metodą tokiu būdu:
public void act( ){
move();}
![Page 11: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/11.jpg)
Krabas: act( )
Spauskite "compile" Krabo klasės sukompiliavimui.
Uždarykite redaktoriaus langą(naujoje versijoje tai nebūtina)
Sukurkite naują krabą. Spauskite ">Act". Spauskite "►Run" tam kad
iškviesti act() daug kartų.
![Page 12: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/12.jpg)
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:
moveJei esate pasaulio krašte,
tuomet pasisukite 15 laipsnių
![Page 13: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/13.jpg)
atWorldEdge( )
Animal (gyvūnas) turi metodą, pavadintą: atWorldEdge( ).
Ką jis daro?
1) Padėkite krabą į pasaulio centrą. Dešiniu mygtuku parinkite:
Inherited from Animal -> atWorldEdge()
Kokia reikšmė?
2) Pajudinkite krabą į pasaulio kraštą.Dar kartą panaudokite
atWorldEdge().
Kokia reikšmė?
![Page 14: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/14.jpg)
Naudokite atWorldEdge Krabo kode
Atidarykite Crab klasę redaktoriuje
Pakeiskite "act()" metodą šitaip:
public void act(){ // atlieka vieną judesio elementą
move(); // jei pasaulio krašte - pasisukti if ( atWorldEdge() ) turn( 15 );}
Sukompiliuokite Uždarykite redaktorių Sukurkite naują krabą ir paleiskite (Run)
Bus tiesa ("true“), jei krabas yra pasaulio krašte
Turite rašyti tiksliai taip kaip pateikta.
![Page 15: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/15.jpg)
Kiekvienas Objektas turi savo žinias
Naudokite "new Crab( )" sukuriant 3 krabus.Pasukite kiekvieną krabą – padarykite kiekvieną krabą
skirtingą.Spauskite "►Run".Kiekvienas Krabo objektas elgiasi skirtingai.
turn(-90)
Kiekvienas krabas turi skirtingas atributų reikšmes.
Taigi, jie elgiasi skirtingai.
turn(-45)
![Page 16: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/16.jpg)
Krabai išalko...
Reikia pašerti krabus kokiu nors maistu.
Sukurkime naują objekto “tipą" pavadintą slieku (Worm).
1. Dešiniu mygtuku spauskite Animal ir pasirinkite "New subclass..."
2. Pavadinkite Worm
3. Parinkite jam paveiksliuką.
![Page 17: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/17.jpg)
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.
![Page 18: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/18.jpg)
Pridėkite Worm objektų į pasaulį
1. Dešiniu mygtuku ant Worm pasirinkite "new Worm( )"
2. Kad greičiau sukurti daug sliekų: Parinkite Worm klasę Įspauskite SHIFT mygtuką ir dėliokite krabų
pasaulyje.
3. Padarykite krabą objektu.
4. ►Run
Kas atsitinka?
![Page 19: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/19.jpg)
Išmokykite krabą suvalgyti slieką
užveskite krabą ant slieko
Dešiniu mygtuku ant krabo ir
inherited from Animal -> eat( Class cls )
įrašykite Worm.class (tipas daikto kurį norime valgyti).
![Page 20: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/20.jpg)
Suprogramuokime krabą valgyti sliekus
Paredaguokite krabo programą (ir vėl)...
act( )
moveJei matote slieką,
suvalgykite sliekąkitaip jei esate pasaulio krašte,
pasisukite 15 laipsnių
new act() elgseną:
![Page 21: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/21.jpg)
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 - pasisukiteelse if ( atWorldEdge() )
turn( 15 );}
(1) Sukompiliuokite. (2) uždarykite redaktorių. | (3) Išmėginkite scenarijų.
![Page 22: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/22.jpg)
Objektų išdėliojimas krabų pasaulyje
Tarkime, mes norime turėti jau išdėstytą krabų pasaulį, kiekvieną kartą paleisdami jį.
Pridėkite populate metodą krabų pasauliui tam, kad sukurti objektus:
populate( )
sukurti keletą sliekų
sukurti krabą
išdėstyti pasaulyje (atsitiktinai)
![Page 23: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/23.jpg)
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( )
![Page 24: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/24.jpg)
Daugeli objektų įdėjimas automatiškai
Tikslas: Realizuoti populate metodą pridedant daugybę
sliekų ir vieną krabą.
Redaguokite CrabWorld klasę, joje įrašykite:
public void populate( ){ // create worms
addObject( new Worm() );addObject( new Worm() );...// create one crab, tooaddObject( new Crab() );
}
![Page 25: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/25.jpg)
Patikrinkite populate metodą
1. Dešiniu meniu krabų pasaulyje iškvieskite meniu
2. choose populate()
3. ►Run
![Page 26: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/26.jpg)
Tegul pasaulis populate()’inasi pats
populate( ) yra naudingas, bet mes vis dar turime iškviesti jį per meniu.
Mes norime daugintis (populate) patys ;-)
Kaip?
![Page 27: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/27.jpg)
Kvieskite populate() metodą CrabWorld viduje
Kiekviena klasė specialų metodą, vadinamą konstruktoriumi.
Konkstruktorius iškviečiamas visada, kai objektas sukuriamas.
Pridėkite populate() metodą CrabWorld konstruktoriui.
1. Paredaguokite CrabWorld klasę.
2. Pakeiskite "public CrabWorld()" tokiu būdu:
3. Pridėkite "populate();"
4. Sukompiliuokite ir
uždarykite redaktorių.
public CrabWorld() { super(500, 400, 1); setBackground("sand.jpg"); populate( );}
Čia yra konstruktorius
![Page 28: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/28.jpg)
Geriau! Krabų pasaulis pats susikuria
Kiekvieną kartą kai “išvalome" (Reset) žaidimą, Greenfoot sukuria naują krabų pasaulį.
CrabWorld konstruktorius iškviečią populate( ).
1. Reset sukuria naują krabų pasaulį.
2. Java iškviečia CrabWorld konstruktorių.
3. Konkstruktorius iškviečia populate( ).
![Page 29: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/29.jpg)
Apibendrinimai: Objektiškai – orientuotos prorgamos
Objektiškai orientuotose programose:
programa susideda iš objektų objektai žino būsenas ir atlieka veiksmus (elgsena)
objektai gali sąveikauti.
klasė apibrėžia objektų tipą
Kiekvienas daiktas yra objektas,
Net ir pasaulis yra objektas
![Page 30: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/30.jpg)
Apibendrinimai: Objektai ir klasėsKlasė yra objekto tipo pavyzdys (šablonas).
Klasė apibrėžia objektų elgseną ir atributus (ką objektai žino).
Objektai yra klasių egzemplioriai (instances).
Krabo klasė yra šablonas
Krabų objektai yra konkretūs gyvūnai
![Page 31: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/31.jpg)
Apibendrinimai: Kas yra klasė? Klasė apibrėžia (būsimų) objektų atributus
(charakteristikas) ir metodus.
Klasė yra aprašoma programavimo kalba tokia kaip Java.
public class Crab extends Animal {
public void act() {move( );// if you see a Worm then eat itif ( canSee( Worm.class ) )
eat( Worm.class );// if at edge of world, then turnelse if ( atWorldEdge() )
turn( 15 );}...
![Page 32: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/32.jpg)
Apibendrinimai: Java naudojimas
Krabo klasės išeities kodas yra faile Crab.java.
Pakeiskite Krabo kodą, naudodami redaktorių.
Pakeitus išeities kodą, turite sukompiliuoti jį prieš naudodami.
Kompiliatorius išverčia Java tekstus į “baitkodą".
Jei yra klaidų, kompiliatorius rodys klaidos pranešimą.
Sukompiliuotas “baitkodas" yra faile Crab.class. Neredaguokite jo – tai beprasmiška.
Java Virtuali Mašina (JVM) vykdo baitkodą.
![Page 33: GreenFoot 1 dalis](https://reader030.fdocuments.net/reader030/viewer/2022013115/55a4555d1a28abd03a8b47cd/html5/thumbnails/33.jpg)
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 ...