• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

OOP Binasove skupiny

Started by nimrod, 17.11.2012, 00:23:49

« predchdzajce - alie »

nimrod

Neviete mi niekto pomoct s krokom c.3 z tohto cvicenia: http://it4kt.cnl.sk/c/oopng/08.html ?
Treba nakodit funckiu " public boolean intersects(Actor actor){} " ktora zisti ci sa hrac (actor player) nachadza na lekranicke (actor energy).
Problem je v tom, ze neviem povedat funkcii ze x,y myslim poziciu hraca a a,b myslim poziciu lekarnicky.
               
   

Agamemnon

je jedno, či x-y je hráč a a-b je lekárnička... alebo naopak (x-y je lekárnička, a-b je hráč)...

nechápem inak úplne, čo sa vlastne pýtaš (aj keď to môže byť tým, že to zadanie som nevidel a prečítal som si len tú časť, ktorú si označil - krok 3... ale možno si to nakódujem zajtra :D)
All code is crap.

42

Tren

jedno bude len getX() getY() a druhe actor.getX() a actor.getY() alebo nejak tak asi?

Agamemnon

aha...
je jedno, či pár x, y je hráč, alebo lekárnička, pokiaľ je to konzistentné...
tj. ak x bude x-pozícia hráča, tak y musí byť y-pozícia hráča... a a,b potom pozície lekárničky...
ale môže to byť aj opačne - tj. x bude x-pozícia lekárničky, y y-pozícia lekárničky a a,b bude pozícia hráča...

samozrejme, musíš dodržať konzistenciu aj pre výšku a šírku
All code is crap.

42

robo22

ja mma zas problem s krokom 4 ... konkretne 4.3..... volanie metódy removeActor() nad objektom sveta... robi sa to pomocou metody getPlayer()..... ale nad objektom sveta sa tato metoda neda volat kedze neexistuje.

Don_Corleone

#5
Quote from: robo22 on  18.11.2012, 11:41:52
ja mma zas problem s krokom 4 ... konkretne 4.3..... volanie metódy removeActor() nad objektom sveta... robi sa to pomocou metody getPlayer()..... ale nad objektom sveta sa tato metoda neda volat kedze neexistuje.

stiahni najnovsi AlienLib
.................................................

U mna je skor problem ten ... ze akonahle chcem pouzit world.getPlayer ... napr dale .getX() ... getEnergy .. proste hocico ..tak mi hadze nullpointerexception .. ak to pretypujem na ((Player)(world.getPlayer())) .. robi to iste

Agamemnon

ten null pointer znamená to, že nemáš v premennej žiadnu inštanciu...
All code is crap.

42

Don_Corleone

no vsak prave toto ze ten getPlayer() na objekte world ...mi ma vracat instanciu playera nie ?

Agamemnon

nemám predstavu :) logicky áno, ale to ešte neznamená, že toho hráča netreba niekde nastaviť prv...
čo som pozeral dokumentáciu teraz, tak tam getplayer nie je, takže tá je asi neaktuálna... bez toho ti neporadím, keď disassembly tej knižnice sa mi fakt robiť nechce :)
All code is crap.

42

Sif

celkom ma potešila táto téma, už som sa chystala dnes zakladať niečo podobné.. stojím na tom istom probléme.. aj keď už som nenašla riešenie, zatiaľ.. aspoň viem, že nie je chyba vo mne  bp

robo22

ked chces pouzivat getPlayer() tak najprv musis v triede Main nastavit world.setPlayer(player)


Tren

Quote from: Sif on  20.11.2012, 02:22:22
celkom ma potešila táto téma, už som sa chystala dnes zakladať niečo podobné.. stojím na tom istom probléme.. aj keď už som nenašla riešenie, zatiaľ.. aspoň viem, že nie je chyba vo mne  bp
v kniznici chyba nie je ale mozno nieco zabudli napisat do scenara a tebe to robi chybu lebo si zabudla ak nahodou len spomenul cviciaci na cviku. tak napis co konkretne ti nejde  :)

Agamemnon

akože... kľudne píšte problémy s oop... snažil som sa pomáhať minulé roky, budem v tom pokračovať aj tento rok...
len tento rok mám miernu nevýhodu, lebo po minulé roky som poznal zadanie :D a dokonca som robil tú knižnicu... :) takže som vedel ľahšie odpovedať na otázky :D
All code is crap.

42

nimrod

Quote from: Tren on  17.11.2012, 17:18:17
jedno bude len getX() getY() a druhe actor.getX() a actor.getY() alebo nejak tak asi?

ano, tak to ma byt.

nimrod

Ako zapisem printf("%s",string);  v jave?

Agamemnon

All code is crap.

42

tino8

ten Formatter je dobry ak chces este niejak dalej formatovat ten string, ale ak chces spravit jednoducho to co mas v kode, tak System.out.println(string);


karamel je cukr co se uz neuzdravi!

m@tej

cawte priatelia, no dostal som sa na 9. cviko a trosku mam problemy s tymi listami  bu konkretne dosiel som na bod 1.3 a tam je implementovat metodu iterator.  Len mi prosim vysvetlite co to je ten iterator. co ma vratit alebo k comu to je??  :)
tu je dane cviko: http://it4kt.cnl.sk/c/oopng/09.html

diky

xxx3

tam mas napisane, ze:
iterator() - získa z listu items iterátor

takze predpokladam, ze items je ArrayList(), takze mas ziskat z ArrayListu items jeden item, cize items.get(cislo) ked som dobre pochopil

m@tej

no asi si dobre pochopil, ale co to vlastne ten iterator je?? znameto to ze kazdy item je reprezentovany cislom a ja mam ziskat cislo jedneho item-u??

xxx3

#20
hm, asi to nebude tak ... lebo ta funkcia nema mat ziadny argument, cize to nemoze vracat jeden konkretny item z items ... mozno to ma vracat cele items, neviem ... neviem co znamena iterator .. pockaj si na niekoho mudrejsieho, mna to napadlo ako prve ale asi to nebude ono :D

pozri si toto, mozno ti to pomoze: http://www.kiv.zcu.cz/~ledvina/vyuka/poruban/cv8/cv8.html

Agamemnon

nedobre si to pochopil...

iterator je design pattern, ktorý umožňuje prechádzať cez prvky kolekcie (zoznamu, poľa, etc)...
všeobecne ten design pattern funguje tak, že má metódy movenext a getcurrent... kde potom pomocou while vieš prejsť cez všetky prvky nejak takto:

while (list.movenext() != null) {
  process(list.getcurrent());
}


v prípade javy a .netu (a ďalších) sa iterovanie robí cez konštrukciu foreach...
v jave je zápis pre foreach konštrukciu nasledovný:

for (Type item : list) {
  ...
}

v .net to funguje cez kľúčové slovo foreach

v tomto konkrétnom prípade vy máte triedu, ktorá má jednu z privátnych premenných list (ArrayList)... tento list už má implementovaný pattern iterator (ak pozriete v dokumentáciu ku jave, tak zistíte, že jedna z metód, ktorú ArrayList má je iterator(), ktorý vráti objekt type Iterator<E>)... tento iterator umožňuje iterovanie cez prvky arraylistu pomocou foreach konštrukcie (samozrejme, ide to aj cez while, ako som to popísal vyššie, ale kto by to robil? keď cez foreach je to jednoduchšie... zvyčajne...)

takže to, čo vy potrebujete urobiť je, že zverejníte tento iterator arraylistu predmetov v Backpacku aj pre Backpack samotný...

kompletné riešenie by som vám tu asi napísať nemal... ale aspoň náznak urobím... v triede Backpack urobíte metódu, ktorá bude vyzerať takto:

public Iterator<Item> iterator() {
  ...
}


telo si doplňte sami... malo by to byť pochopiteľné z toho, čo som napísal... :) snáď :)
a hlavne tá návratová hodnota by mohla byť slušná pomôcka k tomu, čo máte urobiť...
:)
All code is crap.

42

m@tej

vdaka za vycerpavajucu odpoved, ale asi som nejak moc blby :D
nemozes napisat tu metodu?? sak jedna funckia neni cely kod  :)
kazdopadne vdaka za vysvetlenie, aspon viem co je iterator :)

Agamemnon


public Iterator<Item> iterator() {
  return items.iterator();
}
All code is crap.

42

m@tej

dakujem :)
som zvedavy kedy sa opat zaseknem :)