Miten saan esim.pisteen ohjelmaan jota voi liikutella nuolilla? Voisitteko kertoa koko koodin siihen.
Jos ongeman ydin on grafiikan piirtäminen, voinen ohjata sinut tänne.
Jos ongelman ydin taasen on pikselin liikuttaminen, lue metabolixin kolmas kohta.
Ekan kerran kun luin ton viestin niin tajusin että haluat nuolilla liikuteltavaan ohjelmaan pisteen
GorkkiusSuuri kirjoitti:
Ekan kerran kun luin ton viestin niin tajusin että haluat nuolilla liikuteltavaan ohjelmaan pisteen
Niinhän siinä näköjään lukeekin :D Anteeksi, luin huolimattomasti :) No vastataanpa siihen sitten.
Yksi hyvä vaihtoehto on SDL, johon löytyy opas ihan Putkasta (tuo Gaxx:n linkki). Sitten on näitä muita grafiikkakirjastoja, kuten OpenGL, joihin myös löytyy oppaita ihan yllin kyllin. Jos teet ohjelmaa johonkin suojaamattoman tilan järjestelmään (esim. DOS), voit käyttää suoraa muistinosoitusta ja mahdollisesti BIOS-keskeytyksiä.
Pikselin piirtäminen ei varmaan ole temppu eikä mikään, jos osaa tehdä ohjelman, jota liikutellaan nuolilla :P
Minä käytän Dev-c++tä ja olen asentanut siihen SDL:llän, mutta tulee tälläisiä valituksia tuossa kun yritän kääntää tuota SDL esimerkkiä johon Gaxx antoi linkin:
[Linker error] undefined reference to `SDL_Init', [Linker error] undefined reference to `SDL_GetError' , [Linker error] undefined reference to `SDL_SetVideoMode' , [Linker error] undefined reference to `SDL_Delay' [Linker error] undefined reference to `SDL_Quit' , [Linker error] undefined reference to `WinMain@16' ja ld returned 1 exit status. Missä vika?
Lukaiseppas oppaat-osiosta löytyvä SDL:n asennusopas. Linkkerisi ei löydä SDL:n kirjastoa...
Tuossa SDL esimerkissä on vain neuvottu Visual c++:lle miten kirjastot sisällytetään ohjelmaan : #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL.lib"). Mutta miten nämä saa sisällytettyä Dev-c++:aan?
Menet projektin asetuksiin, siellä pitäisi olla noille kohta.
Kiitti paljon! Sain sen toimimaan! "Käytä hakua. Tätä on kysytty aika usein." Itse en ole löytänyt yhtään aihetta joka käsittelisi tätä.
Opiskelin vähän tuota SDL käyttö opasta niin sain käännettyä sen esimerkki koodin ja laitettua kaksoispuskurin päälle ja ottamaan kuvan muistiin mutta mihin kohtaan tuo funktio joka piirtää parametrina annetun kuvan ruudulle pitäisi laittaa kun ei meinaa kääntäjä suostua kääntämään tuota.
Joko lykkäät sen ennen main() -funktiota tai sitten laitat sen sen jälkeen ja lisäät sen funktion esittelyn ennen main() -funktiota.
int piirra(SDL_Surface kuva, int x, int y); // esittely int main() { piirra(kuva, x, y); return 0; } void piirra(SDL_Surface kuva, int x, int y) { //piirtäminen }
Juu nyt sain sen muuten toimimaan mutta kun yritän piirtää kuvaa näytölle niin tulee valituksia. (PiirraKuva(kuva, naytto, 50, 50);)
No raotappa vähän sitä koodia niin katsotaan :)
Ja millasia valituksia kuuluu?
Jos käännät Dev-C++:lla SDL:ää, voi myös linkkerin parametreihin laittaa: -lmingw32 -lSDLmain -lSDL
Sama kai tulee myös, jos aloittaa uuden SDL projektin.
#include <SDL/SDL.h> // sisällytetään SDL:n otsikkotiedostot int main(int argc, char *argv[]) { SDL_Init() if( SDL_Init(SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError()); return 0; } SDL_Surface * naytto; SDL_Surface *kuva; naytto = SDL_SetVideoMode(1024, 768, 30, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF); kuva=SDL_LoadBMP("kuva.bmp"); SDL_Delay(5000); SDL_Quit(); return 0; } void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y) { SDL_Rect alue; alue.x = x; alue.y = y; SDL_BlitSurface(kuva, NULL, naytto, &alue); }
Tuo koodi kääntyy mutta jos yritän piirtää tuota kuvaa PiirraKuva(kuva, naytto, 50, 50); niin ei mee läpi. Tosin en tiedä onko tuo funktio oikeassa paikassa.
(Mod. Edit. Kooditagit.)
void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y) { SDL_Rect alue; alue.x = x; alue.y = y; alue.w = Kuvan_Leveys; //Nämä pitää myös asettaa alue.h = Kuvan_Korkeus; SDL_BlitSurface(kuva, NULL, naytto, &alue); }
juu. Sainsen toimimaan ihan tolla aikaisemmin mainitsemallani tavalla. Funktio oli väärässä paikassa. Se piti olla koodin alussa.
Lisääpä alkuun (siis ennen main-funktiota) PiirraKuva-funktion esittely:
void PiirraKuva(SDL_Surface *kuva, SDL_Surface *naytto, int x, int y);
Ja opettele käyttämään kooditagia, kun laitat tänne koodinpätkiä.
Edit: Myöhästyin :(
Vaikka laitan tuon SDL_Flip(naytto); jutun tonne koodiin ja kääntäjä kääntää sen niin ei kuva näy (käytän kaksoispuskurointia.) Missä vika? Kenties (taas) väärässä paikassa koodia?
Sain sen toimimaan!
Miten saisi tehtyä animaatioita käyttäen SDL:ää?
Suoraa tapaa ei ole ainakaan ilman lisäkirjastoja, piirrä vaikka vuorotellen eri kuvia (vaikkapa saman kuvatiedoston eri kohdista).
Miksei tämä toimi (sen siis pitäisi vaihtaa kuvaa edes takaisin?)
if ( kuvotta==0 && nappi[SDLK_RIGHT] ) { ukkelix += 5; kuva = SDL_LoadBMP("kuva.bmp"); kuvotta==1; } if ( kuvotta==1 && nappi[SDLK_RIGHT] ) { ukkelix += 5; kuva = SDL_LoadBMP("kuva1.bmp"); kuvotta==0; }
Muutamia pikkuvirheitä:
kuvotta == 1; // Tyhjä lause; pitäisi kai olla kuvotta = 1; ? /* Ensimmäisessä ehdossa kuvotta asetetaan 1:ksi, joten myös toinen if suoritetaan. Kuva siis vaihtuu, mutta liian nopeasti että sitä kenties ehtisi havaita. */ if ( kuvotta==1 && nappi[SDLK_RIGHT] ) { if ( kuvotta==0 && nappi[SDLK_RIGHT] ) {
No miten sitten?
esim.
SDL_Surface *kuvat[2]; kuvat[0] = SDL_LoadBMP("kuva1.bmp"); //ladataan kuvat kuvat[1] = SDL_LoadBMP("kuva2.bmp"); int kuva = 0; //asetetaan muuttuja joka sisältää näytettävan kuvan numero //... if(keys[SDLK_RIGHT]) { kuva++; //kasvatetaan lukua if(kuva > 1) kuva = 0; //jos yritetään näyttää kolmatta kuvaa näytetään eka kuva } //sit blittaa sen kuvan minne haluat tyyliin SDL_BlitSurface(kuvat[kuva],&src,screen,&dest);
tähän voi sitten laittaa enemmänkin kuvia muuttamalla hiukan
Valittaa tämmöstä: `kuva' undeclared (first use this function)
Laita muuttujan määrittely "int kuva = 0;" koodin alkuun heti includejen jälkeen ja kokeile.
Jes!!! Toimii!!! Kiitti Meitsi!
kyl tos mun koodis on toi
int kuva = 0;
se on noiden surfacejen alapuolella xD
Mulla toimii vaan toi animaatio jos liikun oikealle vaikka koodi on myös vasemmalle laitettuna. Jos molemmissa niin ei tapahdu mitään tai koko ajan toistuu animaatio(riippuu miten niitten kanssa häslää.)
Tuo näppäin koodi lista tuole SDL:älle ei suostu aukeamaan niin voisitteko kertoa mikä on CTRL:än näppäinkoodi (tarkoitan esim. SDLK_RIGHT on ylös.)
Ja voisinko tehdä jollain ohjelmalla 3d ukkelin ja miten liitän sen ohjelmaan. Esimerkkejä? Mitä ohjelmia vois käyttää?
3D-ohjelmia on monia, esimerkiksi vaikka Anim8or tai Blender. 3D-systeemeihin omissa ohjelmissasi tarvitset DirectX:ää tai OpenGL:ää, mutta kun sinulla kerran on hankaluuksia 2D-ohjelmienkin kanssa, niin kannattaa varmaan ensin väsäillä niitä hetken verran ennen 3D:n yrittämistä. OpenGL:ssä pääsee hyvin alkuun NeHe:n tutoriaaleilla.
Oikea Control = SDLK_RCTRL
Vasen Control = SDLK_LCTRL
Tuli ongelma. Miten tämä tehdään niin että se kääntyy:
if (ukkelix = pahisx + 50) {
?
Oikea vertailuoperaattori on ==
Pelkkä = on sijoitusoperaattori.
Koodi on tämmäinen:
if ( nappi[SDLK_RCTRL] ) { vaikee = 2; PiirraKuva(tausta, naytto, 0, 0); PiirraKuva(kuva[vaikee], naytto, ukkelix,ukkeliy); PiirraPahis(pahis[paha], naytto, pahisx, pahisy); SDL_Flip(naytto); vaikee = 0; if (ukkelix == pahisx + 50 ) { pahisx = 100; }
Mutta ei toimi. MIssä vika? Toimii ilman näitä:
if (ukkelix == pahisx + 50 ) { pahisx = 100;
Sinulta puuttuu lopusta toinen } jonka pitäisi lopettaa ensimmäinen if-lauseke.
Miten saisi vastustajan liikkumaan koko ajan eteenpäin ja vaihtamaan koko ajan kuvasta 1, kuvasta kahteen?
Yritäpä ajatella itse (ei millään pahalla). Se voisi liikkua koko ajan, jos se ei olisi if-lauseen sisällä. Liikesuunta riippuu täysin siitä, minne sitä päätät liikuttaa. Pienenä vihjeenä: kun toistaiseksi käytät vain kahta kuvaa, niin luvun saa vaihtumaan 0:n ja 1:n välillä xor-operaatiolla:
int kuva = 1; // Kuva = 1; kuva = kuva ^ 1; // Kuva = 0; kuva = kuva ^ 1; // Kuva = 1;
Lisäksi suosittelisin, että et laita tuota kuvan piirtäa if-lauseen sisään, vaan teet näin:
if ( nappi[SDLK_RIGHT] ) { // Liikutaan Oikealle } else if ( nappi[SDLK_LEFT] ) { // Liikutaan Vasemmalle } // Jne. // Ja lopuksi piirretään: PiirraKuva(tausta, naytto, 0, 0); PiirraKuva(kuva[vaikee], naytto, ukkelix,ukkeliy); PiirraPahis(pahis[paha], naytto, pahisx, pahisy); SDL_Flip(naytto);
Tekemällä oppii :)
Ja kohta varmaan törmäät siihen, että haluat maailman olevan isompi kuin ikkunasi. Silloin kannattaa suhteuttaa kaikki koordinaatit ukkelin koordinaatteihin, piirtää ukkeli keskelle ruutua ja muut oikeaan kohtaan sen ympärille.
Liikemäärä kannattaa myös suhteuttaa kuluneeseen aikaan (kaikki koneet eivät ole yhtä nopeita). SDL_GetTicks() tjsp.
Miten saan vastustajan vaihtamaann kuvaa vaikka joka kolmas sekuntti?
Laskemalla sekunteja tuolla SDL_GetTicks()-funktiolla (palauttaa alusta kuluneet tuhannesosat) ja aina 3 sekuntin välein vaihtamalla sitä kuvaa. Älä tule kysymään miten, vaan yritä ensin itse miettiä. Vihje: käytä muuttujia, laske viimeisestä vaihdosta kulunutta aikaa ja hyödynnä > ja < -merkkejä.
Äh! Kerro?! Yritin katoa apua mureakuhalta ja itekkin yritin häslätä ja sain siitä jotakin selville mutta en ymmärää miten käyttää sitä.
// Tämä laitetaan jonnekin ennen ohjelman pääsilmukan alkua: VanhaAika = SDL_GetTicks(); // Ja nämä tulevat pääsilmukan sisälle: VanhaAika = UusiAika; UusiAika = SDL_GetTicks(); Aika = UusiAika - VanhaAika; // Ja nyt tiedämme, että aikaa viimekerrastaon kulunut Aika millisekuntia. // Lisätään tämä kulunut aika Tyypin_Kuvan_Ajastus -muuttujaan Tyypin_Kuvan_Ajastus = Tyypin_Kuvan_Ajastus + Aika; // Jos on kulunut yli 3 sekuntia eli 3000 millisekuntia if (Tyypin_Kuvan_Ajastus > 3000) { // Vähennetään ajastimesta tämä kulunut 3000 ms Tyypin_Kuvan_Ajastus = Tyypin_Kuvan_Ajastus - 3000; // Seuraava kuva Tyypin_Kuva = Tyypin_Kuva + 1; // Ja jos kuva on liian pitkällä, palataan animaation alkuun if (Tyypin_Kuva > Viimeinen_Tyypin_Kuva) Tyypin_Kuva = 0; }
Ei se nyt niin vaikeaa voi olla. Kaikki tyyppien liikkeetkin kannattaa suhteuttaa tähän kuluneeseen aikaan (ja muuttaa sijainnit liukuluvuiksi), kuten olen jo aiemmin tainnut selittää.
Tuossa hunajavohvelin ideassahan ohjelman suoritus pysähtyy aina 3 sekunniksi (jos siis tajusin oikein). Hyvä keino on pääsilmukkaa suoritettaessa katsoa onko viime kuvanvaihdosta kulunut se n sekuntia (1s on 1000ms), ja jos on niin vaihdetaan kuva ja laitetaan muuttujaan uusin vaihtoaika.
Tuolla tietyn ajan looppaavalla loopilla on sitten hyvä tehdä "fps-lukko" joka estää fps:n nousun turhan korkealle.
Mutta tosiaan kannattaa itse pähkäillä asiat, sillain ne oikeasti oppii. Jos (perus)asian kuulee jossain foorumilla, ei sitä välttämättä tajua täysin ja sitten tulevaisuudessa tulee ongelmia.
Edit. Metabolix oli nopeampi
Heikki kirjoitti:
Tuossa hunajavohvelin ideassahan ohjelman suoritus pysähtyy aina 3 sekunniksi (jos siis tajusin oikein).
Joo, käsitin tuon väärin, poistin sen viestin.
Eipä toimi. Tyypin_Kuvan_Ajastus muuttuja ei kasva ollenkaan.
Ja olet varmasti laittanut nuo oikeaan paikkaan? Huomauttaisin ensimmäistä riviä koskevasta kommentista... Eli sen rivin saa laittaa heti SDL_Init-funktion perään.
En vaan saa tota toimimaan. Noi on pää-loopissa:
int UusiAika = SDL_GetTicks(); VanhaAika = UusiAika; int Aika = UusiAika - VanhaAika; int kakka = kakka + Aika;
ja SDL_int-funktion jälkeen on int VanhaAika = SDL_GetTicks();
Miten saan esineen lentämään joka koneella samaa vauhtia käyttäen ylempänä olevia muuttujia. Ja mikä komento aja saman asian C++ kuin QBasicin GOTO-käsky?
Kun et osannut laittaa niitä oikeaan järjestykseen, vaan menit muuttelemaan itse. Vaihda kahden ensimmäisen paikkoja. Saman nopeuden eri koneilla saat tietenkin kertolaskun avulla: liikutat sitä matkan X joka millisekunti, joten kerrotaan X millisekuntien määrällä.
GOTO-käskynä toimii goto, mutta sitä ei yleensä ole mitään tarvetta käyttää.
Noni! Toimiihan se! Mutta pitäs saada sillee tehtyä että kun painetaan CTRL niin puukko lähtis liikkeelle (oikealle) käyttäen tota SDL_GetTick();. Ohjelman pitäisi pyöriä kummiskin samaa aikaa kun puukko lentää ja en osaa tehdä näin. Miten voisin siis saada näppäintä painetta essa puukon tietyllä nopeudella lähtemään oikealle käyttäen SDL_GetTicks funktionta?
Ei millään pahalla, mutta
jos haluat ohjelmoida jotakin itse, niin älä kysy kaikkea muilta.Jos et onnistu ilman, että kysyt kaiken muilta jatka sitä joskus toiste.Jos laittaisit sen tarkistamaan onko puukko liikkeellä ja jos on niin laita se piirtämään uusi kuva.Laita se tarkistus sinne moottorin sekaan.
Siis puukon pitäisi lentää ja samalla muunkin ohjelman "toimia" eli pyöriä (esim. hahmon liikkua) vai?
Jos tajusin oikein, niin pistä johonkin muistiin puukon tiedotot (paikka, suunta, tila) ja sitten jokaisella pääsilmukan suorituskerralla muutat puukon sijaintia suunnan mukaan mikäli tila-muuttujassa on, että puukko ollaan heitetty.
SDLK_RCTRL on oikeanpuoleisen CTRL-näppäimen näppänivakio ja vastaavasti vasemmanpuoleisen on SDLK_LCTRL.
Tiettyä nopeutta varten on yksi hyvä tapa tehdä tämäntapainen looppi:
//lukitaan fps 33:een //alkuaika-muuttujassa on aika minkä SDL_GetTicks() antaa pääsilmukan alussa, tämä tulee loppuun: while (SDL_GetTicks() - alkuaika < 33);
Siinä pitäisi olla tarpeeksi vinkkiä, ja kuten aiemmin sanoin, kun asiat pähkäilee itse niin ne myös oppii.
Tuo Heikin tapa on siltä kannalta huono, että tuo hidastaa pelin toimintaa, jos kone ei pysty tuohon vauhtiin, ja tekee koko pelistä nykivämmän koneella, joka pystyisi muuten pitämään korkeampaa fps:ää. Kyllä ehdottomasti paras on suhteuttaa kaikki aikaan tavalla tai toisella. Joko kertolaskua käyttäen tai tekemällä kaksi sisäkkäistä silmukkaa:
while (1) { // Tässä lasketaan kulunut aika while (Aika--) { // Täällä tehdään asiat, ei tarvitse huomioida aikaa mitenkään } // Ja tänne kuvan piirto }
if (puukko == 1){ ammx = ukkelix; while (ihme <= 50) { puukko = 0; ammx = ammx + 40; PiirraKuva(tausta, naytto, 0, 0); PiirraKuva(kuva[vaikee], naytto, ukkelix,ukkeliy); PiirraPahis(pahis[paha], naytto, pahisx, pahisy); PiirraAse(ase[asek], naytto, 10, 730 ); PiirraAmmu(ammu[ammuk], naytto, ammx, ammy); SDL_Flip(naytto); if (pahisx <= ammx){ pelama--; if (pelama == 0){ paha = 3; break; } PiirraKuva(tausta, naytto, 0, 0); PiirraKuva(kuva[vaikee], naytto, ukkelix,ukkeliy); PiirraPahis(pahis[paha], naytto, pahisx, pahisy); PiirraAse(ase[asek], naytto, 10, 730 ); SDL_Flip(naytto); ammx = ukkelix; break; } }
kun pelama = 0 niin koko ohjelma loppuu vaikkei pitäisi! Missävika?
vähän vaikea sanoa tuollaisesta koodista
Mistäköhän tuo nyt oikein yrittää breakata ulos tuossa?
Jos se tuosta whilestä poistuu eikä siellä ole enää mitään edessäpäin niin tokihan se sitten loppuu.
Tuo on koodi on pää loopin sisällä.
Mitä järkeä on tehdä while-silmukka, jonka lopussa on break? Muuta se if-lauseeksi ja laita tuon jälkimmäisen if-lauseen jälkeen else ja loput lauseet, niin säästyt koko break-väsäilyiltä.
hunajavohveli: kyllähän sen periaatteessa pitäisi toimia ihan oikein, kun kerran on whilen sisällä. Uloin silmukka aina rikotaan.
Onko SDL:ässä jotain cout-funktiota vastaavaa toimintoa?
PFe2005 kirjoitti:
Onko SDL:ässä jotain cout-funktiota vastaavaa toimintoa?
Ei, mutta konsoliin (stdouttiin) voit tulostaa ihan coutilla. Jos haluat ikkunaan tekstiä, sinun on joko käytettävä jotain fonttikirjastoa tai tehtävä sellainen itse.
cout
ei ole funktio, vaan olio.
Hups. Ajatuksissani kirjoittelin
Luin ton SDL:än oppaan tuosta SDL_mixeristä mutta en saa sitä toimimaan. Voisitteko antaa jonkun esimerkki koodin miten sitä käytetään? Mulla tulee täläisiä virheitä: "expected identifier before '-' token" , " expected `,' or `...' before '-' token", "ISO C++ forbids declaration of `parameter' with no type".
PFe2005 kirjoitti:
Luin ton SDL:än oppaan tuosta SDL_mixeristä mutta en saa sitä toimimaan. Voisitteko antaa jonkun esimerkki koodin miten sitä käytetään? Mulla tulee täläisiä virheitä: "expected identifier before '-' token" , " expected `,' or `...' before '-' token", "ISO C++ forbids declaration of `parameter' with no type".
Pistä virheilmoituksesta muutama ensimmäinen rivi ja sitten koodinpätkä niiltä riveiltä mistä tulee virheitä.
Tossa on koko virhe ilmoitus:"expected identifier before '-' token, expected `,' or `...' before '-' token, ISO C++ forbids declaration of `parameter' with no type, [Warning] unknown escape sequence '\H'. Ja tossa on rivit jossa on ongelmia:
int Mix_PlayChannel(int kanava, Mix_Chunk *aani, int toistokerrat); int main(int argc, char *argv[]) { if( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError()); return 1; } if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024)==-1) { fprintf(stderr, "SDL_Mixerin alustus ei onnistunut."); } Mix_Chunk *aani; aani=Mix_LoadWAV_RW(SDL_RWFromFile("Soundit\Horror.wav", "rb"), 0); if(Mix_PlayChannel(0, aani, 1)==-1){ fprintf(stderr, "Virhe : %s \n", Mix_GetError()); }
Rivi
aani=Mix_LoadWAV_RW(SDL_RWFromFile("Soundit\Horror.wav", "rb"), 0);
pitää muuttaa muotoon
aani=Mix_LoadWAV_RW(SDL_RWFromFile("Soundit\\Horror.wav", "rb"), 0);
merkkijonoissa '\\' vastaa '\':ta. Muuten se tulkitaan '\H':na, joka ei ole mikään "käsky" toisin kuin '\n'(rivin vaihto).
Ja eikös kääntäjäsi näytä rivinumeroita?
Ei toimi. Tossa se vika on :
int Mix_PlayChannel(int kanava, Mix_Chunk *aani, int toistokerrat);
Virheitä ovat sueraavat: expected identifier before '-' token expected `,' or `...' before '-' token ja ISO C++ forbids declaration of `parameter' with no type.
Veikkaisin, että sulla on koodia ennen ton funktion määrittelyä ja se vika löytyy sieltä?
PFe2005 kirjoitti:
Ei toimi. Tossa se vika on :
int Mix_PlayChannel(int kanava, Mix_Chunk *aani, int toistokerrat);Virheitä ovat sueraavat: expected identifier before '-' token expected `,' or `...' before '-' token ja ISO C++ forbids declaration of `parameter' with no type.
Eli veikkaisin että tuo ei ole se virherivi, koska virherivillä pitäisi olla "-".
Luultavasti sinulta puuttuu include jossa on esitelty "Mix_Chunk" ja siten kääntäjä ei löydä sitä. Ihan villinä veikkauksena tämän kohdan perusteella: "ISO C++ forbids declaration of `parameter' with no type.".
Mulla on alussa: #include <SDL/SDL.h> ja #include <SDL/SDL_Mixer.h> Voisitteko antaa jonkun lyhyen esimerkki koodin joka käyttää SDL Mixeriä koska siinä samassa kohdassa tulee aina virhe vaikka sen änkee minne vaan?
Kokeileppa tätä koodivinkkiä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.