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:    2185
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]
Anakin12 - Tag | 19 hsz       Online status #182256   2012.06.03 20:26 GMT+1 óra  
Üdv!
Segítséget szeretnék kérni!
Írtam egy WebBöngészőt, de nem jöttem rá mi a probléma...
http://kep.ivpicture.hu/657182.N.jpg
Már megfordítottam a } jelet és úgy se akar működni.
Remélem jó helyre írtam.

   
Pretender - Törzstag | 2498 hsz       Online status #179582   2012.04.30 18:49 GMT+1 óra  
ja igen, bocsi

   
dvorgaz - Törzstag | 575 hsz       Online status #179574   2012.04.30 17:10 GMT+1 óra  
Idézet
Pretender :
tuti, ezt használom gameplay timingre


Akkor csak ezt írtad el szerintem:
Kód:
elapsed = currTime - lastTime;
   
Pretender - Törzstag | 2498 hsz       Online status #179573   2012.04.30 17:05 GMT+1 óra  
-.-'
mondtam, hogy pseudo-kód, nézz utána, hogy hogy kell a jelenlegi időt lekérni, stb.

   
Sorenke - Tag | 72 hsz       Online status #179572   2012.04.30 17:04 GMT+1 óra  
Be kel neki valamit kapcsolni a using system-nél mert aláhúzza ezeket:


currTime = getCurrTime();
lastTime = currTime;
frequency = 1.0 / 60.0;

currTime = getCurrTime();
elapsed = currTime - lastTime;
lastTime = currTime;

   
Pretender - Törzstag | 2498 hsz       Online status #179571   2012.04.30 17:02 GMT+1 óra  
tuti, ezt használom gameplay timingre
Kód:
// fixed timestep
timer->GetElapsedTime();

while (timer->NeedUpdate())
{
    // update
}

ahol:
Kód:
inline const bool NeedUpdate()
{
    if (elapsed >= stepTime)
    {
        elapsed -= stepTime;
        return true;
    }

    return false;
}

és
Kód:
void Timer::GetElapsedTime()
{
    currTime = timeGetTime();

    elapsed += (float)(currTime - lastTime) / 1000.0f;

    lastTime = currTime;
}

Persze azért léteznek kifinomultabb időzítések is, de ez is működik.

   
dvorgaz - Törzstag | 575 hsz       Online status #179569   2012.04.30 16:59 GMT+1 óra  
Ez biztos hogy jó?
   
Sorenke - Tag | 72 hsz       Online status #179567   2012.04.30 16:55 GMT+1 óra  
Hhúú de gyors vagy! Vagy aktív na mindegy Köszönöm.

   
Pretender - Törzstag | 2498 hsz       Online status #179565   2012.04.30 16:48 GMT+1 óra  
Egy példa a fixed timestepre: pseudo-kód:
Kód:
currTime = getCurrTime();
lastTime = currTime;
frequency = 1.0 / 60.0;

// amíg fut a program
while (1)
{
    currTime = getCurrTime();
    elapsed = currTime - lastTime;
    lastTime = currTime;

    // mindig 60x fog lefutni
    while (elapsed >= frequency)
    {
        // dolgokat itt

        elapsed -= frequency;
    }
}

Ez így azt csinálja, hogy az eltelt idő alapján addig hajtja végre a belső while ciklust, amíg az eltelt idő nagyobb, az általunk megadott értéknél, azaz 1 mp alatt 60x fog meghívódni a 2. cikluson belüli kód.

   
Sorenke - Tag | 72 hsz       Online status #179564   2012.04.30 16:40 GMT+1 óra  
és azt hogy kel? egy alap példát írnál?

   
Pretender - Törzstag | 2498 hsz       Online status #179563   2012.04.30 16:13 GMT+1 óra  
meg. (időzítés)

   
Sorenke - Tag | 72 hsz       Online status #179562   2012.04.30 15:46 GMT+1 óra  
Meg lehet azt oldani, hogy egy ciklus másodpercenként 60-szór lefusson?

   
Parallax - Tag | 574 hsz       Online status #179316   2012.04.25 10:39 GMT+1 óra  
Ja, hogy ez a gond, de hát figyelj már a Visual C# express-t ingyen lehet használni.

   
Tibsy - Tag | 307 hsz       Online status #179274   2012.04.24 16:35 GMT+1 óra  
szerk.
igaz hogy ingyenes a studio de lassú legalább is az én gépemen

Notepad++ a változókat kilöki egy kicsi tools-ba? és el lehet indítani benne a 3,5 ös .Net-et ? na úgye ?!
bár igaz el avult de még mindig jobb mint egy sima szöveg szerkéztő + nekem már a 2008-as studiot naponta kell regelnem

Ezt a hozzászólást Tibsy módosította (2012.04.25 13:04 GMT+1 óra, ---)
   
Seeting - Törzstag | 2306 hsz       Online status #179264   2012.04.24 15:53 GMT+1 óra  
nevermind

Ezt a hozzászólást Seeting módosította (2012.04.24 16:31 GMT+1 óra, ---)
   
Parallax - Tag | 574 hsz       Online status #179205   2012.04.23 20:05 GMT+1 óra  
Hát igen, csak elavult. .NET 3.5 mikor volt már az, 4.0 van és 4.5-nél tartunk lassan. Egyébként mi a gond a VS-el? Nekem pár mp alatt elindul és egy kattintás az új project. Notepad++ ban is lehet fejleszteni 5 soros programot.

   
Tibsy - Tag | 307 hsz       Online status #179174   2012.04.23 05:01 GMT+1 óra  
Előfordult már, hogy valamilyen kódot, kód-részletet ki szerettünk volna próbálni? Nyilván igen (ha nem, fölösleges is tovább olvasni). Ilyenkor egy új Visual Studio megnyit... krrr, krr... New Project... krrrrr rrr, konzolos alkalmazás, rrrrkrrrr...
Szóval zseniális IDE a Visual Studio, de az ilyen ötsoros alkalmazásokhoz Kellene egy lightweight Visual Studio, amire az ember csak rábök, és már írhatja is a kódot.
Mit ad isten: van ilyen, úgy hívják, hogy Snippet Compiler. Egyszerű, mint Kiszel Tünde, de a legszükségesebb dolgokat tudja. Az installja 1 MB és egy .zip kibontását jelenti, szemvillanás alatt indul.a, és a legjobb, hogy az "Add Reference..." ablak (itt Tools -> References) körülbelül 0.05 sec alatt ugrik föl. Na ezt csinálja utána a Studio!
   
bolyzsolt - Törzstag | 607 hsz       Online status #178833   2012.04.18 05:41 GMT+1 óra  
Idézet
Matzi :
Azt ugye tudod, hogy az Assert akkor dob kivételt, ha a feltétel hamis?


Ááá, tényleg, pedig még gondoltam is rá, és a leírásában is benne van... Részemről fail xd

   
Matzi - Szerkesztő | 2519 hsz       Online status #178826   2012.04.17 22:01 GMT+1 óra  
Azt ugye tudod, hogy az Assert akkor dob kivételt, ha a feltétel hamis?
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
bolyzsolt - Törzstag | 607 hsz       Online status #178819   2012.04.17 21:18 GMT+1 óra  
Kód:
this.BoundingBox = new BoundingBox(20, 20, 20, 20); // left, bottom, right, top
Debug.WriteLine(this.BoundingBox.Left); // kiírja, hogy 20
Debug.Assert(this.BoundingBox == null, "jajnullmáris"); // assertiont dob, de miért? két sorral előtte kap értéket...

De most tényleg, ezt így most miért és hogyan? (A kódrészlet egy nem-BoundingBox osztály konstruktorából származik)

   
Seeting - Törzstag | 2306 hsz       Online status #178791   2012.04.17 17:42 GMT+1 óra  
Idézet
Parallax :
Az a pont nem tudom micsoda az elérési útvonal elején.
szerk.: Ezt így kiegészíteném, mert lehet ezt akartad írni:
Kód:
"..\x:valami"




Kösz már megoldódott.
   
Parallax - Tag | 574 hsz       Online status #178789   2012.04.17 16:54 GMT+1 óra  
Idézet
Tibsy :


Kód:
  public class MemoryCleaner
        private void run()
        {
            while (!event_.WaitOne(PERIOD_IN_MS, false))
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
        }
    }




A Collect-el nem mész semmire egyébként. Ezt kizárólag diagnosztikai célra lehet alkalmazni, ha például szeretnéd megnézni, hogy adott időpillanatban mennyi lenne a felszabadítható elem. Kollektálni nem szabad explicit, mert ott lehetnek a destroktorok is például. 10 msec-en belül ez úgyis megtörténik, lassabb procin 100-200 msec (pl ARM).

   
Parallax - Tag | 574 hsz       Online status #178780   2012.04.17 14:35 GMT+1 óra  
Az a pont nem tudom micsoda az elérési útvonal elején.
szerk.: Ezt így kiegészíteném, mert lehet ezt akartad írni:
Kód:
"..\x:valami"

Ezt a hozzászólást Parallax módosította (2012.04.17 16:44 GMT+1 óra, ---)

   
Seeting - Törzstag | 2306 hsz       Online status #178768   2012.04.17 13:30 GMT+1 óra  
Használ valaki Mono-t (olyan mint a .net, csak cross platform)?

Kód:
myTemplateNode = node.SelectSingleNode(".//x:valami", RootWindow.NamespaceManager);


Ez a kód sima .Net alatt rendesen működik, Mono alatt meg null-t ad vissza. Miért?
   
DMG - Szerkesztő | 3172 hsz       Online status #178699   2012.04.16 19:26 GMT+1 óra  
Idézet
Use this method to try to reclaim all memory that is inaccessible




Ez is olyasmi lehet mint Java-nál, ott úgy tudom, hogy csak "szólni" lehet a GC-nek, hogy "Te ha van egy kis időd pucoljál már egy kicsit" De ez nem a parancs után közvetlenül történik.
-----------------------------------------
Dont Listen to the Naysayers
   
Tibsy - Tag | 307 hsz       Online status #178698   2012.04.16 19:22 GMT+1 óra  


Kód:
  public class MemoryCleaner
    {
        private const int PERIOD_IN_MS = 500;

        private static int Counter_;

        private Thread thread_;
        private AutoResetEvent event_ = new AutoResetEvent(false);

        public MemoryCleaner()
        {
        }

        public void Start()
        {
            Stop();
            thread_ = new Thread(new ThreadStart(run));
            thread_.Name = string.Format("MemoryCleaner#{0}", Interlocked.Increment(ref Counter_));
            thread_.IsBackground = true;
            event_.Reset();
            thread_.Start();
        }

        public void Stop()
        {
            if (thread_ != null)
            {
                event_.Set();
                thread_.Join();
                thread_ = null;
            }
        }

        private void run()
        {
            while (!event_.WaitOne(PERIOD_IN_MS, false))
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
        }
    }
   
Pretender - Törzstag | 2498 hsz       Online status #178662   2012.04.16 11:43 GMT+1 óra  
A c++ topicban megint ment a c++ vs c#, és felmerült a memória felszabadítása kérdés, amire mondtam, hogy a c#-ban "nem lehet tudni, hogy mikor", úgymond a GC uralkodik, amikor jónak látja - ez ugye lehet (játékokat tekintve) éppen a csata kellős közepén.

Pusztán kíváncsiságból: Van ugye a GC.Collect() parancs, ami elvileg felszabadítja a memória azon részét, ami nincs használat alatt. Van rá valami biztos módszer, hogy a GC.Collect() hívásakor felszabaduljon az, amit mi szeretnénk? Anno azzal próbálkoztam, hogy nulloztam az objektumokat, hátha azt figyeli a GC

   
bolyzsolt - Törzstag | 607 hsz       Online status #177635   2012.04.05 07:44 GMT+1 óra  
Aha, köszi Most float-os az egész, mert első körben mobilon szeretném tesztelni, hogy megmozdul-e egyáltalán a szimuláció Szóval akkor majd a végén visszatérek még erre.

   
Parallax - Tag | 574 hsz       Online status #177628   2012.04.04 22:36 GMT+1 óra  
Kis pluszmunkával megoldható a typedef:
Kód:
namespace ConsoleTest.Common
{
    struct Typedef
    {
        public static float Real = float.MinValue;
        public static Int64 Integer = Int64.MinValue;
    }
}


Kód:
namespace ConsoleTest.Test
{
    using Common = ConsoleTest.Common;

    class Test
    {
        public void DoSomething()
        {
            var x = Common.Typedef.Integer;
            x = 12;
        }
    }
}


Ha argumentumokban is van, akkor dynamiccal és default paraméterrel lehet kitolni a fordítóval.

Kód:
void Valami(dynamic x = Common.Typedef.Integer)


Ezzel persze gyorsabb nem lesz, szóval egyszerűbb mindenhova double-t megadni.

   
bolyzsolt - Törzstag | 607 hsz       Online status #177617   2012.04.04 18:56 GMT+1 óra  
Ahoj!
Épp a Chipmunkot portolom C# alá, és az eredeti C forrásban van egy typedef cpFloat, ami lehet float és double egy "kapcsoló" segítségével, így lehet pl. ARM-re float alapú binárist fordítani, PC-re meg double-t használót. Az a kérdésem, hogy ezt C# alatt hogyan lehetne hasonló funkcionalitással megoldani? Vagy a WP7-re történő fordítás esetében kioptimalizálja ezt valahogy a fordító?

   
Bukta - Tag | 308 hsz       Online status #175433   2012.02.28 10:34 GMT+1 óra  
Matzi:
1. Azt, hogy garantálja-e vagy sem az a maga dolga (T) - nyilván ha nem támogatja a + - * / egyikét akkor nem lehetne a where miatt odairni (ha lenne IAritmeticOp<T> ez már fordításkor kiderülne úgy mint a IComparable<T>-nél, az elv ugyanaz.
2. Van közös ős amibe benne van a CurrentValue, a From, a To és mind T típusú. A neve IAnim<T> (ezt a relatív első bejegyzésemben is odaírtam)
3. Mitől természetes az összehasonlítás? Ha csinálsz egy osztályt Alma néven akkor hogyan értelmezed azt hogy Alma < Alma (szín?, méret?, almafajta? ...)? Nyilván sehogy, hacsak nem írod le te magad, hogy hogy kell értelmezni (IComparable<T>.CompareTo()-ban le is írhatod). Ezt a módszert kéne a legalapvetőbb elemekre is értelmezni (int, float....) mert ez csak az embernek természetes, a fordítónak nem.
4. A 3. pont alapján kéne az összeadást is értelmezni, ugyanúgy interfészen keresztül és akkor nem lenne ilyen probléma, hogy 2 típus összeadható-e - fordításkor kiderülne.
5. Nem szidom a C#-ot mert nagyon jó eszközök vannak benne csak bosszantó, hogy egyszerű megoldásokat nem minden esetben tartalmaz (főleg ilyen alapdologban). Mindenhez át kell rágni magamat 80 osztályon mire eljutok valahova. Magyarán mondva: A .NET (főleg a wpf) "Átesik a ló másik oldalára".
6. Nem hiányzott belőle? pl.:
http://stackoverflow.com/questions/63694/creating-a-math-library-using-generics-in-c-sharp
http://www.codeproject.com/Articles/8531/Using-generics-for-calculations
Ők is keresik a megoldást rá, de ahogy én látom ezek a megoldások nem 100%-osak...
7. A WPF-be is van CurrentValue System.Windows.Media.Animation.Clock.CurrentProgress néven, csak a DependencyProperty-k miatt nehézkes aktiválni a clock-ot és egy időzítő csak egy értékhez köthető.
8. A CurrentValue-t tartalmazó osztály a 7. pont miatt nem vezérei önmagát, vagyis azért nem tudja maga az osztály h mi a CurrentValue értéke, mert egy másik vezérlő osztály rendeli hozzá a stopperórát (az IAnim<T>-hez!) - így egy Stopwatch-hoz több FromToDuration is tartozhat.

(Nem utolsó sorban két DateTime-t össze lehet adni, ugyanis van Add függvénye - a F#, J#, VB.NET kompatibilitás miatt - és van + operátora is ami leírja, hogy miként lehet összeadni két DateTime-t csak az a baj, hogy ez a DateTime.Add nem valami interfészen keresztül van, hanem csak lóg a levegőbe, mintha valami speckó függvény lenne amit csak ez az egy struktúra valósít meg.)

ui.: Egyetlen 90%-os megoldásom van jelenleg: type.InvokeMember("Add". A kompatibilitás miatt ami összeadható annak van Add függvénye -, de ez nincs kikötve - és így már megvalósítható lenne az összeadás. A baj még ezzel, hogy ez ugye lassabb modszer, de ez van ezt kell szeretni. A jó benne viszont az, hogy extension-nal is lehet Add függvényt írni egy osztálynak és azt is meghívja (pl Color-nak nincs Add függvénye)

Ezt a hozzászólást Bukta módosította (2012.02.28 10:51 GMT+1 óra, ---)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Matzi - Szerkesztő | 2519 hsz       Online status #175428   2012.02.28 09:14 GMT+1 óra  
Bukta:
El kell hogy szomorítsalak, de ez koránt sem egy jó megoldás. Először is semmi nem garantálja, hogy a szorzás és az összeadás jól működik minden osztályra (pl Color, Matrix), persze ez még talán lehetséges. Aztán ha nem tudod a típust, és nincs közös ősük, akkor a megkapott CurrentValue-t is bajos bármire használni.

Az összehasonlítás azért van, mert az egy természetes dolog, két akármit megfoghatsz a valóságban és eldöntheted, hogy egyenlőek e. Ellenben az operátorok nem ilyenek, mondjuk két DateTime-ot összeadni elég vicces lenne, de ez még az osztályok nagy részére áll. A nem kizárólag valamiféle egyszerű adatot tárol az objektum, akkor már jó eséllyel értelmetlen rá az összes művelet. Nem értem ezért miért kell szidni a C#ot, nekem eddig egyszer sem hiányzott ez belőle, pedig pár éve már használom, még melóban is.

Nem ismerem a WPF-et, de minek kell neked a CurrentValue? Nem szolgáltatja valamilyen formában maga az osztály? Lévén ugye, ha animálok valamit, legalább az érintett objektumnak érdemes elárulni, hogy mi a túró legyen az aktuális értéke.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Bukta - Tag | 308 hsz       Online status #175420   2012.02.27 23:10 GMT+1 óra  
FromToDuration animációt csinálok ugyanolyat mint ami a wpf-be van (DoubleAnimation), csak ez ugy működik, hogy egy Stopwatch az időzítő és a From-hoz mindig hozzáadom a %-nak megfelelő értéket.pl.:
From: 0
To: 10
Duration: 1000 ms
ilyenkor le lehet kérdezni a CurrentValue-t:
Kód:
ftd.CurrentValue = ftd.From + ftd.Acceleration * (stw.Elapsed.TotalMilliseconds / ftd.Duration.TotalMilliseconds);

Itt a gyorsulás az a to - from. És a lentebb írt osztály (Class1) valójában a FromToDuration<T> osztály. Nos a wpf-ben mindennek külön osztálya van (DoubleAnimatio, ColorAnimation), de mind from-to-by. Én nem akarok mindennek külön írkálni, hanem a Color, double, matrix... a T helyére kerülne, csak ugye a from-hoz hozzá kell adni a %-ot meg a to-t ki kell vonni a from-ból, meg a gyorulást double-val szorozni...meg összehasonlító operátorok is kellenek, habár azok már meg vannak oldva a CompareTo-val

Matzi: a tervezési hibára mindig rá lehet fogni, mert mindent meg lehet úgy tervezni, hogy jó legyen, de most nem erről van szó, hanem arrol, hogy az összehasonlító operátorokat be lehetett rakni a .net-be (IComparable), de az aritmetikaiakat nem. Most mér hagyták ki ezeket a + - * / % még egyszerű digitális egységek is tudják kb, de ebbe a nyüvekbe nem raktak IAritmetic interfészt :��� . Vagy csak én nem találom .

Ezt a hozzászólást Bukta módosította (2012.02.27 23:20 GMT+1 óra, ---)
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
Matzi - Szerkesztő | 2519 hsz       Online status #175418   2012.02.27 22:42 GMT+1 óra  
Mivel rengeteg ember van akik mindkét nyelvvel meg van elégedve, tegyük fel, hogy esetleg el kéne sajátítani őket rendesen. Van rá némi esély, hogy ha valamit nem tudsz jól megcsinálni, akkor ott tervezési hiba van a háttérben.
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 #175413   2012.02.27 19:23 GMT+1 óra  
Fordítsuk meg kicsit a dolgot, és ne az általad kitalált megoldást kelljen kijavítani, hanem mond meg, hogy konkrétan mi a problémád, hátha tudunk normális megoldást adni!
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 #175411   2012.02.27 17:23 GMT+1 óra  
hát az stdlib.h meg az stdio.h nem tudom winapi-hoz van-e de ezek és a társaik nagyon zavaró kifejezéssekkel van tele
meg amúgy a windows egy gépgyilkos az idővel párhuzamosan egyre lassabb és lassabb lesz hiába töröl meg csinál mindent az ember. A másik gépünk újonnan sec-pec betöltött kb 3-4 év és már 5 percig hozzá se lehetett nyulni miután bejött az asztal. Father mindig csak azt mondta menjek izzítsam be gépet , mindjárt megy neten néz vmit... Az ujratelepítés se segített sokat, de ez már nem ez a topic.
Ha lesz folyt akk inkább a c++ -ba
ArgumenException: A megadott DependencyObject nem ehhez a Freezable elemhez tartozó környezet. Paraméter neve: context
:oO Mi a???
   
glezmen - Törzstag | 381 hsz       Online status #175408   2012.02.27 16:55 GMT+1 óra  
Idézet
Bukta :
C++: lehet benne kódolni, de érthetetlen könyvtárak vannak hozzá
C#: nem lehet benne kódolni, de jó a library


ez baromsag, C++ -hoz RENGETEG lib van, koztuk nagyon profin, jol kitalaltak is. senki nem mondta hogy kotelezo winapit hasznalni
   
Bukta - Tag | 308 hsz       Online status #175407   2012.02.27 16:46 GMT+1 óra  

meg fogom tanulni a C++-t. Ebbe a vacak c#-ba nem lehet semmit se "automatizálni" (egyértelműen). Csak a C++ -ba meg azokat a dokumentálatlan függvényeket utálom:
Kód:
FILE_fmGTclk0045 GETdPs02?:O--?43(TNT a:O, C4 anyad) {... _wtfx8= ***....}

Kb ilyenekkel van tele és akk rá kéne jönnöm hogy mit csinál.
Ja de még a polimorfizmus is jó benne.
Összegezve:
C++: lehet benne kódolni, de érthetetlen könyvtárak vannak hozzá
C#: nem lehet benne kódolni, de jó a library
= következő C nyelv legyen C++#
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 #175405   2012.02.27 16:23 GMT+1 óra  
C++ ban meg lehet, mert ott bármit írsz a "T" hez azt a fordító máris lefordítja és ha nincs operator+ akkor hibát jelez, ha van, akkor ok. C# ban nem fordítódik le semmi, menet közben dinamikusan fejtődnek ki a "template"-ek. Ezért van ez az egész bohóckodás és nehézség.

   
Bukta - Tag | 308 hsz       Online status #175404   2012.02.27 16:21 GMT+1 óra  
Igaz könnyebb átugorni. De azé még a GetHashCode-val próbálgatok 1-2 dolgot, de ha nem megy akkor hagyom. 1ébként ha nem a c# erőssége akkor a C++ -é? C++-ba meg lehetne csinálni? Mert ahhoz nem értek annyira h tudjam a válszt.
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 #175401   2012.02.27 16:01 GMT+1 óra  
Bukta a nem lehetne-t értsd úgy, hogy jelentős pluszmunkával lehet, de nem biztos, hogy megéri. Egyébként extension-el beépített típusokra is kibővítheted a dolgokat és akkor még akár működhet is, de nem a template a C# erőssége. A te problémád egyébként tipikus példa szokott lenni könyvekben arra, hogy sorry, de dynamic-ot kell használni, vagy körbehackelni az összes típust. Ez az a helyzet, amit könnyebb átugrani, mint megkerülni.

   
Bukta - Tag | 308 hsz       Online status #175374   2012.02.27 11:23 GMT+1 óra  
Parallax: Milyen hozzáállás az, hogy nem lehet? :|
Kuz: tegnap már találtam == != operátort megvalósító intefészt: System.IEquatable<T>
így:
Kód:
class Class1<T> : IAnim<T>
    where T : IEquatable<T>
    where T : IComparable<T>
{
    T a, b;
    public Class1() {
         if (a.Equals(b) || a.CompareTo(b) < 0) // a == b || a < b
             T c = a + b; // c = a.Add(b) kéne ebbe a sorba...
    }
}
(A példa nem pontosan "életszerű" ez igaz, de az elv az teljesen ugyanez, kellenek az operátorok (mindegyik).)

Így már biztos, hogy van == és != operátora (Equals(T)). Ha pedig azt vesszük alapul, hogy a System.Int32 (int) is összeadható - úgy, hogy nincs + (- * /) operátor(ok) - és nem is származnak semmiféle IOperators (kitalált) interfészből, akkor mégis azt lehet mondani, hogy van benne valami.
Az, hogy máshogy is megoldható azt egyenlőre nem firtatom, addig amíg biztos nem vagyok benne, hogy nem megoldható (a + b)-vel

Ezt a hozzászólást Bukta módosította (2012.02.27 11:45 GMT+1 óra, ---)
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 #175372   2012.02.27 10:57 GMT+1 óra  
Igen, de olyat nem lehet előírni, hogy az operator+ definiáló valamire szűkítsen, és akkor két dátum összeadását máris bukta a bukta. Beépített típusokra nem tudsz implementálni amúgy sem.

   
Kuz - Törzstag | 4455 hsz       Online status #175371   2012.02.27 10:35 GMT+1 óra  
Csak olyan műveletet hajthatsz végre, amit a bejövő típusok metszete engedélyez. Ha semmit nem kötsz ki, akkor a bejövő típus az object lehetőségeit fogja használni. Ha kikötöd, hogy csak int lehet, akkor az int-re vonatkozó műveleteket éred el, ha egy interface-t adsz meg, akkor az interface által megengedett műveleteket.
Feltételezem a leírt példa nem életszerű, csak az érthetőség miatt írta.
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 #175370   2012.02.27 09:44 GMT+1 óra  
Bukta: Ilyet nem lehet, mert előre kellene tudnia már a parsernek, hogy milyen műveleteket enged az adott típus és operátorokat nem lehet megadni sehogy. Egyébként is milyen feladathoz kell olyan generikus osztály, ami összead egy típusból kettőt a konstruktorban? Ez így mire jó pontosan? Biztos át lehet fogalmazni a megoldást másképp.

   
Kuz - Törzstag | 4455 hsz       Online status #175368   2012.02.27 09:19 GMT+1 óra  
Nézz utána, hogy amit keresel, annak melyik interface tesz eleget (mint pl IEnumerable, meg hasonlók) és használd azt a where-ben.
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 #175365   2012.02.27 00:08 GMT+1 óra  
Hi
Egy elég durva dolgon töröm a fejem, de már nem tudom, hogyan legyen így hát kérdezek.
Kód:
class Class1<T> : IAnim<T>
{
    T a, b;
    public Class1() {
         T c = a + b;
    }
}

A lényeg, hogy az a + b nem értelmezett vagyis a fordító nem engedi el ami érthető is. De én azt akarom hogy elengedje. És fontos, hogy T helyén olyan osztályok szerepelnek amikhez nem lehet hozzányúlni pl.: int, double, DateTime... . Szóval olyan osztályok amelyeknek van + operátoruk, csak éppenséggel nem tudja a fordító. A where meg szerintem azért nem használható, mert ugye kész típusokrol van szó. Az optimális az lenne, hogy le lehetne ellenőrizni, hogy a T megvalósítja-e a + - * / ... operátorokat és/vagy ad Add(), Subtract()... függvényeket.

Elsősorban a típusos megoldások érdekelnének (ha vannak), a dynamic féle pedig másodlagos (habár dynamic-kal mégcsak elképzelhető lenne, de akkor meg csak "lógna a levegőben"

Köszöntem
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 #175091   2012.02.23 12:24 GMT+1 óra  
A webes játékkal kapcsolatban felmerült egy "problémám", amivel biztosan küzdeni fogok, ezért már most előre érdeklődöm. Ugye ASP.Net 4.0 C# és MS SQL 2008 R2 Express áll rendelkezésre.
Egyik munkatársam ajánlott egy megoldást az ismételődő taskok kezelésére (ugye ms sql express alatt jobokat nem tudok használni, a service broker meg elég bonyolultnak tűnt elsőre), miszerint az Application_Start-ban kéne létrehozni egy Timert, ami hívja a szükséges tárolt eljárásokat, és a completed (vagy hasonló, nem tudom mi a pontos esemény neve) eseményében kéne magát újra létrehozni az innentől vett 'nextRun' időpont segítségével. Aki játszott a stratega játékkal, az tudja, hogy a szerver x percenként kalkulál, ezen idő alatt nem elérhető a játék, majd ha a kalkuláció befejeződött, akkor a befejezéstől számított következő, szintén x perc múlva lesz újra szerver kalkuláció. Na már most, mivel a kalkuláció nem meghatározható ideig fut, sima scheduled taskot nem tudok használni, mert akkor össze-vissza lesz hol 4 perc, hol 6 perc egy kör, az meg milyen már... Van erre valami bevett módszer, vagy amit leírtam az jó? Még nem gondoltam át, hogy ez gyakorlatban hogy néz ki, ha pszeudo kóddal valaki be tud segíteni, azt megköszönöm.

Szerk.:
Még jó, hogy modi vagyok, így ezt a marhagyökér kérdést tudom szerkeszteni és gyorsan meg tudom válaszolni, hátha valakinek segítek vele:
Kód:
//Global.asax-ban:

static Timer o_Timer;

        void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            o_Timer = new Timer();
            o_Timer.Interval = 5000; //Ez csak teszt, így 5mp -enként hívódik az elapsed.
            o_Timer.Elapsed += new ElapsedEventHandler(o_Timer_Elapsed);
            o_Timer.Start();
        }

        void o_Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            o_Timer.Stop();

            //Ide jön a szerver kalkuláció hívása, pl egy webservice hívás, vagy ilyesmi.

            o_Timer.Start();
        }

Ezt a hozzászólást Kuz módosította (2012.02.23 20:03 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???

   
Kuz - Törzstag | 4455 hsz       Online status #174772   2012.02.15 12:00 GMT+1 óra  
Itt az egész konvenciós rendszer egy f*s. Aki meg ezt csinálta, az egy balfül.
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 #174770   2012.02.15 11:19 GMT+1 óra  
Idézet
Kuz :
Parallax: azért string, mert a tryparse stringet vár.


Jó, de ki az a beteg, aki dátumot string-ben tárol. Ennél még a dynamic is jobb.
A másik láncolás is elég beteg. Nálatok limitálva van, hogy 1 metódus 1 sor?

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