C++ -kysymykset

Muu yhteisön välinen keskustelu.
zHelmet
Member
Posts: 73
Joined: Mon Nov 10, 2008 3:55 pm

Re: C++ -kysymykset

Post by zHelmet »

Sami The Great wrote:
zHelmet wrote:Olisiko jollain jotain linkkiä johonkin yksinkertaiseen oppaaseen (suomeksi) jossa opetetaan yhdistämään luokan sisään structuri??
Se ei ole vaikeaa jos tätä mietit:

Code: Select all

...koodia...
Mutta kuinkas noihin määritellään tieto :D?
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

zHelmet wrote:Mutta kuinkas noihin määritellään tieto :D?
Samin koodia mukailen:

Code: Select all

struct PelaajanKoordinaatit
{
    float x;
    float y;
    float z;
};

class Pelaaja
{
    PelaajanKoordinaatit koordinaatit;

    public:

        Pelaaja (float x = 0, float y = 0, float z = 0)
        {
            koordinaatit.x = x,
            koordinaatit.y = y,
            koordinaatit.z = z;
        }
};
Ihmekala
Newcomer
Posts: 4
Joined: Wed May 06, 2009 11:43 pm

Re: C++ -kysymykset

Post by Ihmekala »

zHelmet wrote:Olisiko jollain jotain linkkiä johonkin yksinkertaiseen oppaaseen (suomeksi) jossa opetetaan yhdistämään luokan sisään structuri??
Tuli tästä mieleen, että eikös struct ja class ole täysin sama asia, paitsi että classissa oletuksena tiedoille on private-taso, ja structissa public?

Eli pitääkö tämä paikkansa; nämä kaksi luokkamäärittelyä ovat
täysin toisiaan vastaavia käytännössä:

Code: Select all

struct luokka1
{
 private int a;
 int get_a () {return a;}
};

Code: Select all

class luokka1
{
 int a;
 public int get_a () {return a;}
};
Kun jossain oppaassa väitettiin näin, tai sitten käsitin väärin.
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great »

Ihmekala wrote:
zHelmet wrote:Olisiko jollain jotain linkkiä johonkin yksinkertaiseen oppaaseen (suomeksi) jossa opetetaan yhdistämään luokan sisään structuri??
Tuli tästä mieleen, että eikös struct ja class ole täysin sama asia, paitsi että classissa oletuksena tiedoille on private-taso, ja structissa public?

Eli pitääkö tämä paikkansa; nämä kaksi luokkamäärittelyä ovat
täysin toisiaan vastaavia käytännössä:

Code: Select all

struct luokka1
{
 private int a;
 int get_a () {return a;}
};

Code: Select all

class luokka1
{
 int a;
 public int get_a () {return a;}
};
Kun jossain oppaassa väitettiin näin, tai sitten käsitin väärin.
Kyllähän asia noin on, mutta yleensä structia käytetään vain tieto varastona ja omien tietotyyppien tekemiseen. Classia taas käytetään sitten niiden eri olioiden luonti hommissa, metodit jne..
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Ihmekala
Newcomer
Posts: 4
Joined: Wed May 06, 2009 11:43 pm

Re: C++ -kysymykset

Post by Ihmekala »

Humm... miksiköhän niitä sitten käytetään sillätavalla? Ja minusta tuo on aika turha juttu että kaksi melkein samaa juttua eri nimillä. Ja structiin varmaan tosiaan toimii perinnät ja kaikki ihan vastaavasti...
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great »

Bajaxooo wrote:Olen tässä alkanut itekin täöhän C++ tutustumaan, ja sellainen idioottimaisen tyhmä kysymys, että mihin tuo allegro asennetaan? :oops: Olisko sit mitään hyvii oppaita ku se funet opas mulla o tulostettuna mut semmonen oisko mis ois nykyaikaset esimerkit.
Itse en ole ikinä kuullutkaan tuosta kirjastosta, mutta kun nyt katsoin sitä, niin se näyttää hyvin edistyneeltä. No kun en ole sitä itse käyttänyt, niin en voi tarkaan tietää, mutta joka tapauksessa sinun pitää includettaa pää-header tiedosto. Itse asennan kaikki kirjastot itselleni niin, että kopioin kaikki .h tiedostot kääntäjän include kansioon. Sitten kopioin kaikki kirjasto tiedostot kääntäjän lib kansioon (Olettaen, että käytät VC9.0:aa, niin kirjasto tiedostoina toimivat .lib tiedostot. Jos et käytä, niin ota selvää, että mitä kirjasto tiedostoja kääntäjäsi käyttää). Jos allegron mukana ei tule tarvittavia .lib tiedostoja sinun pitää kääntää ne lähdekoodista. Riippuen allegrosta, se voi olla joko staattisesti linkitettävä tai sitten dynaamisesti linkitettävä, jolloin tarvitset myös .dll tiedoston, jonka itse yleensä kopioin suoraan WINDOWS/system32 kansioon, ettei sitä aina tarvitsisi etsiä kun se puuttuu. Muista kuitenkin, että lopulliseen julkaisu pakettiin pitää pistää ne .dll tiedostot mukaan.

EDIT: Ja kerroppas vielä mitä kääntäjää ja editoria käytät, niin voin vielä neuvoa niiden kirjastojen linkittämisen.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great »

Bajaxooo wrote:Itselläni on Dev ja Code::Blocks, Kumpaakin osaan jotenkuten käyttää. Mitä kirjastoa itse käytätte pelientekoon? Voin ottaa sen jonka käyttöä joku voisi opettaa.
Itse käytän MS VisualStudio 9.0:a , ja se on mielestäni hyvä, koska siihen löytyy melkein jokaisesta kirjastosta omat projekti tiedostot, ettei tarvitse alkaa itse sitä kokoilemaan niistä erillisistä lähde tiedostoista. Ja muutenkin se on vakaa, ettei se kaatuile kuten Dev-Cpp.

Kopion tähän pätkän internet sivuiltani, joka oli koulu projektini. Osiossa esitellään eri työkaluja pelintekoon.

Code: Select all

Työkalut

CoolBasic

CoolBasic on suomalaisen kehittämä BASIC pohjainen ohjelmointi kieli, joka on hyvä kieli aloittaa, koska se on helppo ja sillä saa aikaan helposti pieniä pelejä ja ohjelmia. Pääasiassa CoolBasic on kehitetty pelien tekemiseen, mutta kyllä sillä pienet ohjelmatkin luonnistuu. Se sisältääkin useita pelin tekoa helpottavia ominaisuuksia, kuten valmiin törmäystunnistuksen, tile-kartta systeemin ja oman objekti moottorin, joka hoitaa kätevästi eri toimintoja, esimerkiksi kuvan animoinnin.

OGRE 3D

OGRE 3D on C++:alle tehty grafiikka kirjasto, joka renderöi 3-ulotteista grafiikkaa reaaliajassa. Se soveltuu erinomaisesti erilaisiin peleihin grafiikka kirjastoksi. OGRE käyttää renderöintiin DirectX 9.0:a tai vaihtoehtoisesti OpenGL 2.0:a. Joten se toimii kaikissa käyttöjärjästelmissä, joissa on OpenGL tai DirectX tuki. OGRE tukee myös korkeatasoisia shader-ohjelmia kuten Cg, HLSL ja GLSL, ja sisältää joitakin valmiita shader-ohjelmia kuten varjot. Koska OGRE on open-source tyyppinen kirjasto, on se ilmainen kaikkeen käyttöön. OGRE:n kotisivuilta löydät lisää tietoa.

Irrlicht

Irrlicht on toinen hyvä vaihtoehtoinen grafiikka kirjasto, joka ei ole yhtä kattava kuin OGRE, mutta mielestäni Irrlicht on hiukan yksinkertaisempi oppia kuin OGRE.

SDL - Simple DirectMedia Layer

SDL on grafiikka kirjasto C++:alle, joka keskittyy 2D grafiikan toteuttamiseen. SDL on hyvä kirjasto aloittaa, koska se on hyvin yksinkertainen ja helppo. 3D grafiikkakin onnistuu OpenGL:ää käyttäen, mutta jos aikoo tehdä 3D sovelluksia, niin en suosittele SDL:ää vaan kannattaa tutustua OGREen tai Irrlichtiin.

PhysX

PhysX on nVidian suunnittelema fysiikka moottori, joka hoitaa pelisi fysiikka laskelmat ja törmäystunnistuksen realistisesti. PhysX:ää käytetään useissa uusissa kaupallisissa peleissä, koska se tukee fysiikka laskelmissa näytönohjaimen käyttöä, joka nopeuttaa fysiikan laskemista jopa kymmenkertaiseksi.

RakNet

RakNet on nopea ja helppokäyttöinen verkkokirjasto C++:alle. RakNetin avulla saat helposti tehtyä sovelluksia, joiden tarvitsee olla yhteydessä toisiinsa internetin välityksellä. RakNet on pääasiallisesti suunniteltu verkkopelien tekoon, mutta sillä onnistuu myös tiedostojen siirtäminen verkon yli.

IrrKlang

IrrKlang on äänikirjasto C++:alle, jolla onnistuu äänien sekä musiikin toistaminen. IrrKlang tukee myös 3D ääniä, jotka saavat äänet kuullostamaan realistisimmilta.

Blender3D

Blender3D on 3-ulotteisten mallien tekemiseen tarkoitettu työkalu, jolla saa tehtyä hienoja taustakuvia, 3D mallinnuksia tai grafikkaa 3D peleihin. 
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
KilledWhale
Tech Developer
Tech Developer
Posts: 545
Joined: Sun Aug 26, 2007 2:43 pm
Location: Liminka

Re: C++ -kysymykset

Post by KilledWhale »

Itse voisin suositella Boost -nimistä kirjastoa kaikille. Se sisältää useita käteviä ominaisuuksia kuten netityksen, säikeistyksen ja monta muuta kätevyyttä. Lisäksi boost toimii useammilla käyttöjärjestelmillä, kuten windows, linux ja mac.
CoolBasic henkilökuntaa
Kehittäjä

cbFUN Kello
cbSDL
Whale.dy.fi

<@cce> miltäs tuntuu olla suomen paras
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

@Bajaxooo: Ohjelmointiputkassa ja Mureakuhassa on suomenkielistä keskustelua C/C++:sta. Erillistä foorumia tuskin tarvitaan.

@KilledWhale: Kuulostaa erittäin lupaavalta kirjastolta. Osaatko sanoa korvaavatko sen ominaisuudet miten SDL_Netin tai SDL_Threadin? Noita olen tottunut käyttämään, mutta jos tuo Boost on jollain tapaa tehokkaampi niin saatan harkita vaihtoa.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim »

Boostin tehokkuudesta, se tullaan lisäämään seuraavaan C++ standardin kirjastoihin mukaan. ;) Itellä on Boost asennettuna. Mutta mulla ei ole ollut käyttöä sille. Kirjastot olen laittanut nätisti omiin kansioihinsa, ja oikeat polut kääntäjälle. GCC jyrää. (PS: Sami The Great: SDL on C kirjasto, EI C++) Minä olen viritellyt Code::Blocksin niin että koko IDE kulkee 2GT tikulla mukana joka paikkaan. joskus tarvii vaan laittaa kääntäjän polku uudestaan. (mikä on naurettavan helppoa) Vaan oli niiden asetusten kanssa tappeleminen. :?
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great »

Bajaxooo wrote:Kävin kirjastossa, ja tutha reissu oli; kaikki C++ oppaat olivat vanhaa koodia sisältäviä. Uusin käsitteli vain algoritmeja, mutta kun olisi edes perusteet nykyiselle koodille, niin olisi kiva.
Kannattaa ensin tutustua perusteisiin ennen kuin alkaa mitään grafiikak kirjastoa harjoittelemaan. Tästä oppaasta itse harjoittelin preusteet: http://www.nic.funet.fi/c++opas/ (Tämäkin opas on linkitetty tänne varmaan useampaan kertaan.)
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
User avatar
Sami The Great
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 4:15 pm
Contact:

Re: C++ -kysymykset

Post by Sami The Great »

Bajaxooo wrote:Sanoin jo aiemmin, et tos oppaassa on vanhaa koodia, ja haluaisin nykyisin käytössä olevaa, että voin soveltaa oppaan esimerkkejä itekin. Jos opettelen vanhan version, niin hukkaanhan se menee.
Mitäs nyt höpiset? Tuo opas on ihan pätevää C++:aa. Ei ole mitään vanhaa versiota, ellet tarkoita C:tä. Ei ne perusteet ole mihinkään muuttuneet sitten vuoden 2002, jolloin tuota opasta on viimeksi päivitetty. "Nykyaikainen" koodi voi olla siinä mielessä erilaista kuin vanha, että siinä käytetään jotain uusia tapoja toteuttaa asioita. Mutta tässä vaiheessa ei kannata alkaa niistä huolehtimaan. Ja miten et voi soveltaa esimerkkejä?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post by Dande »

Bajaxo tarkoittaa, että tuo ei ole uusimman standardin mukaista, eikä siinä käytetä nimiavaruuksia.

Mutta perusteet eivät tosiaankaan ole mihinkään muuttuneet. Tuota opasta voi soveltaa aivan hyvin. Pitää vain muistaa pari seikkaa:
1. Jätä standardikirjastojen includeista .h-pääte pois.
2. C:n standardikirjastojen includeista jätä myös .h-pääte pois ja lisää eteen c. esim stdio.h -> cstdio
3. Lisää includeiden jälkeen "using namespace std;". Tai liitä kaikkien standardikirjaston funktioiden kutsujen eteen "std::"

Mutta nopealla googletuksella löysin ainakin tälläisen oppaan, joka on uudemman standardin mukaista:
http://fi.wikibooks.org/wiki/C%2B%2B/Moderni_C%2B%2B (Satuin löytämään kun satuin etsimään jotain hyvää selitystä nimiavaruuksista (google: c++ nimiavaruudet), jonka voisin linkata tuohon kohtaan kolme)
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: C++ -kysymykset

Post by otto90x »

Tässä vielä yksi varsin kattava opas, mikäli englannin kieli ei pelota tiehensä.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: C++ -kysymykset

Post by Sami345 »

Bajaxooo: Itse suosittelen ostamaan tämän kirjan. Se on melko kattava opas C++-ohjelmointiin. Itse ostin muutama vuosi sitten Nummelan kirjakaupasta. Siitä olen ihan hyvin oppinut perusteet ja sitten grafiikkapuoli internetistä.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

Itse olen tuon aikoinaan lainannut kirjastosta, mutta kyllä mielestäni se paras opas on Ivor Hortonin Inside C++ ohjelmoijan käsikirja. Oikeastaan opin kielen vasta, kun rupesin koodaamaan sillä. Pelkkä kirjan lukeminen tekee lukijastaan muodollisesti pätevän.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

Ei kellään sattuisi olemaan käsillä linkkiä tutoriaaliin (tai miksei vaikka suoraan funktioon) jolla saisi ladattua OpenGL:n käyttöön 3d-malleja. Itselläni olisi tuossa kyllä .obj-spesifikaatio, mutta se on vähän hankala toteuttaa... Jos kukaan ei tällaista opasta minulle löydä, taidan sitten kirjoittaa oman simppelin 3D-formaatin :P
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons »

Löysin tällaisen, mutta en oo varma toimiiko...
Attachments
Loader.zip
Loader, sisältää joidenkin 3D-formaattien lataus funktiot, esim. WaveFront(.obj)
(10.33 KiB) Downloaded 218 times
Image
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

phons wrote:Löysin tällaisen, mutta en oo varma toimiiko...
Alkuperäinen sivu? Linkkiä, kiitos!
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons »

Image
Post Reply