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

OP - Objektove programovanie

Started by pepco, 23.02.2008, 02:04:57

« predchdzajce - alie »

include

Quote from: Agamemnon on  14.04.2008, 03:30:15
ak máš dobre implementovanú akciu "použi vec", tak to potom presne vieš použiť aj na aktualizáciu celého prostredia na základe času (a aj pri automatickom plynutí času)...
plus stroj času máš pravdepodobne ako item... takže pri akcii "použi stroj_času" vieš adaptovať prostredie na zmenu...


Stroj casu nemam ako item, ale ma nejake jeho funkcie, pricom je to riesene ako miestnost, ano miestnosti su generovane algoritmom, kto by to pisal rucne, ale o to nejde. Nestaci pouzit metodu "pouzi vec", ta sice funguje o tom to nie je, ale ako urobim to, aby veci, ktore maju v buducnosit iste funkcie naviac od veci z minulosti, vedeli ovplyvnit technologie minulosti a na zaklade toho celu buducnost... aha, uz ma nieco napada... skusim daco zriesit.

PS: miestnosti sa menia dynamicky, avsak neviem urobit to, aby sa menila aj miestnost s casostrojom, no to zatial neriesim, to moze ostat aj tak, lebo potom by toho bolo uz vela na take zadanie.

Agamemnon

btw... netreba brať item strikne ako item (item môže byť aj niečo, čo nie je vidno, len vykonáva nejakú akciu - napr. nejaký timer, prípadne nejaký medzistupeň pre nejaké akcie a pod... zle sa mi to popisuje slovami, žiaľ kresliť tu nvm)... a netreba sa za každú cenu snažiť o kontinuitu bytia...

tj.:
máš lampu, tá je vypnutá... a teraz ju chceš zapnúť... tak máš 2 možnosti:
- urobíš jej nejaký vnútorný stav, a ten zmeníš
- urobíš 2 objekty - "vypnutá lampa" a "zapnutá lampa"... pri zapnutí ten prvý zrušíš a ten druhý zobrazíš...
to druhé ponúka oveľa väčšiu voľnosť pri rovnakej obtiažnosti implementácie...

All code is crap.

42

include

Do skoly chodim, lebo mam ISIC zlavy a mam rad masove hamburgery s tatarkou. A tak nejak ako pisal Agamemnon tak som tu item aj pochopil, kedze casostroj je nieco ako item v miestnosti, no neda sa s nim hybat pocas celej hry, za ziadnych okolnosti. Ale ked tak robim tu implementaciu prisposobovania veci na zaklade novych technologii, tak mi to prijde tymto mojim sposobom dost banalne, prosim napiste nejaky napad. Radsej tu neuvediem svoje myslienky, aby Vas neovplyvnili, prosim skuste pouvazovat, velmi by ste mi pomohli, vdaka.

Agamemnon

najlepšie nápady sú také, ktoré robia to, čo majú, a sú jednoducho realizovateľné...

ak problém vyzerá zložito, to ešte neznamená, že nemá jednoduché/elegantné riešenie :)
All code is crap.

42

include

Neverim, ze nikto nema ziaden napad. Nieco uz mam zmaknute, no prispejte s napadom, prosim.

Havran

ta ked ja nechapem co vlastne chces :(
Achievement of your happiness is the only moral purpose of your life.

Agamemnon

a to, čo si dal k dispozícií je málo na nejaký nápad... hlavne ak nvm, s čím mám operovať - ako máš čo implementované, ako čo u teba funguje atď
All code is crap.

42

include

O nedlho vydam "demo". Uz som to ciastocne nakodil. Dufam, ze potom budete mat viac napadov.

Agamemnon

pokiaľ nebude open source, tak asi skôr nie :)
All code is crap.

42

Payne

#409
Pocuvaj ma include, ty co vlastne chces?

include

Quote from: Payne on  15.04.2008, 14:38:08
Pocuvaj ma include, ty co vlastne chces?

No potreboval som pomoct so zadanim, ale uz som to nejak zriesil. Je to popisane v predoslych postoch. Pracujem na verzii zadania, ktoru budem moct dat do obehu a dufam, ze prispejete napadmi, ktore potom budem moct implementovat. Ma to nejak chytilo, ta hra.

Alzak

Mam abstraktnu triedu ITEM, ktora ma konkretne aj abstraktne metody. Dalej mam 3 triedy (napr. stolicka,stol,kniha), ktore su odvodene (implementuju) abstraktnu triedu ITEM. Chcem vytvorit instancie vsetkych 3 tried a ulozit ich do pola ITEM[].
Ako by som to mal urobit, aby som potom mohol pouzivat metody v danych 3 triedach a sucasne aj konkretne metody v triede ITEM.

public abstract class ITEM
{
    public void konkretnaMetoda()
    {
        ...
    }
    public abstract void abstractnaMetoda(int i);
}

public class stol : ITEM
{
    public void konkretnaMetoda2()
    {
        ...
    }
     public override void abstractnaMetoda(int i)
    {
        ...
    }
}

public class program
{
    public Program()
    {
        ITEM instancia = new stol();
        instancia.konkretnaMetoda();             //Toto by malo ist v pohode
        instancia.konkretnaMetoda2();           //Toto nejde, ale chcel by som, aby to islo
        instancia.abstractnaMetoda(5);         //Tu by sa mala volat prepisana metoda v triede stol?
    }
    public static void Main()
    {
        new Program();
    }
}

Agamemnon

instancia.konkretnaMetoda2();           //Toto nejde, ale chcel by som, aby to islo

pretypuj a pôjde:
((stol) instancia).konkretnaMetoda2();
All code is crap.

42

ApokalypS

ach jaj eminka, ty sa asi zase nudis, ze tie stare videjka vytahujes..
80% mozgu človeka tvorí kvapalina, v mojom prípade brzdová..

CHCEM S5 :zuzka: STARY IS :zuzka: !!!!
http://www.tu-ke.com/forum/o-nicom/otvoreny-list-vedeniu-firmy-dupress-(dodavatel-mais)/

puq

taka otazka Item ma povinne name a description..... a dalej je pri prikazoch ze: preskumaj VEC, ono to ma hodit len to description? alebo nieco nove?

kOsTi

no tak podla mna napr este mozes mat nieco take ak napr ked das preskumat skatulku tak ti tam moze najst novy Item v nej... a tak :)
:trestac:

puq

no hej ale take nemam :P okey pri verzii 1.0 to necham tak :)

Final_Destructer

#417
Aky je rozdiel medzi "dž" a "ô"?

dž:
Item RoomItems = new ArrayList();

ô:
IItem RoomItems = new ArrayList();

EDIT:

Ešte jedna otazka:

chcel by som smery do ktor(i/y)ch sa da z miestnosti ist reprezentovat enumeracnym typom ...napr. private enum Directions... trapi ma vsak taka vec ze ked budem vytvarat napr. miestnost ako konstruktoru zadam tie pripustne smery. Resp. ako to riesite vy
Wanna get destructed?

Agamemnon

predpokladám, že IItem je rozhranie z tej sady, čo je dodaná ku zadaniu?

ak hej, tak minimálne to s IItem nebude fungovať... to s Item len za istých podmienok, ale skôr tiež nie...

inak... rozdiel je taký, že ako inštanciu rozhrania môžeš vytvoriť objekty rôznych typov - ak máš viac tried, ktoré implementujú dané rozhranie:

interface IRozhranie { ... }

class Trieda : IRozhranie { ... }
class Classa : IRozhranie { ... }

a potom niekde v kóde môžeš použiť takéto veci:

IRozhranie a = new Trieda();
ale aj
IRozhranie b = new Classa();


výhodné použiť napr. pri predávaní parametrov metóde... (aj viacero ďalších použití):

int Method(IRozhranie r) { ... }

použitie:
Method(a);
ale aj:
Method(b);

All code is crap.

42

Agamemnon

pre edit:

hodnoty enum vieš normálne použiť ako akúkoľvek inú hodnotu (napr. ako číslo 12)


public enum Direction {Hore, Dole}

class Trieda {
  public Trieda(Direction d) { ... }
}

použitie:
Trieda t = new Trieda(Direction.Dole);
resp.
Trieda t = new Trieda(Direction.Hore);

All code is crap.

42

Mao

Mozes to riesit tak ze kazda miestnost bude obsahovat referencie susednych miestnosti, nejaky arraylist do ktoreho nahadzes ten enumeracny typ, a na zaklade jeho obbsahu budes vediet ci existuje prechod v danom smere, potom mozes mat nejake 4 boolovske premenne, ktore ak existuje cesta v danom smere budu true, potom mozes mat maticu incidencie. Moznosti je vela´.

A co sa tyka toho rozdielu, tak to ti prelozi kompilatotr? Ved napravo mas typ arraylist a nalavo je typ Item, resp Rozhranie IItem.

Final_Destructer

#421
Ja som to myslel tak ze ked mam rozhranie IItem a urobil som si aj triedu Item (ktora to rozhranie implementuje) ci mam pouzivat ako typ Item alebo IItem? Napr. ked robim novy BackPack ..tak to bude:

IItem Inventory = new ArrayList() alebbo Item Inventory = new Ar...

Lebo v tej triede Step (ktora mimochodon neviem na co je :D) je backpack urobeny ako IBackPAck...

EDIT: Ked som implementoval rozhranie IBackPack tak v metode Push to ako parameter prebera nieco typu IItem... to tam tak nechat alebo to prepisat na Item

Wanna get destructed?

Agamemnon

to s arraylistom ti nepôjde

používaj inštancovanie rozhrania
IItem i = new Item();
All code is crap.

42

JCube

ked chces mat zoznam Itemov tak to sprav ako

List<Item> itemList = new List<Item>();
sudo [ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Alive!"

Final_Destructer

Nieco ako ArrayList Itemov neexistuje?
Wanna get destructed?