|
Idézet kicsy :
Bár nemegészen értem a kérdést, talán passzol a válasz 
Csinálj egy bool tömböt a használt billentyűkről, lenyomáskor - a keyboarddown eventhandlerében - igazra állítod a lenyomott billnek megfelelőt, felengedéskor meg hamisra. A játéklogikával foglalkozó szálon meg így kapsz egy tömböt, hogy épp milyen gombok vannak lenyomva.
Sikerült! Pont úgy ahogy mondtad! Még 1x köszi!!
|
|
|
Idézet hypocrite :
Igen, de én c#-ban csinálom ( SDL.Net) és ott nincsenek mutatók. 
Mert kiszedték belőle a mutatókat........Minek?Azt hitték akkor könyyebb lesz....Nyugodtan bennehagyhatták volna sztem, nem muszály használni......
|
|
|
Igen, de én c#-ban csinálom ( SDL.Net) és ott nincsenek mutatók.
|
|
|
Miért használsz ilyen eventhandler-es cuccot?
viszont ha van egy:
Kód: Uint8 *key;
mutatód, akkor:
Kód: key=SDL_GetKeyState(NULL);
utasítással kapsz egy tömböt a keybe, amiben benne lesznek a billentyűk állapotai....
Tehát utána már használhatod így is:
Kód: if(key[SDLK_SPACE]{
...
})
|
|
|
Np, GDF után pont vmi ilyesmiről beszélgettünk a sörök mellett
|
|
|
Idézet kicsy :
Bár nemegészen értem a kérdést, talán passzol a válasz 
Csinálj egy bool tömböt a használt billentyűkről, lenyomáskor - a keyboarddown eventhandlerében - igazra állítod a lenyomott billnek megfelelőt, felengedéskor meg hamisra. A játéklogikával foglalkozó szálon meg így kapsz egy tömböt, hogy épp milyen gombok vannak lenyomva.
Azt hiszem értem, megyek megprobálom. Köszi kicsy.
|
|
|
Bár nemegészen értem a kérdést, talán passzol a válasz 
Csinálj egy bool tömböt a használt billentyűkről, lenyomáskor - a keyboarddown eventhandlerében - igazra állítod a lenyomott billnek megfelelőt, felengedéskor meg hamisra. A játéklogikával foglalkozó szálon meg így kapsz egy tömböt, hogy épp milyen gombok vannak lenyomva.
|
|
|
Idézet hypocrite :
Hi! Kéne egy kis segitség.. Rég óta szenvedek sdl-ben az irányitás megoldásával. Hogy lehetne megoldani azt hogy a billenyűzeten többen lehetsen játszani és ne "ragadjon" be? Valaki elmagyarázá ha tudja a megoldást? Amúgy Sdl.net + c#-ot használok. 
Itt a kód: Kód:
public void Run()
{
Events.KeyboardDown += new KeyboardEventHandler(OnKeyboardDown);
Keyboard.EnableKeyRepeat(30, 0);
Events.Tick += new TickEventHandler(this.OnTick);
Events.Run();
}
private void OnKeyboardDown(object sender, KeyboardEventArgs e)
{
//Esc kilépés
if (e.Key == Key.Escape)
{
Events.QuitApplication();
}
if (e.Key == Key.S)
{
uto1.Y += 10;
}
if (e.Key == Key.W)
{
uto1.Y -= 10;
}
if (e.Key == Key.DownArrow)
{
uto2.Y += 10;
}
if (e.Key == Key.UpArrow)
{
uto2.Y -= 10;
}
if (e.Key == Key.Space)
{
pause = false;
}
}
|
|
|
Hi! Kéne egy kis segitség.. Rég óta szenvedek sdl-ben az irányitás megoldásával. Hogy lehetne megoldani azt hogy a billenyűzeten többen lehetsen játszani és ne "ragadjon" be? Valaki elmagyarázá ha tudja a megoldást? Amúgy Sdl.net + c#-ot használok.
|
|
|
akkor alighanem tul regi az SDL-ed, toltsd le a legujabbat!
|
|
|
Mehnéztem az SDL_video.h-t, erre meg van SDL_HWSURFACE, meg egyéb konstansok, de SDL_NOFRAME nincs...
Úgy tűnik be kéne szereznem a normális header fájlokat....
|
|
|
a szukseges include-ok megvannak, ugye? elvileg az #include "SDL.h" meg kell hogy hivja ezt is, de ha megsem, probald ki hogy kezzel odairsz egy #include "SDL_Video.h" sort
|
|
|
"SDL_NOFRAME" undeclared (asszem)
Szóval, mintha kihagyták volna, amikor a #define-okat írták(Lehet, hogy kihagyták  )
|
|
|
de hogy érted azt hogy "nem működik" pár konstans? a fordító hibát jelez? vagy lefordítja rendesen de olyan mintha nem is használtad volna az adott konstanst?
amúgy az SDL tud érdekeseket csinálni, legutóbb azzal szoptam, hogy a Linux alatt tökéletesen működő kódot vindóz alatt lefordítva a fullscreenba majd onnan vissza váltás szétbarmolta a képernyőt, kb. egy hét kellett hogy rájöjjek (azt is úgy, hogy írtam külön egy kis programot amit lépésről-lépésre építgettem fel) hogy 24 bites színmélységnél bugzik a vindózos SDL, ugyanaz az SDL linux alatt tökéletesen működik... 32 bitre átírva már minden ment remekül
szóval lehet hogy nálad is vmi hasonló barom gond van
|
|
|
hangot úgy sem fogok annyire használni.....
Nem baj, hogy nehéz az AL, ott van az egész nyári szünet, és már csak két hét 
De az a konstans-os dolog jobban idegesít
Főleg, hogy pl az egyik megy a másik nem, a SDL_HWSURFACE igen, az SDL_NOFRAME nem.....Ez asszem nagyobb gond....
|
|
|
Joga:
a hibás kódot (amire TTF hibákat adott) paste-eld be ide, szerintem valamit az include-nál vagy a ttf-es fv meghívásánál ronthattál el
nem olyan nagy cucc az SDL libek és headerek használata, szerintem ne add fel!
bár az openal sem rossz, de az sdl_mixer nagyon eCCeru, szerintem erdemes azzal kezdeni!
|
|
|
Huhh.....Ez megrázottt.....Úgy tűnik nem műxik pár SDL konstans, legalább is a DevCPP nem ismeri fel
Kinek volt ilyen problémája, és hogyan oldotta meg?
Az egér hiány még nem gond a gombokét tudom fejből
|
|
|
Lazy Foo-s linkekről.
De lehet, hogy az a baj, hogy devCPP 4-em van, bár ezt kétlem....
Hehh, egyébként az SDL_image-el is ez a baja....
Image helyett DevIL, TTF helyett bitmap, mivel szerintem a mixer sem fog menni, ezért ahelyett meg alap SDL_AUDIO, meg OpenAL.....Majd nyári szünetben kitanulom őket alapszinten, de most a Lazy Foo-t nyomom.....Persze a TTF-es Mixer-es részeket kihagyom....És reménykedek hogy nem lesz nagyobb ond
|
|
|
Mondjuk én jelenleg TTF-et használok, de egyenként kiszedem a betűket surface-ekre, mert nem akarok mindig rendereltetni (nagyon lehúzza az FPS-t). Amúgy, hogy raktad fel az SDL-es cuccokat? Mert ha kell, akkor felteszem az összes DevPak-ot, amiket csak egyenként fel kell installálni, és tök rendben lesznek
|
|
|
Akkor megpróbálkozom vala a Bitmap character nevű technikával....Van nékem péint
|
|
|
Jaja, akkor valszeg a pixel formátum megváltozott... Pont most volt nálam is átlátszóság hiba, bár nálam egy Uint16 color okozta a gondot. A TTF-es cuccra meg lövésem sincs. Nem hagytál el valahol egy ; jelet?
|
|
|
Sikerült megcsinálni.....Addig írtam át a kódot, amíg nem lett hibátlan 
Lehet, hogy az volt a gond, hogy a SDL_SetVideoMode előtt olvastam be a képeket.....
A másik.....Ki akartam próbálni a True Type Font cuccot, erre meg vagy 60-szor kíírta, hogy
SDL_TTF.h : syntax error before'('
Minden függvénydefinícióra kiírt egyet....Úgyhogy....Nemtom, h most ez az én, vagy az header hibája, de hogy így a szöveg-elés nem fog menni, az bitos......
|
|
|
Jó, majd kipróbálom, csak most inkább aludnék....Nem kellett volna olyan korán kellnem....Mondjuk nem volt korán, csak keveset aludtam
|
|
|
Kód: SDL_SetColorKey( surface, SDL_SRCCOLORKEY, colorKey );
Én így használom. Az SDL_RLEACCEL azt hiszem nálam sem működött, azért vettem ki  (igazából nem néztem utána, hogy ez mire jó).
Nézd meg, hogy az SDL_SetColorKey mit ad vissza, és ha -1-et akkor írasd ki az SDL_GetError()-t!
|
|
|
Nah lenne egy kis gond.....Írtam egy kis progit( www.darkjedi.extra.hu/ColorKey.zip )
Elvileg a background.bmp képre ki kéne rajzolnia a man.bmp-t úgy, hogy a világos ciánkék színeket figyelmen kívül hagyja, tehát csak a fekete részét rajzolja rá a bmp-re.....De még az ablakot sem hozta létre, kivéve, ha kitörlöm ezt a két sort(a forrásban komment-be raktam...
Kód: Uint32 colorkey=SDL_MapRGB(Man->format,0,0xFF,0xFF);
SDL_SetColorKey(Man,SDL_RLEACCEL | SDL_SRCCOLORKEY,colorkey );
De így is csak egy fekete képernyőt rajzol ki.....nem tud valaki segíteni?
|
|
|
TÉNYLEG!!!!!
Mingw-vel kezdődik a hibaüzi!!!!!!!!!!!!! 
Végre elkezdhetem SDL-es pályafutásomat, de végre gond nélkül.....Bár...
|
|
|
Hi!
Én a progimban a következőket linkelem Dev-Cpp-ben:
-lmingw32 -lSDLmain -lSDL_ttf -lSDL_image -lSDL -lSDL_mixer
Nem lehet, hogy neked a -lmingw32 hiányzik? (A Code::Blocks-os problémát nem teljesen értem, szerintem ha SDL-t használsz bemenetre, akkor azt használd megjelenítésre is. Szerintem.)
|
|
|
Most volt időm kigondolni.... A Code::Blocks a példaproginak csak a grafikáját nem jeleníti meg......De az minek kell??? A billentyűzetkezelés megy...Mivel az eseménykezelés úgy van megoldva, hogy lekérdezik az állapotot, aztán meg megvizsgálják(asszem), ennyi erővel beletehetem pl a glut idle függvényébe(vagy inkább Timer függvénybe...)....
Remélem, hogy csak a grafikája rossz
Javítson ki valaki, ha tévedek....
|
|
|
nem az biztos nem jó,figyelmelenül olvasok... 
"WinMain@16"-ban csak a "@16"ot láttam,böktem rá,h winmm.lib
|
|
|
Az SDL libjeit belinkeltem, lehet, hogy azt is kellene, amit MaximumViolence ír....
|
|
|
Idézet Joga :
Nem tudja valaki, hogy a Dev C++ mire ír ki "undefined reference to WinMain@16", vagy mi jibaüzenetet?
Nézzz körül a libek között, kell ott lennie egy libSDL-nek és egy libSDLmain-nek, mind a kettőt be kell linkelni.
|
|
|
Idézet Joga :
Nem tudja valaki, hogy a Dev C++ mire ír ki "undefined reference to WinMain@16", vagy mi jibaüzenetet?
visual c-ben:
Kód: #pragma comment(lib,"winmm.lib")
dev-c-ben nem emléxem már,de ott is vmi hasonló nevű libet(.a) kell linkelni...
|
|
|
az "undefined reference to ..." üzenetek arra utalnak, hogy nem állítottad be, hogy miket kell linkelnie a linkernek.
|
|
|
Nem tudja valaki, hogy a Dev C++ mire ír ki "undefined reference to WinMain@16", vagy mi jibaüzenetet?
|
|
|
Köszi!, majd igyekszem.....
|
|
|
Jaj bocsi, én meg csak most nézelődtem erre ... Sok sikert az SDL-hez!
|
|
|
Megnéztem a játékokat a libsdl.org-on, az egyik játék weboldalán be voltak linkelve a lib fájlok.....Beraktam a lib mappába és megy!!!!
Végre elkezdhetek sdl-ezni!!!!
Köszönöm Istenem!!!!!!!!!!!!!!!!!!
Akinek kéne mert msvrtc unrecognizedes hülyeség jön ki, annak:
http://www.hardcoreprocessing.com/download/sdl/SDL-devel-1.1.2-mingw32.tar.gz
A Visual C++ 6-os header fájlok meg mennek rendesen.....
|
|
|
Aha megtaláltam........Azt írja, hogy a másik cuccot kell használni(azt, amit belinkelt)......Amikor Megnyitom Winrarral, akkor van benne egy fájl, de amikor rányomok a kitömörítésre, akkor nem tömöríti ki, csak létrehozza a célmappát...... Nincsen meg valakinek a cucc?
|
|
|
Joga: én találtam egy topikot róla
http://odamex.net/boards/index.php?topic=127.msg780
MSVC-t használsz fordítónak? (hozzáteszem, nekem nem sikerült áttenem Code::Blocks-ba a Lisa projektemet, így maradtam Dev-C++ -ban. Ott is SDL-es lib problémák merültek fel)
|
|
|
Idézet hypocrite :
Üdv, lenne megint egy próblémám! Valamiért nem jól uptade-tel az sdl! Van egy egyszerű surface és ahogy mozgatom a képet (szélét) huzza maga után. Mi lehet rossz?
Nem nagyon akarok beleszólni, de gondolom 1 pixellel mozgattad időegységenként.....A háttérre rárajzoltad a képet, és utána nem törölted le, ezért maradt ott a széle(szerintem)
|
|
|
Hát ez elég fura!
Nyitottam egy új Code::Blocks SDL projectet
Betettem a libeket a megfelelő helyre, erre meg at egyszerű:
Kód: #include<SDL\SDL.h>
int main(int argc, char **argv){
return 0;
}
progira kiírja, hogy:
Warning: .drectve '/DEFAULTLIB: "MSVCRT" /DEFAULTLIB "OLDNAMES" ' unrecognized
|
|
|
Üdv, lenne megint egy próblémám!  Valamiért nem jól uptade-tel az sdl! Van egy egyszerű surface és ahogy mozgatom a képet (szélét) huzza maga után.  Mi lehet rossz?
|
|
|
Hohó! Megcsináltam!    EGyébként a lazyfoo-s tutorok tényleg jók! 
Ha már ide írok belinkelek egymásikat. Nem anyira jó mint a fent emlitett de azért hasznos:
Cone3D Programming
|
|
|
Nah lehet hogy én vagyok nagyon gyökér (ez a valószinűbb  ) de sehogy nem sikerült a képernyöre varázsolni az fps számot. Ha tudja valaki hogy kell azt nagyon megköszöném. 
Amúgy a kiszámolása meg van, a a képernyő fejlécébe kiírja de a képbe (SDl_Surface *screen) nem nagyon akarja!
|
|
|
Szerencsére úgytűnik ez a probléma is megoldódott, tehát: SDL to Input rulez. Azért ezzel jóval könnyebb kezelni a Joystick-ot mint DInput-tal (bár az is megoldható).
|
|
|
Vicces, de egy Ogre article-ben találtam meg a választ. Ez sem teljesen az amit én akartam, mert így csak SDL-lel tudom kezelni az eseményeket és sima win-es eseménykezelő mindíg üres eseményt kap, de legalább működik, a többit majd még kitalálom, hogy legyen.
Ja és a layz-s tutorok nagyon sokat segíthetnek SDL tanulásában!!!
(a link amit magic adott)
|
|
|
|
Reméljük, Flugi nemsokára betéved ide, ő itt a jf-en a nagy SDL-mágus
|
|
|
Pontosítok, jelenleg erre a kódra semmilyen üzenetet nem dob, tökmind1 h joystick-ot mozgatok, v billentyűzetet verem szét...
Kód: int main()
{
//MSG msg; // Windows Message Structure
//BOOL done=FALSE; // Bool Variable To Exit Loop
//fullscreen=FALSE; // Windowed Mode
// Create Our OpenGL Window
/*if (!CreateGLWindow("NeHe's Color Tutorial",640,480,16,fullscreen))
{
return 0; // Quit If Window Was Not Created
}*/
// Initialize SDL
if( !InitializeSDL() )
{
return 0;
}
// gets the joystick(s) datas
OpenJoystick();
SDL_JoystickEventState(SDL_ENABLE);
while( !done )
{
while(SDL_PollEvent(&sdl_event))
{
cout << "SDL event" << endl;
switch(sdl_event.type)
{
case SDL_KEYDOWN:
/* handle keyboard stuff here */
cout << "Keyboard stuff" << endl;
break;
case SDL_QUIT:
/* Set whatever flags are necessary to */
/* end the main game loop here */
break;
}
}
}
}
Ebből már minden fölösleges kódot kiszedtem (lehet túl sokat is), és a konzolt meg is nyitja, de ahogy azt már írtam, semmire sem reagál, SDL leírása meg egy nagy kalap...
|
|
|
Remélem van itt olyan, aki jártas az SDL-ben, és tud nekem segíteni. Tehát, újra elkezdtem vele foglalkozni, most mélyebben, mint régen, és máris van egy problémám
A joystick-ot 2 féle képpen lehet kezelni SDL-lel: 1x úgy, h minden alkalommal amikor vizsgálni akarom, akkor Update-elek 1et, és utána nézem meg, h épp le volt egy nyomva 1 gombja, v sem. Ez sem rossz megoldás, de nem lenne rossz, ha sikerülne rendesen, Event-es módon használni a rendszert. Ezt viszont sehogy sem tudom elérni, mert az alap Win-es event handler függvény úgynézki megeszi az összes eseményt. Vagy csak szimplán az lenne a baj, h nem SDL-lel hozom létre az ablakot? Ezt azért tartom valószínűtlenebbnek, mert akkor elvileg a Joystick Update-es kezelés sem működne...
|
|