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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2196
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] > 30 < [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] [135] [140] [142]
Pretender - Törzstag | 2498 hsz       Online status #167814   2011.11.02 08:42 GMT+1 óra  
Persze, jó lenne a Qt, csak nem akarom a következőket:
easy82
- Kell egy feljegyzést mellékelni hogy a keretrenszert az LGPL licensszel használtad.
- Az LGPL szerződést mellékelni kell a programhoz.
- Az "About Qt"-ot használni kell a programban.
- A Copyright szövegnél is le kell írni hogy az LGPL-lel használjuk a Qt-ot, linkkel együtt hogy hol lehet megtalálni az LGPL-t.


szerk.:
De vajon, ha az editorhoz kell csak, és azt nem teszem közzé, akkor utána nyomoznak? Nem hiszem. Szóval akár még ez is járható út lehet (amíg az editor nem public)

Ezt a hozzászólást Pretender módosította (2011.11.02 09:16 GMT+1 óra, ---)

   
Parallax - Tag | 606 hsz       Online status #167754   2011.11.01 20:28 GMT+1 óra  
Idézet
Pretender :
Lehet, hogy igazából lényegtelenné válik a kérdés, ugyanis elég szívás ez a c#-ból c++ dll hívása
Kell írni egy rakat ilyet.



Kell, de vannak rá code template-ek swig, string template stb, amikkel lehet generálni ilyen wrapper, meg bind kódokat, bár annak a logikáját is egyszer meg kell írni. Még mindig ott a WinRT lehetőség, vagy a jó öreg QT. Ez utóbbi, ahogy leírták fizetős célra is ingyenes, ha nem módosul a QT kódja.

   
Pretender - Törzstag | 2498 hsz       Online status #167753   2011.11.01 20:21 GMT+1 óra  
Lehet, hogy igazából lényegtelenné válik a kérdés, ugyanis elég szívás ez a c#-ból c++ dll hívása
Kell írni egy rakat ilyet:
Kód:
//c++

CLASS_DECLSPEC void* _ValamiNew(...)
{
    return new Valami(...);
}

Kód:
//c#
delegate IntPtr ValamiNew(...);

ValamiNew valamiNewFunc = (ValamiNew)Marshal.GetDelegateForFunctionPointer(GetProcAddress(hDll, "_ValamiNew"), typeof(ValamiNew));

És ez még mindig azt jelenti, hogy a membereket nem látom, szóval sehogy se jó ez

   
Asylum - Törzstag | 5484 hsz       Online status #167750   2011.11.01 19:26 GMT+1 óra  
Csak az lesz inline amit forditáskor látsz.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #167747   2011.11.01 18:29 GMT+1 óra  
Azt hallottam, hogy így nem lesz inline, de libbel az vajon rendesen működik?
Mindenesetre túl sok performance dropot azért nem várok tőle, csak érdekelt. Amúgy egy projektben van a dll meg az azt használó progi, szóval az újrafordítás mindig megvan. Azért lenne jobb a dll, mert megpróbálkozok c#-ból használni, így nem kell Qt-t használni, vagy saját "WinFormot" írni

   
Geri - Törzstag | 2196 hsz       Online status #167745   2011.11.01 18:14 GMT+1 óra  
Idézet
Pretender :
ha a zendzsint dll-be fordítom és azt linkelem egy másik projecthez, akkor lassabban fog futni, mint amúgy? Szóval van valami hátránya a dll-nek?



igen, van.

a dllből kicsatolt funkciók hívása lassabb, mintha helyi függvény lenne, amit a compiler akár inlineizálhat is.

de valószínűtlennek tartom, hogy a kódod emiatt lenne lassú.

   
proof88 - Törzstag | 530 hsz       Online status #167744   2011.11.01 17:42 GMT+1 óra  
Vagy úgy kell csinálni hogy egy szolúsönbe rakod a dll projektet meg a másik projektet és beállítod hogy a másik függ a dll-estől.
   
Asylum - Törzstag | 5484 hsz       Online status #167742   2011.11.01 17:18 GMT+1 óra  
Amig fejleszted addig ne szarakodj dll-el, mert tuti hogy elfeljted ujraforditani.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
proof88 - Törzstag | 530 hsz       Online status #167739   2011.11.01 17:06 GMT+1 óra  
kizárt hogy egy grafikus motor tisztességes jelenetnél azért legyen lassú mert dll-ben van. Értsétek már meg, hogy a kódodtól függ a gyorsaság, nem ilyen nüanszoktól ... Kódod = hogyan építed fel a scene-t, stb. Mehet dll-be. Nincs hátránya a dll-nek, leszámítva amikor az elején tökölsz vele hogy menjen.
   
Pretender - Törzstag | 2498 hsz       Online status #167734   2011.11.01 15:45 GMT+1 óra  
ha a zendzsint dll-be fordítom és azt linkelem egy másik projecthez, akkor lassabban fog futni, mint amúgy? Szóval van valami hátránya a dll-nek?

   
easy82 - Tag | 21 hsz       Online status #167521   2011.10.27 22:58 GMT+1 óra  
Én alaposan utánajártam, mert terveim vannak vele.

A Qt-tal fejleszthetsz fizetős programokat is, anélkül, hogy fizetnél érte, és amennyiben teljesíted a kritériumokat:
- Dinamikusan kell linkelni a használt Qt könyvtárakat.
- A Qt könyvtáron végzett változatásokat meg kell osztani forráskód formájában a publikummal.
- Kell egy feljegyzést mellékelni hogy a keretrenszert az LGPL licensszel használtad.
- Az LGPL szerződést mellékelni kell a programhoz.
- Az "About Qt"-ot használni kell a programban.
- A Copyright szövegnél is le kell írni hogy az LGPL-lel használjuk a Qt-ot, linkkel együtt hogy hol lehet megtalálni az LGPL-t.
   
gaborlabor - Moderátor | 4449 hsz       Online status #167520   2011.10.27 22:52 GMT+1 óra  
Nem, így van (tehát teljesen ingyen), már jópár éve.

   
zeller - Törzstag | 487 hsz       Online status #167519   2011.10.27 22:41 GMT+1 óra  
A lgpl akkor is ingyer van, ha commercial a cucc, nem? Korabban nem lgpl alatt adtak, szoval addig fizetni kellett erte a proprietary szoftvereseknek, de aztan levettek a korlatozast. De javitsatok ki, ha tevedek...

   
Asylum - Törzstag | 5484 hsz       Online status #167516   2011.10.27 20:09 GMT+1 óra  
Amig nem commercial cuccot fejlesztesz addig ingyé van.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
zeller - Törzstag | 487 hsz       Online status #167515   2011.10.27 20:08 GMT+1 óra  
a qt nem lgpl?

   
Parallax - Tag | 606 hsz       Online status #167513   2011.10.27 20:04 GMT+1 óra  
Ha ez a licensz annyira zavar, de mégis QT-szerű fejlesztés kell C++ alatt, akkkor ot a WinRT, igaz az csak Windows8-on fog futni, de legalább nem olyan fapados, mint az elavult win32,

   
Pretender - Törzstag | 2498 hsz       Online status #167491   2011.10.27 09:51 GMT+1 óra  
Persze, privát dolog, de a modellező programot is oda szokták írni, pedig azt sem teszed közzé
Hát igen, ez ilyen becsület-dolog igazából, a játékban ténylegesen nem lenne benne a qt, csak az editor készülve vele (amivel meg kvázi a játék )

   
proof88 - Törzstag | 530 hsz       Online status #167489   2011.10.27 09:30 GMT+1 óra  
az editor az egy privát dolog, kivéve ha közzé akarod tenni
vagy utólag is megírhatod a saját keretrendszereddel attól függ hogy osztod be az idődet
   
Pretender - Törzstag | 2498 hsz       Online status #167486   2011.10.27 06:57 GMT+1 óra  
Editort összebarkácsolni, de gondolni kell a jövőre is, mi lesz, ha játék lesz a vége, netán olyan, hogy el is lehet adni?! Nem szívesen írom oda, hogy a Qt cuccot használom, avagy nem szívesen fizetek, ha egy kis erőbefektetéssel én is meg tudom csinálni (persze nem olyan jóra, de hát na )

   
proof88 - Törzstag | 530 hsz       Online status #167485   2011.10.27 06:41 GMT+1 óra  
attól függ mit akarsz vele kezdeni
   
Pretender - Törzstag | 2498 hsz       Online status #167484   2011.10.27 06:23 GMT+1 óra  
Nézegettem már én ezt a Qt-t. Bár nem tudom mennyire gáz, hogy egy külső cuccot használ az ember, és nem írja meg magának, nem is beszélve a licensekről

   
proof88 - Törzstag | 530 hsz       Online status #167483   2011.10.27 06:15 GMT+1 óra  
cpp-hez még ott a Qt, bár az egy komplett crossplatform keretrendszer (Pretender ezt EVA1-ből fogod tanulni ).
   
Pretender - Törzstag | 2498 hsz       Online status #167482   2011.10.27 05:38 GMT+1 óra  
Tényleg marha jó, ebből könnyebb felépíteni, mint kódban számolgatni. Docking lehetőséget csak én nem találtam amúgy?

   
fpeti - Törzstag | 1295 hsz       Online status #167481   2011.10.27 03:32 GMT+1 óra  
Nem találtam sima win32 topic-ot, de aki win-es ctrl-eket szeretne használni MFC nélkül sima c++-al, ez nagyon jól jöhet: resedit
Állati jó, megcsinálja a .rc filet, resource.h-t is.
   
Pretender - Törzstag | 2498 hsz       Online status #167234   2011.10.20 18:31 GMT+1 óra  
Ja, közben ráébredtem, meg átbeszéltük Jogával, meg ilyesmi. Ez egy jó megoldás, a másik lehetőség meg egy
Kód:
static B instance;

B()
{
    instance = this;
}

de ez a csúnyább megoldás

   
Asylum - Törzstag | 5484 hsz       Online status #167233   2011.10.20 18:22 GMT+1 óra  
Member függvényre önmagában nem lehet pointert állitani, mindig kell mellé egy objektum is, amire meghivod. Ahogy Joga is mondta, te egy A-ra akarod meghivni a B metódusát, még az a jo hogy nem száll el...
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #167226   2011.10.20 17:09 GMT+1 óra  
Ilyesmi?

Kód:
class Stuff{
public:
    virtual void execute();
    virtual ~Stuff;
}

template<class X>
class TheStuff{
public:
    TheStuff( X *_c, void (X::*_method)() ){ C = _c; method = _method }
    void execute(){ c -> method(); }
    void ~TheStuff();
private:
    X *c;
    void (X::*method)();
}


class B
{
    int member1;
    Stuff* a;

    B()
    {
        a = new TheStuff<B>( this, func1 );
        member1 = 10;
    }

    void func1()
    {
        std::cout << member1;
    }
};
(ಠ ›ಠ) Stewie!

   
Pretender - Törzstag | 2498 hsz       Online status #167225   2011.10.20 17:00 GMT+1 óra  
Ez eddig nagyon jó, de az érdekel, hogy hogy lehet megoldani Örököltetni nem tudok belőle, mert sok ilyen "A"-m van

   
Joga - Törzstag | 1791 hsz       Online status #167224   2011.10.20 16:59 GMT+1 óra  
Nem zavar, hogy egy A objektumon akarod végrehajtani a B osztály metódusát?
(ಠ ›ಠ) Stewie!

   
Pretender - Törzstag | 2498 hsz       Online status #167223   2011.10.20 16:37 GMT+1 óra  
Kód:
class A
{
    typedef void (A::*method)();
    method OnProcess;
};

class B
{
    int member1;
    A* a;

    B()
    {
        a->OnProcess = &B::func1();
        member1 = 10;
    }

    void func1()
    {
        std::cout << member1;
    }
};

Nagyjából ez a helyzet. Amikor meghívom a func1-et (az OnProcess-en keresztül), akkor a B tagjait nem "látja". Olyan értelemben, mintha minden null lenne. Erre van valami megoldás, vagy tök máshogy kell majd csinálnom?

   
Pretender - Törzstag | 2498 hsz       Online status #167214   2011.10.20 13:14 GMT+1 óra  
Akkor tök természetes. Na de csak ennyi "leakem" legyen...^^ (2*24 byte)

   
Asylum - Törzstag | 5484 hsz       Online status #167213   2011.10.20 13:11 GMT+1 óra  
Statikus valtozok destruktorai a main utan futnak le (nalam is emiatt voltak memory leakek).
Megoldas: sajat STL A leak egyebkent a map fejeleme ami mindig letezik meg ha swappeled is.

Ha az a problema hogy nemtod hogy irj mapet akkor glprojects (es a map speciel jol mukodik tobbnyire).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #167197   2011.10.20 07:00 GMT+1 óra  
Kód:
//header
typedef std::map<T,K> _map;
static _map map;

//cpp
Class::_map Class::map;

Class::~Class()
{
    map.Clear();
    _map().swap(map);
}

Mégis, a return 0 előtt van egy _CrtDumpMemoryLeaks, és 24 byte memory leaket ír. Miért? + Mi a megoldás? Vagy simán nincs megoldás, és ez így rendben van, mert a program lefutása után úgy is felszabadul a memória?

   
Joga - Törzstag | 1791 hsz       Online status #167147   2011.10.19 14:48 GMT+1 óra  
Ha a tagoknál fontos az inicializáció sorrendje, akkor ne használj initialization list-et, hanem konstruktorban inicializálj, kb ezt mondja a szöveg

Initialization list esetén a sorrend nem garantált
(ಠ ›ಠ) Stewie!

   
zeller - Törzstag | 487 hsz       Online status #167139   2011.10.19 11:55 GMT+1 óra  
Olvasgatom a c++ lite faq-ot es a ctor init listakhoz irta ezt:
Bottom line is to use common sense: if it's cheaper, better, faster, etc. to not use them, then by all means, don't use them. This might happen when your class has two constructors that need to initialize the this object's data members in different orders.
Miert lesz ez nem jo?

   
Pretender - Törzstag | 2498 hsz       Online status #166680   2011.10.13 06:11 GMT+1 óra  
Na igen... és ki beszélt itt biciklizésről? Nem azt mondtam, h ne kérdezz, de mindezt nagyon jól elmondja egy rakat könyv. Gondolom... én c#-ot tanultam először, de onnantól szinte mind1, csak a szintaktika más.

   
zeller - Törzstag | 487 hsz       Online status #166675   2011.10.12 21:35 GMT+1 óra  
De programozasi nyelvek szintaktikajat, szemantikajat es know-how-jat mar igen... Gyakorlassal egybekotve persze.

   
KILLER_RICSI - Tag | 8 hsz       Online status #166674   2011.10.12 20:59 GMT+1 óra  
Srácok, köszi a tanácsokat...

Könyvből sem tanult meg még senki biciklizni...

   
Pretender - Törzstag | 2498 hsz       Online status #166584   2011.10.11 20:44 GMT+1 óra  
Ja, lehet, hogy én is félreértettem
Érdemes tanulni egy kis OOP-t, és c++t

   
Asylum - Törzstag | 5484 hsz       Online status #166583   2011.10.11 20:28 GMT+1 óra  
Én még a kérdést se értem, csak sejtem mire gondolsz (a Map osztályból elérni egy main-ben deklarált tömböt?).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #166582   2011.10.11 19:45 GMT+1 óra  
Kód:
Robotok* GetRobot(const int& p_Id)
{
    return robot[p_Id];
}

?

szerk.:
ajánlok valami alapokkal foglalkozó c++ könyvet

   
KILLER_RICSI - Tag | 8 hsz       Online status #166581   2011.10.11 19:42 GMT+1 óra  
Sziasztok!


Adott a következő példányosítás a main-ben:

Kód:
Robotok **robot = new Robotok*[n];
for(int i = 0; i < n; i++)
{
robot[i] = new Robotok();
}


Azt szeretném megoldani, hogy a Map osztály egyik metódusából tudjak hivatkozni a robotok osztály robot[ i ] valamelyik példányára.
Ehhez meg kellene adnom egy bemeneti paramétert a Map osztály adott metódusában, amit nem tudok.
Ugyan így kimeneti paramétert is tudnom kellene adni, ha változtatok valamit adott robot[ i ] példányon.

Tudna valaki segíteni? (Igen, beraktam kód-blokkba a kódot, hogy rendesen megjelenjen. - HG)

Köszi!

Üdv: Ricsi

Ezt a hozzászólást HomeGnome módosította (2011.10.11 21:23 GMT+1 óra, ---)

   
KILLER_RICSI - Tag | 8 hsz       Online status #166580   2011.10.11 19:36 GMT+1 óra  
Köszi!

   
Asylum - Törzstag | 5484 hsz       Online status #166487   2011.10.09 15:13 GMT+1 óra  
Kód:
class Map
{
private:
    int** tomb;
    int width, height;

public:
    Map() {
        tomb = NULL;
        width = height = 0;
    }

    ~Map() {
        // TODO: törölni a résztömböket
        delete [] tomb;
    }

    void resize(int w, int h)
    {
        // TODO: ha létezik már akkor töröld
        tomb = new int*[w];

        for( int i = 0; i < w; ++i )
            tomb[i] = new int[h];
    }
};
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
KILLER_RICSI - Tag | 8 hsz       Online status #166485   2011.10.09 14:54 GMT+1 óra  
Sikerült megint elakadnom....



A problémám most az, hogy nem tudok létrehozni dinamikus helyfoglalású tömböt a Map osztályban

Elgondolásom szerint a főprogramban adnám meg a 2D-s tömb méretét 2 változóval (x, y).
A Map osztályban két metódus segítségével állítanám be a tömb méretét (main-ból adnám át a két értéket, setx, sety).

A Map header file-ában pedig deklarálnom kell a matrix tömböt.
És itt jön a probléma, mert nem tudom előre a méretét, így nem tudom megadni....
Gondolom, hogy itt valami általános formulát kellene használni, amellyel jelzem, hogy lesz egy ilyen nevű tömb....

(Metóduson belül nem hozhatom létre a tömböt, mert az csak a metódus lefutásáig van életben.)

Tudna valaki segíteni?

Köszönöm!

Üdv: Ricsi

   
KILLER_RICSI - Tag | 8 hsz       Online status #166480   2011.10.09 13:58 GMT+1 óra  
Köszönöm, köszönöm!

Készülnek a robotok... ))


Üdv: Ricsi

   
gaborlabor - Moderátor | 4449 hsz       Online status #166479   2011.10.09 13:45 GMT+1 óra  
Robotok *robotok = new Robotok[n];
n a darabszám.
felszabadításnál delete[] robotok;

(amúgy a Robotok típust átnevezném Robot-ra.)

   
borsi - Tag | 180 hsz       Online status #166478   2011.10.09 13:44 GMT+1 óra  
pl
Kód:
Robotok **robot = new Robotok*[n];
for(int i = 0; i < n; i++)
{
robot[i] = new Robotok();
}


Ennél a megoldásnál még figyelni kell arra, hogy a delete [] robot; leakel, először végig kell menni a tömbön és egyenként fel kell szabadítani a Robotok objektumokat.

Kód:
for(int i = 0; i < n; i++)
{
      delete robot[i];
}
delete [] robot;

Ezt a hozzászólást borsi módosította (2011.10.09 14:03 GMT+1 óra, ---)

   
KILLER_RICSI - Tag | 8 hsz       Online status #166477   2011.10.09 13:37 GMT+1 óra  
Sziasztok!


Lenne a következő foglalás:


Robotok *robot1 = new Robotok;
Robotok *robot2 = new Robotok;
...
...
...
Robotok *robotn = new Robotok;


Így létre tudom hozni a sorszámozott robot pédányokat.
A kérdésem az lenne, hogy a létrehozást tudom-e tömbként megtenni?
Az lenne a cél, hogy ciklussal hozzam létre a robotokat - dinamukusan megadott mennyiségben.
Valahogy így gondoltam:

Robotok *robot[n] = new Robotok;

Persze ez nem működik.

Van valakinek ötlete?

Köszi!

Üdv: Ricsi

   
Asylum - Törzstag | 5484 hsz       Online status #166406   2011.10.07 22:37 GMT+1 óra  
Idézet
borsi :
találj ki olyan problémát, amihez optimális adatszerkezet a list<map<string, vector<int>>>...



Ismered a mondást: aki nem érti az tanitja...
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] > 30 < [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] [105] [110] [115] [120] [125] [130] [135] [140] [142]