játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5440
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2519

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2186
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] > 10 < [15] [20] [25] [30] [35] [40] [45] [46]
LugaidVandroiy - Törzstag | 504 hsz       Online status #164153   2011.09.16 20:51 GMT+1 óra  
Srsly, mi a halál az a "kondó" meg a "kodó"?

Az én teljesen szubjektív véleményem: C# jó nyelv, főleg kezdőknek, mert egy rakat terhet levesz a válladról. Ha ez lenne esetleg kombinálva egy rendes keretrendszerrel (ami messziről kerüli a .NET-et), és 100% cross-platform lenne (-> nem kell trükközni a Monoval), akkor csak ezt ajánlanám.

Egyébként kezdésnek egy C# és XNA kombó tökéletes.

   
Parallax - Tag | 574 hsz       Online status #164132   2011.09.16 20:17 GMT+1 óra  
Idézet
Tibsy :
Hi
egy programozása foglalkozó cikkben olvastam, egy furcsaságot aról szólt, hogy állítólag a visual nyelvek PL: vC# valamivel lassabban fút le mint más régebbi programozási nyelvek .
ok azt tudom, hogy a Kodók 91 % ismétlődő ellenőrzések -böl áll ,és ettöl kicsit lassú
de ha kettő Kondót ugyan úgy írunk meg. akkor tényleg lassabban végzi el feladatot a visual-nyelv ?


Nem hiszem, hogy érdemes még ezzel foglalkoznod, de némileg lassabban igen. Range checking, exception handling, rakás ellenőrzés az egyik. Röptében IL-ből CPU kódra fordítás és futtatás ellenőrzötten a másik. Lényegében "régebbi" magasszintű OOP nyelven se nehezebb semmivel programozni, legfeljebb ahhoz nincs készen egy csomó framework, amiket a modernebbekhez alapból szállítanak. De ez játékfejlesztésnél szintén nem szempont, mert ezek szinte kivétel nélkül üzleti komponensek, adatbázis kezelő segéd rendszerek stb.

Szóval ilyeneken szerintem totál fölösleges aggódni addig, amíg olyan szintre el nem jutsz.

   
Tibsy - Tag | 307 hsz       Online status #164122   2011.09.16 19:32 GMT+1 óra  

Ezt a hozzászólást Tibsy módosította (2011.09.17 11:45 GMT+1 óra, ---)
   
Bukta - Tag | 308 hsz       Online status #164113   2011.09.16 18:44 GMT+1 óra  
pac-man-nél nem, de nehogy vmi világsikerű dolgot írjatok, me akk lehet h rákérdenek, de nemtom
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Parallax - Tag | 574 hsz       Online status #164104   2011.09.16 17:33 GMT+1 óra  
Idézet
Bukta :
Ott a vcs 20xx expess edition, le lehet tölteni ingyenes csak reg kodot kell kérni, de ígyis free. Vagy az ee-be nincs ilyen performance analysis? vagy mi - csak stopwatch


Hogy lenne már, de otthonra nem tök mindegy? Szerintem nem töri rád senki az ajtót, hogy milliárdokkal károsítottad meg a céget, mert a pac-man-t az Ultimate-el írod.

   
Bukta - Tag | 308 hsz       Online status #164101   2011.09.16 17:10 GMT+1 óra  
Ott a vcs 20xx expess edition, le lehet tölteni ingyenes csak reg kodot kell kérni, de ígyis free. Vagy az ee-be nincs ilyen performance analysis? vagy mi - csak stopwatch
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Kuz - Törzstag | 4455 hsz       Online status #164045   2011.09.15 21:11 GMT+1 óra  
Ez mekkora már! Írom is...

Szerk.: bugos az egész coderun, mégsem jó.

Ezt a hozzászólást Kuz módosította (2011.09.15 21:44 GMT+1 óra, ---)
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Parallax - Tag | 574 hsz       Online status #164043   2011.09.15 21:04 GMT+1 óra  
Idézet
Kuz :
Meg kéne názni, hogy az interface-es, vagy a generikus megoldás megy gyorsabban, csak itthon nincs c#-om.


Ez nem kifogás, tessék a webes VS-t használni, hiszen felhőkorszakban vagyunk, vagy mi.

   
Kuz - Törzstag | 4455 hsz       Online status #164042   2011.09.15 21:00 GMT+1 óra  
Meg kéne názni, hogy az interface-es, vagy a generikus megoldás megy gyorsabban, csak itthon nincs c#-om.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Bukta - Tag | 308 hsz       Online status #164015   2011.09.15 19:29 GMT+1 óra  
Tibsy: ne is hallgass rájuk - nah ez csak vicc volt. A lényeg, hogy legyen C# könyved, min 10 jegyzeted gépeden (sok 100 oldal), internet (msdn.com), .net&xna&amithasználsz doksi - google,wiki, jf.hu (hogy ne érezd magad egyedül mint fejlesztő), akarat, kitartás, egyediség(a gondolat, hogy egyedi vagy az is elég). Jah és néhány év - csak ez idő alatt ne a plafont nézd .

Nah de a lényegre térve Kuz kösz a helpet, de épp most jutottam el oda, hogy műkszik amit beszéltünk, csak teljesen máshogy csináltam a dolgokat.Van benne minden, bonyolút a kod - nested class, <T> whereel sok eventel, interfésszel -, annak is örülök ha nem keveredek bele uhh nem is fűzök hozzá semmit. Jó és cool
Kicsit késtem, de sok dolog volt a heten keveset gépetem
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Kuz - Törzstag | 4455 hsz       Online status #163951   2011.09.15 13:41 GMT+1 óra  
Türelem és sok gyakorlás. Mivel suli nélkül nehéz programozást tanulni, ezért azt mondom nyugodtan kezdd el az xna-t. Még tanult programozóként is sok marhaságot csinálnál, szóval ettől nem kell félni. Itt lehet kérdezni, megpróbálunk segíteni, aztán majd alalkulnak a dolgok. Nem kell egyből Crysist fejleszteni, az elején már az is jó, ha 'okosan' ki tudsz rajzolni úgy 100 különböző kis képet, hogy emiatt nem kell 100 különböző osztályt megcsinálnod, csak egyet, ami képes bármelyik képet kezelni. Sok szar megoldáson fogsz keresztülmenni, mire elérsz oda, hogy valamennyire használható megoldásokat fogsz tudni gyártani. Én olyan 2004 óta foglalkozok programozással, de még most is csinálok olyan megoldásokat, hogy a saját kezemet törném el legszívesebben.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Tibsy - Tag | 307 hsz       Online status #163949   2011.09.15 13:12 GMT+1 óra  
alig várom már hogy én is legyek
   
Parallax - Tag | 574 hsz       Online status #163750   2011.09.13 15:13 GMT+1 óra  
Igen csak ezek borzasztó összetett dolgok, mindenképp alapokkal kell indítani akkor is ha ez rangon alulinak tűnik. Mindennek van bizonyos érési ideje, végig kell járni a dolgokat elejétől. Ezt csak azért írom, mert az látszik, hogy alapokkal vergődsz sok esetben.

   
Tibsy - Tag | 307 hsz       Online status #163747   2011.09.13 15:02 GMT+1 óra  
Parallax -én nem váltóztattam meg semmit ugyan úgy a vC#- és a neoaxis , unity- enginénél maradok , csak én tovább gondoltam azt is ha majd 1x én is tudok majd programozni az elég lesz e aXna-hoz ,csak egy ártatlan kérdésem volt semmi több .
   
Parallax - Tag | 574 hsz       Online status #163741   2011.09.13 13:47 GMT+1 óra  
Idézet
Tibsy :
U.I
a vC# -alapok elegendő ahhoz, hogy el kezdjek XNA-t tanulni vagy ahhoz kell még tanulni valamit vC #-al kapcsolatba ?:


Mióta itt kérdezősködsz, csak azt látom, hogy váltogatsz nyelveket, engine-eket meg mindent, de előrehaladást még nem fedeztem fel. Meg kell tanulni programozni, de nem úgy, hogy minden héten másikat kezdesz el. Változók, vezérlési szerkezetek stb. Az XNA, meg egy csomó matek, számítógépes grafika ismeret, engine írás alapok, egy halom dolog. Akár egy Lua-val is neki lehet kezdeni programozni tanulni és szöveges játékot írni. Az XNA egy nagyon távoli dolog ehhez képest a .NET-ről már nem is beszélve.

   
Pretender - Törzstag | 2498 hsz       Online status #163694   2011.09.13 05:50 GMT+1 óra  
Idézet
Tibsy :
Kuz köszi,
így most már értem minek lett ki találva a több fajta ki írási lehetőség ,De amúgy még nem esek neki a Xna -nak csak tudni akartam ,hogy menyit kell még szenvednem mire, azt is érdemes lesz tanulni .. a tervezés meg egy olyan dolog szerintem, amit nem lehet csak úgy tanulni , inkáb ki kell tapasztalni kezdetleges projektek formájában !
és ha kérhetem a Kedves szót mellőzük .. . Mert egyáltalán nem vagyok az !


Látom Kuz elmondta még egyszer ugyan azt, amit én (csak kicsit hosszabban )

   
Kuz - Törzstag | 4455 hsz       Online status #163685   2011.09.13 00:16 GMT+1 óra  
Kód:
//Ősosztály, tartalmazza a közös tulajdonságokat, pl egy Rectangle-t.
class MainObjectInformation
{
...
   //Ha kell, akkor persze lehet ellenőrzést tenni a get/set-be,
   ///itt most nem ez a lényeg.
   public Rectangle BaseRectangle
   {
      get {}
      set {}
   }
}

public class EgyikClass : MainObjectInformation
{
   //Mivel a MainObjectInformationből - hiszen az őse - örököl
   //minden mezőt, így alapból lesz BaseRectangle-je.
}

public class MasikClass : MainObjectInformation
{
   //Szintén...
}

-----------------------------------------------------------------------------------

//MainObjectInformation listbe pakolhatunk olyan objektumokat,
//amik belőle származnak.

List<MainObjectInformation> ojjektumok =
   new List<MainObjectInformation>();

ojjektumok.Add(new EgyikClass(...));
ojjektumok.Add(new EgyikClass(...));
...
ojjektumok.Add(new MasikClass(...));
ojjektumok.Add(new MasikClass(...));
...

----------------------------------------------------------------------------
//T, K : ezek lehetnének Juliska, Mariska is, ez itt egy
//megnevezés. Fogd fel úgy, mintha int, string vagy más
//típus név lenne. A 'where' részt így lehet kiovasni:
//'Ahol kikötöm, hogy T csak MainObjectInformation
// típusú lehet, K pedig - jelen esetben szintén -
//MainObjectInformation típusú.

public static bool Collided<T, K>(
   T ValamilyenOjjektum, K MasikfeleOjjektum)
where T : MainObjectInformation
where K : MainObjectInformation
{
   ...
//Mi jellemző a MainObjectInformation? Hogy van egy
//BaseRectangle propertyje. Itt nem kell ismernem az
//EgyikClass és a MásikClass többi mezőjét, bőven elég,
//hogy annyit tudok, hogy mindkettő MainObj... lehet csak,
//és pl int, vagy string nem. Erre a fordító is figyel, és már
//rossz típussal sem tudod meghívni a Collided-ot,
//cserébe, amikor írom a kódot az Object - mivel az
//mindenkinek az őse - metódusai mellett látni fogom a
//MainObj... publikus propertyjét is!

...
return (ValamilyenOjjektum.BaseRectangle.Intersects(
   MasikfeleOjjektum.BaseRectangle));
}


Remélem nem basztam el semmit, a kódot fejből írtam.

Szerk.:
Kód:
//Ja, és a meghívása, pl:

int i = ..; j = ...; //mindegy, két jól beálított index legyen,
                         //pl ciklusban.
if(Collided(ojjektumok[i], ojjektumok[j]))
{
   ...
}
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Tibsy - Tag | 307 hsz       Online status #163684   2011.09.13 00:15 GMT+1 óra  
Kuz köszi,
így most már értem minek lett ki találva a több fajta ki írási lehetőség ,De amúgy még nem esek neki a Xna -nak csak tudni akartam ,hogy menyit kell még szenvednem mire, azt is érdemes lesz tanulni .. a tervezés meg egy olyan dolog szerintem, amit nem lehet csak úgy tanulni , inkáb ki kell tapasztalni kezdetleges projektek formájában !
és ha kérhetem a Kedves szót mellőzük .. . Mert egyáltalán nem vagyok az !
   
Kuz - Törzstag | 4455 hsz       Online status #163683   2011.09.12 23:58 GMT+1 óra  
Kód:
string valami = "valami szöveg";

1. Console.WriteLine(v);
2. Console.WriteLine("a" + v);


A kettő - bár lesz egy 'a' eltérés - egyenértékű művelet. Miért? Mert a zárójelen belüli rész string konkatenáció, semmi köze a Console.WriteLine-hoz.

Kód:
string valami2 = "a" + v;
Console.WriteLine(valami2); //valami2 ugyanaz, mint "a" + v


A kényelem kedvéért használhatsz paramétereket is ( { }-k között, számokkal felsorolva, ahol a szám a paraméter indexe lesz), mert ugye a kezdők és az indiaiak programoznak csak "de csak 1 változóm lesz, nem csinálok általános megoldást" módon.
Kód:
string s1 = "Ilyen";
string s2 = "módon"
Console.WriteLine("{0} {1} {2} {3}", s1, s2, "kedves", "Tib" + "sy"); //na ebben kb minden van. :D


Utóirat: még az alapokkal sem vagy eléggé tisztában, játékfejlesztéshez tervezési ismeretek sem ártanak. Amúgy meg kezdd el.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Tibsy - Tag | 307 hsz       Online status #163682   2011.09.12 23:48 GMT+1 óra  
Pretender köszönöm .de fére érteted a kérdésem,mert a példa programomban direkt csak 1 db-változot vezetem be !,, amit a console.write{"0",a}; modszerel is ki lehet iratni ,, na de akkor miért van a másik 2 megoldás, ez Console.WriteLine(a); és ez Console.WriteLine("a="+A); amikor mind a ketö ugyan aazt csinálja ,mint a leg első ??!? de mind 1 úgy nézki hogy csak nekem , tűnik marhaságnak ugyan azt a problémát ,meg oldani 3 féle képen ami tulajdon képen , ugyan azt csinálja mint a többi ...

Kuz ha már, így ajánlgatód a fóráskodot akkor én kíváncsi lennék rá hogy a te kínai nyelvre hasonlító le írásod, valójában milyen forrás kódot is takar, legalább abból is tanulnék .

U.I
a vC# -alapok elegendő ahhoz, hogy el kezdjek XNA-t tanulni vagy ahhoz kell még tanulni valamit vC #-al kapcsolatba ?:

Ezt a hozzászólást Tibsy módosította (2011.09.12 23:54 GMT+1 óra, ---)
   
Kuz - Törzstag | 4455 hsz       Online status #163604   2011.09.12 15:22 GMT+1 óra  
Bukta: most akkor hol jársz a megoldásban? Van olyan közös osztály, ami tartalmaz rectangle-t/circle-t/sphere-t/akármit? Mert kicsit visszaolvastam és hát amit írtam generikus metódust, az nekem is külön statikus osztályban van, tehát pontosan ez a megoldás kell neked. Csak a where-ben add meg, hogy az objektumoknak, amit paraméterben megadhatsz a közös ősből kell származniuk, és akkor már a Collided metódusodban is látni fogod a rectangelt/cicle-t/etc. Ha még mindig nem érthető, esküszöm írok rá egy rendes példát, bár otthon most nincs c#-om, de megoldom itt bent.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Bukta - Tag | 308 hsz       Online status #163599   2011.09.12 14:50 GMT+1 óra  
Kuz

Ha van egy Circle objektumod, és van egy Rect objektumod, mi alapján ütközteted őket? Úgy értem a Circle milyen fieldje ütközik a Rect milyen fieldjével? Tehát 1-1 rectangle ütközik egymással, vagy mi történik?


Hát a rect és circle ütközés még nincs megoldva matematikailag, de majd azon is töröm a fejem...
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Parallax - Tag | 574 hsz       Online status #163510   2011.09.11 20:47 GMT+1 óra  
Kedves Tibsy!

Kéne már egy tükör arról a varázsmányról az adatokkal, amiben tároljuk a cuccost, kinyomatni nekünk majd exportba. Ja meg a struktúrfüggönyökről egy doksi, mert a kollégákkal már belebonyolódtunk ebbe a klászfába aztán nagyon nem jó ez így. Ez a sok kivezetés nem tiszta teljesen, nálunk minden fában van entítusfüggönyökkel, szal tök más a szitu. Csak te segíthetsz, mert a többi dilettáns kínai nyelven beszél, legalább mi tartsunk már össze szakmabéliek.

Na csövesz!

   
Tibsy - Tag | 307 hsz       Online status #163508   2011.09.11 20:44 GMT+1 óra  
Kuz -
éppenséggel igen mert 3 féle oktató anyagból tanulom és mindegyik másképp magyarázta el .
másrészt nem csak csinálni akarom hanem érteni is hogy mért úgy csinálom ahogy
Rem.meg érted hogy a dolgok mögött megbújó infókra is kíváncsi vagyok !
   
Kuz - Törzstag | 4455 hsz       Online status #163503   2011.09.11 20:35 GMT+1 óra  
Komolyan ez a legnagyobb gondod?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Pretender - Törzstag | 2498 hsz       Online status #163501   2011.09.11 20:31 GMT+1 óra  
Mert mondjuk ha az kell, hogy
Kód:
"{0}, a nevem {1}. Nagyon örülök, hogy találkoztam veled {2}", a, b, c)

akkor sokkal kényelmesebb, mint darabonként összerakni....

   
Tibsy - Tag | 307 hsz       Online status #163487   2011.09.11 19:22 GMT+1 óra  
hi
miért van a xC# nyelvben ilyen sok ki vezetés ?... miközben mindegyik ugyan azt csinálja .


string A = "szia";
Console.WriteLine(a);
Console.WriteLine("a="+A);
Console.WriteLine("a={0}", A);
Console.Read();

Ezt a hozzászólást Tibsy módosította (2011.09.11 19:41 GMT+1 óra, ---)
   
Parallax - Tag | 574 hsz       Online status #163469   2011.09.11 16:22 GMT+1 óra  
Alapvetően minden objektumnak circle ütközése van kezdésnek és utána, ha az talált, akkor rectangle, vagy polygon, pixel akármi ellenőrzés tovább. De ez már nem C# kérdése, OO tervezés.

   
Kuz - Törzstag | 4455 hsz       Online status #163429   2011.09.11 11:10 GMT+1 óra  
Ha van egy Circle objektumod, és van egy Rect objektumod, mi alapján ütközteted őket? Úgy értem a Circle milyen fieldje ütközik a Rect milyen fieldjével? Tehát 1-1 rectangle ütközik egymással, vagy mi történik?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Bukta - Tag | 308 hsz       Online status #163421   2011.09.11 10:08 GMT+1 óra  
Aha értem mit mondasz, csak nekem van egy Collision osztály és oda van minden Intersect berakva. Nem úgy van hogy Rectangle.Intersect(...) Circle.Intersect(...). És ha jól vettem a lapot akkor így gondoltad:
Kód:
pubic interface IShape // IShape volt van lesz a közös ős
{
    Rect rect {get; (set;) } Circle circ {get;(set;) } ....
}
class Rect : IShape {} class Circle : IShape {} // ezeket biztos külön osztályba kell rakni :)

és ishapeT.rect.Intersect(ishapeU.circ)
itt se lehet tudni hogy a ishapeT.rect nem-e = null-al, mert hát egy objectnek csak egy lehet ami nem null. Vagy a rect, vagy a circ vagy a mittoménmi. Ezzel az a baj, hogy tul sok adat lenne kitöltetlenül meg ha uj IShape leszármazott jönne be akkor az összes osztálynak meg kéne azt az uj típust valósítania és ha sok shape van akkor ez gázos lehet. Az osztály-interface kapcsolat az a kodomban is igy van - csak nincs benne a rect, circ az interfaceba (más van benne de az most nem ide vágó téma). Sztem erre gondoltál, ha jól értelmeztem.
A lényeg, hogy ez sehogy se lehet teljesen automatikus - a reflectiont (Type) azért nem is probálgatom mert az nagyon belassítja -, mindig marad valami amit meg kell nézni hogy nem-e null. Én sztem a "var"-os megoldást választom. Az nem sokasítja annyira a kod méretét mint ez a fajta interfészes. Max "is"-el ott is végig kell nézni h hol null és hol nem a Shape-eket meg csak bedobálom enum-ba vagy xml-ből beolvasom és azokat vizsgálom.
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Parallax - Tag | 574 hsz       Online status #163418   2011.09.11 09:33 GMT+1 óra  
Bukta a PHP scriptnyelv, ha a C# ot is így akarod használni, akkor dynamic típus kell neked. Az megeszik mindent, úgy használod, ahogy jól esik. Viszont, ahogy Kuz írta tervezési hiba, ha futás időben kell tpusokat konvertálgatni. Ez nem scriptnyelv.

   
Kuz - Törzstag | 4455 hsz       Online status #163400   2011.09.11 00:09 GMT+1 óra  
Generikusoknál mindig a legszűkebb rendelkezésre álló metódusok halmazából válogathatsz. Ha nem kötsz ki típust, akkor csak az Object osztály metódusait hívhatod (tostring, gettype, etc). A fordító már fordítási időben is figyel erre (illetve, amikor írod a generikus metódusod, már akkor is csak a rendelkezésre álló metódusokat hívhatod meg az objektumaidon). Ha a where részben kikötöd, hogy milyen típusból jöhetnek be objektumok, akkor a fordító lesz annyira okos, hogy már fordítási időben látni fogja az ezen típusokra vonatkozó metódusokat (erre is igaz, hogy amikor írod a metódust, már látni fogod ezeket).

Természetesen, ha nincs közös ős, vagy interface a különböző osztályaidnak, akkor nehéz helyzetben vagy, de ebben az esetben valószínűleg tervezési hibába ütköztél (sok kezdő általában nem gondolja át, hogy a különböző osztályoknak milyen közös pontjai lehetnek, és mindent megírnak annyiszor, ahány típust ők szeretnének, jelen esetben pl csinálnak egy külön osztályt az alma-nak és egyet a korte-nek, holott ezek kb 99%-ban megegyeznek).

Első tippem - mivel nem ismerem a kódod -, hogy használj interface-t. Mivel gondolom(?) rectangle intersected van, ezért csinálj egy interfacet, amiben egy rectangle property van, majd minden osztályod implementálja ezt. Ha nem találtam el, akkor inkább vázold, hogy az osztályaid hogyan néznek ki, mert szerintem van egyszerűbb megoldás is, mintsem minden osztályra megírni, hogy mi-mivel-hogyan ütközhet.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Bukta - Tag | 308 hsz       Online status #163386   2011.09.10 22:05 GMT+1 óra  
Kuz: a T és K-ról ki kell deríteni hogy milyen típusok ezek különben honnét tudod hogy ezt:
return (m_rRectangle1.Intersects(m_rRectangle2)); kell használni és nem ezt: return (m_rRectangle1.Intersects(circle)); vagy return (circle.Intersects(circle));
és ez így már "kivételezés".
Asylum: szintén. Mi van ha a2 = null ? Akkor nincs ütközés? Ezt úgy tudnám elképzelni hogy bool? a return value és vmi bejárással nézegelődök, hogy melyik nem null. (Jah és az other biztos h elszáll körténél - Parallaxé nem - ugyanis ez egy erősen típus nyelv, nem lehet csak ugy dobállozni a szavakkal mint C,C++,PHP-be-ba-be)
De viszont van a "var" kulcsszó. Sztem ez lesz a megoldás. Mivel mindennek más az ütközés kódja ezért mind1iknek meg kell írni külön-külön. Ez 100. Van az a kód, hogy:
Kód:
var qry = from item in list
               select item;

nah ezt be lehet járni foreachal: foreach (string str in qry) vis futásidőben ez egy konkrét típus lesz és itt lenne a lényeg.ugyanis a köv kod átcsúszik a fémdetektor (fordító) ellenőrzésén.
Kód:
var se = obj.gyümölcs;
se = (Alma)se;

Máris átvágtam a fordítót. Ha van két változom akkor: Collision.Intersect(se1,se2);így ha teccik ha nem akkor is a Collision.Intersect(Alma a,Alma s); fut le pl. (ha se1 is Alma & se2 is Alma). De ezzel is van problem:
1. Ezt most találtam ki. -> elméletileg van csak meg
2. Valszínü h ez a se = (Alma)se; kivételt dob. Így akko talált az eset ha nem dob kivételt -> futásidőben kéne rájönni, hogy mivel kenjem meg a kenyeret (ugy ahogy a foreach-os kód fentebb).if (se is Alma) jó csak...
3. a foreach azért jó mert IEnumerable<vmi> típus az a qry valójában.
De ha a foreachnak sikerült kiszedni belőle a típust akkor nekem is sikerülnie kéne.
A nagy kérdés: Hoogyaaan?

Ezt a hozzászólást Bukta módosította (2011.09.10 22:29 GMT+1 óra, ---)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Asylum - Törzstag | 5440 hsz       Online status #163339   2011.09.10 16:01 GMT+1 óra  
C++ -ban nincs (még) auto kulcsszó
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Parallax - Tag | 574 hsz       Online status #163338   2011.09.10 15:37 GMT+1 óra  
C#:
Kód:
var a2 = other as Alma;
    if( a2 != null )
        other.  ...


C++
Kód:
if (auto p = dynamic_cast<Alma *>(other))
    p->...


Szerintem.

   
Asylum - Törzstag | 5440 hsz       Online status #163309   2011.09.10 11:20 GMT+1 óra  
Hát ha ott elszáll akkor szerintem mindenki törölje le a C#-ot mert említésre se érdemes.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #163298   2011.09.10 09:35 GMT+1 óra  
-

   
Kuz - Törzstag | 4455 hsz       Online status #163294   2011.09.10 09:16 GMT+1 óra  
Kód:
Alma a2 = (Alma)other;


Nem fog ez elszállni, ha egy körte típusú ojjektumot adsz át az intersectnek?
Ez így akkor lenne jó, ha minden ütköztetendő dolog a gyumolcsből származna, és a gyumolcsben lenne kifejtve az intersect. Így legrosszabb esetben lehet overrideolni, vagy alapból lehet azt használni. I think...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Asylum - Törzstag | 5440 hsz       Online status #163260   2011.09.09 22:49 GMT+1 óra  
Kód:
class Alma : Gyumolcs
{
    public override bool Intersect(Gyumolcs other)
    {
        Alma a2 = (Alma)other;

        if( a2 == null )
            throw blabla;
    }
};
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Kuz - Törzstag | 4455 hsz       Online status #163256   2011.09.09 22:27 GMT+1 óra  
Különböző típusoknál nem tudsz generikus metódust írni?
Kód:
public static bool Collided<T, K>(T p_tObj1, K p_tObj2)
where T : ValamilyenKozosOs
where K : ValamilyenMasikKozosOs
{
   ...
return (m_rRectangle1.Intersects(m_rRectangle2));
}

Ha kell hozzá magyarázat, szólj. A fenti egy régi xna-s megoldásom volt részlete, nem a legszebb, de működött.

A lényeg, hogy legyen egy olyan közös ős, ami tartalmazza a rectangle-t, így a where résznél meg tudod mondani, hogy milyen típusból jöhetek ojjektumok. Így 1x kell collision metódust írnod, nem kell almára, körtére, anyámkínjára új metódust írni. A lényeg, hogy közös legyen az ősük. Akár interface-szel is megoldhatod, ha ősosztály nem jöhet szóba.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Bukta - Tag | 308 hsz       Online status #163248   2011.09.09 21:27 GMT+1 óra  
Hát én ehhez - Kuz témájához - csak annyit tudok hirtelen mondani, hogy ha a statikus és a sima metodusok között kapcsolatot kell teremteni akkor delegate. Az megeszik mindenfélét.

De nekem van egy újabb fejtörőm - Lehetetlen küldetés 2 . Most arról lenne szó, hogy metódushíváskor automatikusan kéne hogy rájöjjön a fordító, hogy melyik overload metodust hívtam meg. De úgy, hogy híváskor csak ősosztály/ősinterfész -t írhatok. Kb így:
Kód:
Gyümölcsök gy1 = new Alma(), gy2 = new Alma();
Collision.Intersect(gy1, gy2); // hívás
class Collision {
    public static Intersect(Alma arg1, Alma arg2)
    { // a fordítónak most ezt kell meghívni
        // TODO: .... :)
    }
    public static Intersect(Körte arg1, Körte arg2) { // és nem ezt
        // TODO: .... :)
    }
    public static Intersect(object/dynamic/Type arg1, object/dynamic/Type arg2) {
        // nah innét már esetleg ki lehet varázsolni az arg.Zölde (bool Alma.Zölde) propot (csak egy 5let)
    }
    ....További Intersectek....

Itt arra is gondoltam , h végtelen Gyümölcs leszármazott lehet szval az is as & switch szerkezet nem nyerő. Jah és interfészekkell csinálom, az osztályos csak bemelegítés .
Nah akinek van még türelme az extra kérdéseimhez annak várom a kommentjét

Ezt a hozzászólást Bukta módosította (2011.09.09 21:40 GMT+1 óra, ---)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Kuz - Törzstag | 4455 hsz       Online status #162799   2011.09.07 10:36 GMT+1 óra  
Itt az a lényeg, hogy lesz egy treeview, benne x darab elem. Minden elemnek van egy típusa, ami egy db táblát reprezentál. Ha kiválasztod a pl 'Language' elemet, akkor a jobb oldali listában a business project LanguageLogic osztályának GetAllLanguages metódusát kell meghívnod, ha a Persont választod, akkor a business project PersonLogic osztályának a GetAllPersons metódusát, etc. Röviden a tábla nevéből egyből tudni fogom, hogy honnan - hát ez ugye mindig a business project - kell hívni és melyik osztályt - ezt összerakom string konkatenációval -, majd simán le tudom futtatni. Megnéztem, egy datalistnek így meg tudom adni dinamikusan a datasource-át. Kösz az infokat.
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Matzi - Szerkesztő | 2519 hsz       Online status #162798   2011.09.07 10:21 GMT+1 óra  
Ugye az Assembly Qualkified Name-et használtad? Mert ha nem, akkor lehet belőle gond. Ez némileg bonyolultabb, és ha szeretnéd, hogy valami user felületen megjelenjen (mondjuk mint egy scriptet lehessen írni), akkor sokkal macerásabb ezt használni, mint megpróbálni megkeresni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Kuz - Törzstag | 4455 hsz       Online status #162796   2011.09.07 10:02 GMT+1 óra  
Type.GetType("<AssemlyName>.<namespace>.Class1"

Ennek elvileg mennie kéne (mert null)? Nem tudom mennyire baj, hogy Class1 statikus osztály?

Szerk.:

A saját nem statikus osztályon belül ez működik:

Kód:
Type.GetType("<namespace>.Class1,<assemblyname>")

, de már másik projecten belüli nem statikus osztályt sem akar megtalálni.

Szerk2:
Megvan, az <assemblyname>-hez a project assemblyje kell, nem a solutioné.

Ezt a hozzászólást Kuz módosította (2011.09.07 10:21 GMT+1 óra, ---)
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Matzi - Szerkesztő | 2519 hsz       Online status #162794   2011.09.07 09:54 GMT+1 óra  
Kuz:
A projektek külön assembly-be kerülnek, szóval valahogy meg kéne keresned a megfelelő assembly-t, nyilván a projekt neve segít. Utána meg simán Namespace.Classname úttal eléred.

Fejből most hirtelen nem tudom a teljes megoldást, de az alábbi függvények segítenek:

Assembly.GetAssembly

Assembly.GetType
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Kuz - Törzstag | 4455 hsz       Online status #162793   2011.09.07 09:46 GMT+1 óra  
Na most nekem lenne egy kérdésem.

Adott egy solution, benne több különböző project. Egyik projectből kéne egy string alapján hívnom egy másik project, egy szintén stringben megadott statikus osztályának egy ismételten stringként megadott metódusát. Pl:
"Project1", "Class1", "Method1" estén meg kell tudnom hívni a Project1 nevű project Class1 nevű statikus osztályának Method1 nevű statikus metódusát.

Solution
...Project1
......static Class1
..........static Method1
...Project2
......nem! static Class2
.........nem! static Method2

Tehát a nem! statikus Method2-ből kéne elérnem a fentieket.

Az alábbi type lekérés nem működik, nem tudom mit szúrok el vele:

Kód:
Type calledType = Type.GetType("Project1.<megfelelő namespace>.Class1"); // ez nullt ad

MethodInfo method = calledType.GetMethod("Method1");


Hogy lehetne ezt elérni?
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
Parallax - Tag | 574 hsz       Online status #162715   2011.09.06 13:47 GMT+1 óra  
Igen én se értettem, és valami elméleti gond van itt. Egyszerre több objektum kezelése esetleg egy saját listával, aminek az őse egy List<MyType> és beleírni műveleteket értékadásokat, amit ciklussal minden elemre végrehajt. Ennek esetleg lehetne valami értelme. Vagy Composit Pattern.

Maga a probléma se világos így nehéz erre mit írni.

Ezt a hozzászólást Parallax módosította (2011.09.06 13:53 GMT+1 óra, ---)

   
Pretender - Törzstag | 2498 hsz       Online status #162695   2011.09.06 05:37 GMT+1 óra  
Én már az egész felvetést sem értem, hogy egyáltalán mi értelme van...

   
Bukta - Tag | 308 hsz       Online status #162684   2011.09.05 23:09 GMT+1 óra  
Huh. Igazad van több elem mutat egyre. Asszem tényleg jó lenne egy kicsit újra elméletezni. Meglesem a videot azt kitalálok vmi mást.
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Parallax - Tag | 574 hsz       Online status #162662   2011.09.05 21:51 GMT+1 óra  
Ezzel nem több objektumot módosítasz, hanem konkrétan egy objektumhoz van több referenciád, közben a többi objektum hivatkozás híjján spontán szemét lesz és indeterminisztikus GC általi halál áll be. Ajánlom figyelmedbe Hernyák kolléga idevágó tananyagát.

Egy referenciával több objektumra hivatkozni nem lehet.

   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] > 10 < [15] [20] [25] [30] [35] [40] [45] [46]