Koska olen vielä kovin ummikko ohjelmoinnnissa niin kysyisin tällaista asiaa: miten dll-tiedostot toimivat? Olen varma että joistain tämä kuulostaa typerältä mutta ihan (aikuisten:) oikeasti miten ne toimivat?
edit: lisäänpä toisen kysymyksen: kun tuossa vähän aikaa sitten mietin miten tehdä kenttä peliin niin siihen liittyen. Sanotaan että kenttä koostuu 30x30 taulukosta jossa jokainen muuttuja on kuva joka on 20px leveä ja korkea. Niin voisiko sen tehdä niin että taulukossa on olioita eikä tarvitsisi tehdä useita taulukoita. Eli kenttä koostuu olioista joille annetaan eri ominaisuuksia (esim. hahmon hidastus,kuva,etc). Vai pitääkö se tehdä käyttämällä useita taulukoita joissa ruutujen tietty ominaisuus on tietyssä taulukossa? Tämä kyllä kuulostaa kovin kaukaa haetulta mutta tämä kysymys on tuskastuttanut minua jo kauan. Toivottavasti ymmärsitte mitä tarkoitin.
Tuohon kenttäaiheiseen kysymykseen. Teet vain "yleispätevän" luokan/tietueen, jossa ovat nuo haluamasi ominaisuudet. Ja sitten teet taulukollisen näitä.
Esimerkiksi minulla on Tile struct, joka sisältää todella paljon asioita liittyen yhteen ruutuun. Pelikartta, joka on 75x23 tilen/ruudun kokoinen koostuu noista Tileistä. Ja se alustettaisiin tyyliin:
Tile LevelMap[sizex][sizey];
Tai näin minä sen tekisin, jos ymmärsin oikein sen, mitä tarkoitat.
Joo ymmärsit oikein :D Harva enää ymmärtää minua, tervetuloa valittujen joukkoon (75% edeltävästä on totta)
Tuohon Dll-aiheiseen kysymykseen:
Dll eli Dynamic Link Library on varsinaisesta suorittavasta ohjelmasta erilleen kirjoitettu
kokoelma funktioita ja metodeita. Useimmiten ne liittyvät samaan aiheeseen ja suorittavat tietyn aihepiirin osia.
Dll:n ideana on tuoda funktiot pois suorittavasta ohjelmasta, jotta niitä voitaisiin yleispätevästi käyttää myös muissa ohjelmissa, jotka tarvitsevat dll:n suorittamia toimintoja.
Dll:n funktiot toimivat lähes tarkalleen samaan tapaan kuin josolisit koodannut ne itse suorittavaan ohjelmaan.
Dll tiedoston saat käyttöösi luomalla ohjelmaan viittauksen eli referenssin dll:ään - tapa jolla referenssi luodaan riippuu ohjelmointi kielestä.
Kun referenssi on luotu ja objekti esitelty (myös kieliriippuvainen toiminto) voit kutsua haluamaasi funktiota kielessä.
Jaa huomasin että täähän on ihan väärässä kategoriassa tämänhän pitäisi olla yleisessä :D Niin ja kiitos Antille tuo selvensi asiaa paljon :D
Öh mitenkäs nuita luokkia voi määritellä? En löytänyt ohjetta vaikka etsinkin netistä (aika hätäisesti tosin)?
Oletetaan, että olet C++:lla liikenteessä.
http://www.nic.funet.fi/c opas/oliot.html
Jos et, niin etsi tietueista, eli structeista, tietoa. Tietty structeja voi heittää C++:n sekaan myöskin, niinkuin itse teen.
// Ymmärrät tästä varmaankin sen "idean" ;< struct Pelaaja { int x,y; string name; }; Pelaaja PlayerOne; PlayerOne.x = 50; PlayerOne.y = 25; PlayerOne.name = "Aruviel"; cout << PlayerOne.name << endl;
cout:lle pitänee kuitenkin antaa PlayerOne.name.c_str() koska se ei taida string-olioita suoraan syödä.
Hmm, kyllä se minulla niitä suostuu syömään. En sitten tiedä, onko jotenkin väärin tehdä noin?
Jaa kiitos taas :D Nyt voin jatkaa pelin tekoa XD
Aruviel kirjoitti:
Hmm, kyllä se minulla niitä suostuu syömään. En sitten tiedä, onko jotenkin väärin tehdä noin?
Kyllähän se toimii, ja tuskin se mitenkään väärin on, kun kerran siihen on tuollainen mahdollisuus koodattu... :)
Avattavan tiedoston nimeä (i/o)fstraeam ei jostain syystä sen sijaa suostu ottamaan vastaan stringinä, vaan siinä pitää käyttää tuota c_str()-funktiota.
Niin, siis c_str()-funktiota käytetään silloin kun halutaan string-merkkijono kopioida char*-taulukkoon. Koska cout on kuormitettu tulostamaan stringejä, on muunnos tarpeeton.
Tuohan riippuu täysin iostreamin versiosta. Ainakaan minulla tuo ei toimi.
Niinpä toimii, pirulainen, ainakin MSVC++ 6:ssa, Intel C++ Compiler 8.0:ssa ja GCC:ssä. Heitin kommenttini tuon "String-luokat Vc++ 5.0:ssa"-keskustelun perusteella, itse string-luokan käytöstä minulla ei ole juurikaan omakohtaista kokemusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.