C++ -kysymykset

Muu yhteisön välinen keskustelu.
User avatar
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: C++ -kysymykset

Post by Eräs cb koodaaja » Mon Nov 26, 2007 5:16 pm

Onko jostain saatavana valmista Hash funktiota C++:lle ? (Googlettamalla en löytänyt)
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit

User avatar
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda » Mon Nov 26, 2007 5:24 pm

Standardikirjastoista ei löydy valmiina(?), mutta netti on toteutuksia pullollaan.

Nämä taisi olla ekat hakutulokset googlesta (koetapa hakea "md5 c++", "crc c++", "sha c++").

MD5: http://www.langfine.com/rsa_md5.htm
CRC: http://www.programmersheaven.com/zone3/cat846/index.htm
SHA: http://www.codeproject.com/cpp/csha1.asp

Codeproject.comista löytyy muutenkin hyvin. Tässä yksi: http://www.codeproject.com/cpp/chash.asp
OoO

User avatar
Eräs cb koodaaja
Active Member
Posts: 126
Joined: Wed Aug 29, 2007 3:55 pm

Re: C++ -kysymykset

Post by Eräs cb koodaaja » Tue Nov 27, 2007 5:11 pm

Kiitos. Hain vähän erilaisilla hakusanoilla Googlesta.
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit

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 » Thu Nov 29, 2007 2:26 pm

Olen miettiny tätä jo pidemmän aikaa. Tämä koodi ei enna mitään virhe ilmoitusta mutta kun yritän piirtää tekstiä ruudulle ohjelma sammuu.

Code: Select all

#include "EasyFunctionLibrary.h"


int main(int argc, char *argv[])
{
    #include "EFLObjects.h"
    /////////////////////////////////////////////////
    //  Write your code between of thease marks.   //
    ////////////////////////////////////////////////
    PROGRAM.Boot();
    SCREEN.Set(1024,768,16,0);
    
    Image testikuva;
    TEXT.LoadFont("comic",20);
    
    testikuva.LoadImage("PGD.png");
    
    while(1){
        EVENT.Update();
        if(EVENT.KeyDown(key_d)) testikuva.DrawImage(0,0,SCREEN.screen);
        if(EVENT.KeyHit(key_e)) break;
        if(EVENT.KeyHit(key_m)) testikuva.SetMaskColor(255,0,255);
        if(EVENT.KeyHit(key_t)) TEXT.PrintSolid("1",30,30,SCREEN.screen);     // TÄSSÄ OHJELMA SAMMUU...
        SCREEN.Draw(1);
    };
    
    testikuva.DeleteImage();

    SCREEN.ShutDown();
    PROGRAM.ShutDown();
    /////////////////////////////////////////////////
    //  Write your code between of thease marks.   //
    ////////////////////////////////////////////////
    return EXIT_SUCCESS;   
}
Ja tässä vielä funktio jolla tekstiä piirretään.

Code: Select all

void Text::PrintSolid(const char* teksti, int x, int y, SDL_Surface *dstscreen)
{
    t_face = TTF_RenderText_Solid(font, teksti, f_color);
    SDL_Rect alue;
    alue.x = x;
    alue.y = y;
    SDL_BlitSurface(t_face, NULL, dstscreen, &alue);
}
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

User avatar
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda » Thu Nov 29, 2007 3:48 pm

Sami The Great wrote:Olen miettiny tätä jo pidemmän aikaa. Tämä koodi ei enna mitään virhe ilmoitusta mutta kun yritän piirtää tekstiä ruudulle ohjelma sammuu.
Koetapa debugata ja katso mikä on viimeinen rivi joka suoritetaan PrintSolidissa. Katso mitä arvoja muuttujilla t_face, font, teksti, f_color, dstscreen, ja alue on niiden käyttöhetkellä ja katso SDL:n dokumentaatiosta minkälaisia ovat validit arvot TTF_RenderText_Solid:lle ja SDL_BlitSurface:lle.

Luultavasti t_face on NULL tai jotain. Missä tuo muuten esitellään? En ole koodannut metriäkään SDL-kirjastoa käyttäen, mutta mitä tuolle t_face:n edelliselle sisällölle tapahtuu?
OoO

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 » Thu Nov 29, 2007 4:47 pm

Noniin sain toimimaan. Ongelma oli tekstin lataamisessa.
anttipanda wrote:
Sami The Great wrote:Olen miettiny tätä jo pidemmän aikaa. Tämä koodi ei enna mitään virhe ilmoitusta mutta kun yritän piirtää tekstiä ruudulle ohjelma sammuu.
Koetapa debugata ja katso mikä on viimeinen rivi joka suoritetaan PrintSolidissa. Katso mitä arvoja muuttujilla t_face, font, teksti, f_color, dstscreen, ja alue on niiden käyttöhetkellä ja katso SDL:n dokumentaatiosta minkälaisia ovat validit arvot TTF_RenderText_Solid:lle ja SDL_BlitSurface:lle.

Luultavasti t_face on NULL tai jotain. Missä tuo muuten esitellään? En ole koodannut metriäkään SDL-kirjastoa käyttäen, mutta mitä tuolle t_face:n edelliselle sisällölle tapahtuu?
t_face esitellään Text luokassa jota en tuohon äskeiseen viestiin liittänyt. t_facen edellinen sisältö jää uuden alle tämä on ns. "väli suraface" johon teksti aluksi renderöidään ja sitten se teksti surface piirretään näyttöön. Nyt kun sai tuon toimimaan tuli taas ongelma, nimittäin syötteiden kanssa... Tuli ongelmasksi että nykyinen systeemi lukee kunnolla vain kahta näppäintä yhtäaikaa. Eli jos ohjelmassa on 3 tekstiä 2 niistä vain näkyy samaan aikaan vaikka painan kaikkien "näyttämis" nappia.
Tässä on näppäinten tarkistus systeemi:

Code: Select all

class Event
{
public:
    void Update();
    bool KeyDown(Uint16 EFL_key);
    bool KeyHit(Uint16 EFL_key);
private:
    SDL_Event event;
    Uint8 *button;
    Uint8 *hitbutton;
    bool hit_taulukko[350];
    
};

bool Event::KeyDown(Uint16 EFL_key)
{
    if(button[EFL_key]) return true;
    else return false;
    SDL_PushEvent(&event);
}

bool Event::KeyHit(Uint16 EFL_key)
{
    if(hitbutton[EFL_key] == 0) hit_taulukko[EFL_key] = 0;
    if(hit_taulukko[EFL_key] == 0){
    if(hitbutton[EFL_key]){ 
        hit_taulukko[EFL_key] = 1;
        return true; 
    }
    else return false;
    }
}

void Event::Update()
{
    SDL_PollEvent(&event);
    button = SDL_GetKeyState(NULL);
    hitbutton = SDL_GetKeyState(NULL);
}
Ja itse pää ohjelma:

Code: Select all

#include "EasyFunctionLibrary.h"


int main(int argc, char *argv[])
{
    /////////////////////////////////////////////////
    //  Write your code between of thease marks.   //
    ////////////////////////////////////////////////
    PROGRAM.Boot();
    SCREEN.Set(1024,768,16,0);
    Event EVENT;
    
    Image testikuva;
    TEXT.LoadFont("comic.ttf",20);
    TEXT.SetFontColor(255,255,255);
    TEXT.SetBackgroundColor(0,0,0);
    
    while(1){
        EVENT.Update();
        if(EVENT.KeyHit(key_e)) break;
        if(EVENT.KeyDown(key_t)) TEXT.PrintSolid("Moi olen juu",30,30,SCREEN.screen);
        TEXT.SetFontColor(255,0,255);
        if(EVENT.KeyDown(key_y)) TEXT.PrintShaded("Moi Olenkin pöö 2",30,60,SCREEN.screen);
        TEXT.SetFontColor(50,200,200);
        if(EVENT.KeyDown(key_u)) TEXT.PrintBlended("Moi tämä on 3 mas teksti joka on blendaddu",30,90,SCREEN.screen);
        SCREEN.Draw(1);
    };

    SCREEN.ShutDown();
    PROGRAM.ShutDown();
    /////////////////////////////////////////////////
    //  Write your code between of thease marks.   //
    ////////////////////////////////////////////////
    return EXIT_SUCCESS;   
}
Voisiko ongelma olla että näppäimistö puskuriin ei mahdu enempää toimintoja jonoon? Mistä sitä voisi kokeilla kasvattaa?

EDIT: Onko mitään tapaa kääntää koodia toiselle käyttikselle (MAC os) windowssilla? Eli siis saako winukkaan mitään kääntäjää toimimaan minkä käännös toimis sit toisessa käyttiksessä?
Last edited by Sami The Great on Thu Nov 29, 2007 7:32 pm, edited 1 time in total.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

User avatar
vilQuri
Active Member
Posts: 239
Joined: Wed Aug 29, 2007 6:25 pm
Location: Turku

Re: C++ -kysymykset

Post by vilQuri » Thu Nov 29, 2007 7:31 pm

Onko Visual c++ hyvä ohjelma c++ ohjelmoinnin aloittamiseen? Ja onko se muuten hyvä ohjelma. Kysyin vain koska pitäähän tuotakin kieltä hiukan koittaa :mrgreen:

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 » Thu Nov 29, 2007 7:33 pm

Itse käytän DEV-Cpp:tä ja se on mielestäni ihan hyvä, ainakin aloittamiseen ja eikös tuo Visual C++ maksa jotain?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja » Thu Nov 29, 2007 8:42 pm

Sami The Great wrote:Itse käytän DEV-Cpp:tä ja se on mielestäni ihan hyvä, ainakin aloittamiseen ja eikös tuo Visual C++ maksa jotain?
Toki maksaa, mutta ilmaisversio ( onkohan uusin edelleen 2005 express edition, ken tietää.. ) on myös olemassa. Itsekin olen Dev-Cpp:hen tykästynyt, simppeli ja toimiva. Koodin kirjoittaminen tekstitiedostoon NotePadilla tuntuu itselleni luontaisimmalta, mutta menee vaikeaksi kun pitää kopsia koodia eestaas. ( riennänpäs tästä vääntämään batchi-tiedostoa heplompaa komentorivikääntämistä varten ) Oman editorin tekemistäkin voi kokeilla, ( siis nimenomaan kokeilla, ei omaa räpellystä käyttäisi edes asennesyistä.. ellei nyt tee asiasta elämää suurempaa systeemiä ) voisi olla ihan jännä projekti. ( kyllä, minulle on monasti huomautettu liian pitkistä suluissa olevista virkkeistä, mutta tätä sivuasiaa vaan syntyy niin paljon >.< )

Guest

Re: C++ -kysymykset

Post by Guest » Thu Nov 29, 2007 11:35 pm

Sami The Great wrote:EDIT: Onko mitään tapaa kääntää koodia toiselle käyttikselle (MAC os) windowssilla? Eli siis saako winukkaan mitään kääntäjää toimimaan minkä käännös toimis sit toisessa käyttiksessä?
Itse käännän projektini linuxiin Virtuaali PC:n kautta. Mac OS:n intel versiota olen myös kokeillut asentaa, mutta en ole onnistunut.

User avatar
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda » Fri Nov 30, 2007 10:51 am

Sami The Great wrote: t_face esitellään Text luokassa jota en tuohon äskeiseen viestiin liittänyt. t_facen edellinen sisältö jää uuden alle tämä on ns. "väli suraface" johon teksti aluksi renderöidään ja sitten se teksti surface piirretään näyttöön. Nyt kun sai tuon toimimaan tuli taas ongelma, nimittäin syötteiden kanssa... Tuli ongelmasksi että nykyinen systeemi lukee kunnolla vain kahta näppäintä yhtäaikaa. Eli jos ohjelmassa on 3 tekstiä 2 niistä vain näkyy samaan aikaan vaikka painan kaikkien "näyttämis" nappia.
Tuo vanha surface pitää ainakin tuhota. Pikaisesti silmäilin ohjelmointiputkan SDL-opasta, jota olet ilmeisesti itsekin vilkaissut, ja siellä on komento jolla vapautetaan surface muistista. Tuossa tapahtuu ainakin muistivuoto ihan takuulla.
Sami The Great wrote: Voisiko ongelma olla että näppäimistö puskuriin ei mahdu enempää toimintoja jonoon? Mistä sitä voisi kokeilla kasvattaa?
Ei näppäimistökomentojen käsittelyä pelissä pitäisi niin tehdä. Kaikkien näppäinten tila voidaan hakea ennen näppäinten käsittelyä, yhdellä komennolla. Nämä tilat tallennetaan taulukkoon, kuten ilmeisesti olet tehnyt. Tämän jälkeen voidaan minkä vain näppäimen tila hakea sieltä taulukosta. Vertailemalla näppäimen edellistä tilaa nykyiseen saadaan aikaiseksi KeyDown ja KeyUp -tyyliset tapahtumat. En kerkeä tuota sinun koodia enempää tutkiskelemaan, mutta varmasti netistä löytyy helppoja tapoja käyttää näppäimistöä oikein.

#edit: Tuosa Event-luokassa on aikamoisia ihmeellisyyksiä:

Koodilohko johon ei päästä:

Code: Select all

bool Event::KeyDown(Uint16 EFL_key)
{
    if(button[EFL_key])
        return true;
    else
        return false;
        
    SDL_PushEvent(&event); //<====== unreachable code
}

Code: Select all

bool Event::KeyHit(Uint16 EFL_key)
{
    if(hitbutton[EFL_key] == 0)
        hit_taulukko[EFL_key] = 0;
    
    if(hit_taulukko[EFL_key] == 0) //<========= mitä tapahtuu jos hitbutton[EFL_key] ei palauttanutkaan nollaa? hit_taulukossa voi olla odottamaton arvo.
    {
        if(hitbutton[EFL_key])
        {
            hit_taulukko[EFL_key] = 1;
            return true;
        }
        else
        {
            return false;
        }
    }
    // <======== Ja kun arvo on mitä vain paitsi nolla, mennään tänne. mitä ihmettä? mitään ei palauteta?
}
Tuon KeyHit:n logiikka on muutenkin outo.

- Jos näppäintä ei ole painettu
- - Tallenetaan tila taulukkoon
- Jos näppäintä ei ole painettu
- - Jos näppäintä onkin painettu O_o?
- - - Tallennetaan tila, return true
- - muuten
- - - return false
- (ei palauteta mitään arvoa)

Etkö voisi tehdä tuosta metodista vain tällaisen:

Code: Select all

bool Event::KeyHit(Uint16 EFL_key)
{
    return hitbutton[EFL_key] != 0; //palauttaa true, jos arvo ei ole nolla, ja false jos arvo on nolla.
}
Näyttää että tuo bool-taulukko on täysin turha, koska näppäinten tilat ovat jo valmiiksi noissa uint-pointtereissa saatavissa.
OoO

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 » Sat Dec 01, 2007 11:08 am

Noniin muutimpa noi niin kuin neuvoit. Kiitos avusta. Kannattaako muuten harjoitella heti joku toinen grafiikka kirjasto missä olisi 3D ominaisuudet vai kannattaako pysytellä SDL llässä ?
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

weeB

Re: C++ -kysymykset

Post by weeB » Sat Dec 01, 2007 11:08 am

Dodih, uudet foorumit jo coolbasicille tullut. Njoo, itse nykyisin pyrin keskittymään C++:aan siitä syystä, että CoolBasic on vain niiiiiin rajoittunut näin ohjelmapuolella.

Olen pari opusta lukenut, harjoituskoodeja vääntänyt ja netistäkin vinkkejä selannut ja nyt osaan c++ alkeet hyvin.
Muuttujat, ehtolausekkeet, funktiot, taulukot, osoittimet (oikea käännös pointerista?) , luokat, linkkilistat (oikea käännös linked lististä?) sekä yrittänyt sisäistää OOP ohjelmointia.

Mitään peliä en todellakaan ala vielä koodaamaan missään muodossa vaan yleisiä Windows ohjelmointia olisi kiva tehdä.
Kuten vaikkapa ikkunan avaamista, prosessien katsomista, tiedostojen etsintää yms. pikkutehtäviä joilla voisi harjaantua.
Ohjelmapuolessa näyttää WIN32 Api dominoivan. Suomipeleistä luin pikku johdannon mutta kirjaa siitä en ole löytänyt.
Netistä sitä on kurja lukea sivutolkulla. Eli siis suomenkielistä (myös eng. kielinen käy, mutta rennompaa se on suomeksi lukea.) win32 api -opasta voi suositella. Mielellään löytyisi jostain päin suomea ostettavana esim. kirjakaupasta.

Koko läänin kirjastot kävin läpi (asun Mikkelissä) ja yhtään kirjaa ei hakutulokseksi tullut :/

User avatar
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 » Sat Dec 01, 2007 11:31 pm

Kirjoista en tiiä mut oikeestaan varmaa ainut paikka mis on oikeen kunnolla on mikkisoftan oma mdsn

User avatar
anttipanda
Active Member
Posts: 248
Joined: Mon Aug 27, 2007 9:23 pm
Location: Oulu

Re: C++ -kysymykset

Post by anttipanda » Sun Dec 02, 2007 12:30 am

Sami The Great wrote:Noniin muutimpa noi niin kuin neuvoit. Kiitos avusta. Kannattaako muuten harjoitella heti joku toinen grafiikka kirjasto missä olisi 3D ominaisuudet vai kannattaako pysytellä SDL llässä ?
Jos teet 2D-pelejä, SDL voi olla yksinkertaisempi, sillä 3D-kirjastolla voit joutua tekemään kohtalaisen pohjatyön ennenkuin voit esimerkiksi alkaa vain piirtämään kuvia tai tekstiä näytölle.
OoO

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja » Sun Dec 02, 2007 1:10 pm

anttipanda wrote:
Sami The Great wrote:Noniin muutimpa noi niin kuin neuvoit. Kiitos avusta. Kannattaako muuten harjoitella heti joku toinen grafiikka kirjasto missä olisi 3D ominaisuudet vai kannattaako pysytellä SDL llässä ?
Jos teet 2D-pelejä, SDL voi olla yksinkertaisempi, sillä 3D-kirjastolla voit joutua tekemään kohtalaisen pohjatyön ennenkuin voit esimerkiksi alkaa vain piirtämään kuvia tai tekstiä näytölle.
Tästä pitänee todeta olevani hieman eri mieltä. Itse olen OpenGL:llä ohjelmoinut jonkin aikaa, ja kuvat ovat helppoja ja hyvin monipuolisia ( oikeilla kirjastoilla ainakin ;D ) ja tekstin piirtäminen (joskaan ei lataaminen, mutta siihenkin löytyy hienosti apu netistä) paljon yksinkertaisempaa kuin SDL:llä, jossa jostain kumman syystä se täytyy ensin renderöidä kuvaksi ja vasta sen jälkeen sitä voi käyttää o: Ja voithan toki käyttää SDL:n kanssa OpenGL:ää, jolloin sinulla on myös 3D-ominaisuudet.

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 » Sun Dec 02, 2007 1:20 pm

Voisiko Irrlicht olla hyvä? Latasin sen vähän aikaa sitten ja siinä näyttäisi olevan 3D ominaisuudet ja törmäys tunnistus valmiina. Onko kenelläkää kokemusta tästä, että saako tällä suht helposti tehtyä 2D grafiikkaa? Ainakin tämä näytti hiukan monimutkaisemmalta kuin SDL.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

User avatar
Dibalo
Advanced Member
Posts: 298
Joined: Mon Aug 27, 2007 8:12 pm
Location: Espoo, Finland
Contact:

Re: C++ -kysymykset

Post by Dibalo » Sun Dec 02, 2007 11:46 pm

Sami The Great wrote:Voisiko Irrlicht olla hyvä? Latasin sen vähän aikaa sitten ja siinä näyttäisi olevan 3D ominaisuudet ja törmäys tunnistus valmiina. Onko kenelläkää kokemusta tästä, että saako tällä suht helposti tehtyä 2D grafiikkaa? Ainakin tämä näytti hiukan monimutkaisemmalta kuin SDL.
Irrlicht on hyvä engine aloittaa: se sisältää helpot 2D- sekä 3D-ominaisuudet.
The darkest spells can be found from
http://tunkkaus.blogspot.fi

User avatar
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: C++ -kysymykset

Post by Sami345 » Wed Dec 26, 2007 2:43 pm

Miten voi kääntää C++ ohjelman niin että sen voisi ajaa puhelimessaa? Voiko sen siirtää käyttäen bluetooth:ia? Tietokoneessani on bluetooth sovitin ja matka puhelimeni tukee sitä. Kääntäjäni on Visual Studion .NET Professional 60 päivän kokeilu versio.

PS. Tiedän ettei Visual Studion .NET Professional ole kääntäjä. En vain muista mikä se on.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/

User avatar
jabanii
Member
Posts: 93
Joined: Tue Aug 28, 2007 9:23 pm

Re: C++ -kysymykset

Post by jabanii » Wed Dec 26, 2007 11:33 pm

Sami345 wrote:Miten voi kääntää C++ ohjelman niin että sen voisi ajaa puhelimessaa? Voiko sen siirtää käyttäen bluetooth:ia? Tietokoneessani on bluetooth sovitin ja matka puhelimeni tukee sitä. Kääntäjäni on Visual Studion .NET Professional 60 päivän kokeilu versio.

PS. Tiedän ettei Visual Studion .NET Professional ole kääntäjä. En vain muista mikä se on.
Käytä VC++ Express Editionia ja asenna WIN32 SDK.

Mille alustalle ajattelit tehdä sovellukset? Pienellä googletuksella sain Symbian 60 serien SDK:ta ja Työkaluja. http://www.forum.nokia.com/main/resourc ... index.html

PS. Visual Studion .NET Professional on paketti, mikä sisältää Visual Studion oman kääntäjän ja IDE:n.

Post Reply