Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
GreenFoot 1 dalis
1. 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
2. Greenfootas: kitoks mokymasis
Greenfoot yra Java
karkasas , kuris padės
išmokti prorgamuoti.
Jūsų programa
Jis turi komponentus jūsų
gyvenimo palengvinimui.
Jūs galite matyti ir
sąveikauti su savo
programa.
Nepaisant to –
programuosite gryna
Java.
Greenfoot
Java
3. Krabų programavimas
Pamėginsime suprogramuoti krabų žaidimą.
1.
Paleiskite Greenfoot programą.
2.
Atidarykite ktu-crab scenarijų...
3.
Jis yra kataloge greenfootscenarios
Jei nepatinka ktu-crab, naudokite "crab”
Išsaugokite kaip "crabgame“:
Scenario -> Save a Copy As ...
"greenfootscenarioscrabgame"
4. Atidarykite "crabgame" scenarijų (ir už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 dar
kūrybiškesniu
5. 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?
7. 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.
8. 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.
9. Kodėl "act()" yra svarbus
act( ) yra Greenfoot "run“ (vykdyti) scenarijaus dalis
Mes spaudžiame
Greenfoot iškviečia act() metodą
pasaulio (world ) objektui ir
kiekvienam veikėjui (actor)
vieną kartą.
Kai spaudžiame
Greenfoot liepia pasauliui ir
kiekvienam veikėjui vykdyti
act( ) vėl ir vėl ir vėl...
10. Paredaguokite Krabo act( ) medotą
Pakeiskite act( ) taip, kad jis lieptų krabui judėti.
1.
Redaguojame krabo programą:
a)
b)
2.
Dešiniu mygtuku ant Crab klasės
pasirinkite Open editor
Koreguokite act( ) metodą tokiu būdu:
public void act( )
{
move();
}
11. 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ų.
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,
tuomet pasisukite 15 laipsnių
13. 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ė?
14. 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 );
}
Bus tiesa ("true“), jei krabas yra
pasaulio krašte
Sukompiliuokite
Uždarykite redaktorių
Turite rašyti tiksliai taip kaip pateikta.
Sukurkite naują krabą ir paleiskite (Run)
15. 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.
Kiekvienas
turn(-45)
krabas turi
skirtingas
atributų
reikšmes.
turn(-90)
Taigi, jie
elgiasi
skirtingai.
16. 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ą.
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ę
Įspauskite SHIFT mygtuką ir dėliokite krabų
pasaulyje.
3. Padarykite krabą objektu.
4. ►Run
Kas atsitinka?
19. 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).
20. Suprogramuokime krabą valgyti sliekus
Paredaguokite krabo 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
populate metodą krabų pasauliui tam, 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: 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, too
addObject( new Crab() );
}
26. Tegul pasaulis populate()’inasi pats
populate( ) yra naudingas, bet mes vis dar turime
iškviesti jį per meniu.
Mes norime daugintis (populate) patys ;-)
Kaip?
27. 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ę.
Čia yra
2. Pakeiskite "public CrabWorld()" tokiu būdu: konstruktorius
3. Pridėkite "populate();"
4. Sukompiliuokite ir
uždarykite redaktorių.
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į.
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( ).
29. 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
30. Apibendrinimai: Objektai ir klasės
Klasė yra objekto tipo pavyzdys (šablonas).
Klasė apibrėžia objektų elgseną ir atributus (ką objektai
žino).
Objektai yra klasių egzemplioriai (instances).
Krabų objektai yra
konkretūs gyvūnai
Krabo klasė yra
šablonas
31. 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 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ė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ą.
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 ...