Page 23 of 50

Re: C++ -kysymykset

Posted: Tue Dec 30, 2008 11:57 pm
by Koodiapina
_getch() @ conio.h palauttaa painetun näppäimen ASCII-koodin.

Re: C++ -kysymykset

Posted: Fri Jan 02, 2009 7:13 pm
by JATothrim
Googletin koko eilisillan mutta en löytänyt tähän vastausta: kuinka nappaan wxWidgets kijastoa käyttäen ikkunan sulkemis eventin? Eli sen kun painetaan X:ää. Nyt ohjelmani vain sulkeutuu, eikä heitä käytäjää messageboxilla. (josta voisi peruuttaa sulkemisen) Valikoista sulkeminen oli lasten leikkiä, mutta tämä tyssäsi. Eli lyhesti: minkä ID/eventin/jne. ohjelma heittää kun X:ää painetaan ja kuinka se napataan kiinni?

Re: C++ -kysymykset

Posted: Fri Jan 02, 2009 7:20 pm
by Dande
JATothrim wrote:Googletin koko eilisillan mutta en löytänyt tähän vastausta: kuinka nappaan wxWidgets kijastoa käyttäen ikkunan sulkemis eventin? Eli sen kun painetaan X:ää. Nyt ohjelmani vain sulkeutuu, eikä heitä käytäjää messageboxilla. (josta voisi peruuttaa sulkemisen) Valikoista sulkeminen oli lasten leikkiä, mutta tämä tyssäsi. Eli lyhesti: minkä ID/eventin/jne. ohjelma heittää kun X:ää painetaan ja kuinka se napataan kiinni?
Googletus: wxWidgets close window event. Siitä ensimmäinen linkki wxWidgetsin omaan doxygen dokumentaatioon: wxCloseEvent. En tiedä mitä sitten eilen googletit ;)

Nappaaminen tapahtuu varmaankin samalla tavalla kuin muidenkin eventtien kanssa, itse en ole tuohon wxWidgetsiin perehtynyt

Re: C++ -kysymykset

Posted: Sat Jan 03, 2009 3:47 pm
by JATothrim
Nop. Ei mitään uutta, oli toisin hieman paremmin selitetty. Hommassa on nimittäin se, että haluaisin käyttää Connect() funktiota määrittämään eventien handlerit. Nuo event-tablet ja makrot ei oikein kiinnosta. (huonon näköisiä ja sekoittavat koodia)

Re: C++ -kysymykset

Posted: Sat Jan 03, 2009 5:33 pm
by Dande
Tämän ja tämän lukaistuani ja kirjaston sourcet ladattuani ja event.h-tiedostoon vilkaistuani uskaltaisin antaa vinkiksi wxEVT_CLOSE_WINDOW

Re: C++ -kysymykset

Posted: Sun Jan 04, 2009 4:15 pm
by JATothrim
Napakymppi! Kiittos, Galgoneer! (Tajusit varmaankin miksi en löytänyt vastausta suoraan googlettamalla.. ;) )

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 9:29 pm
by Character
En ole ennen ohjelmoinut kuin CB:llä ja aion alkaa harjoitella C++:aa.
Mikä olisi paras ohjelma tähän tarkoitukseen? :D

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 9:33 pm
by temu92
Itse käyttelen Dev-Cpp:tä IDE:nä ja sen mukana tulevaa mingw/gcc:tä kääntäjänä. Sitten jos haluaa vähän "ammattimaisempaa" softaa niin hommaa ilmainen Microsoftin Visual C++ Express Edition.

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 9:59 pm
by Koodiapina
Ei IDE:tä itseasiassa tarvitse mihinkään. Tietenkin muutama helppokäyttöominaisuus jää saamatta, mutta kyllä sitä mainiosti ilmankin pärjää. Itselläni on tällä hetkellä gedit & g++ yhdistelmä ja on kyllä pakko sanoa, että kätevyydessä löytyy. Ei puhettakaan debug-kansioista tai ihme-filuista millä en ainakaan itse tekisi yhtikäs mitään. Projektin kansiossa vain lähdekoodit sekä ajettava ohjelma - Siinä yksinkertaisuus.

Tuosta DevC++:sta vielä. On muuten ihan sairaan buginen IDE, että en todellakaan suosittele kellekkään. Koko homma kaatuu mitä ihmeellisimpiin vikoihin mistä ei ole devillä itselläkään mitään hajua. Käynnistettäessä uudestaan äsken niin failaavat linkkerin asetukset ovatkin nyt käypää tavaraa. Luokka-listassa näkyykin yhtäkkiä jotain ihmeellisiä NULL-kansioita? Sisennys on päin mäntyä pastetellessa pastebiniin oli smarttabit tai ei... Eihän sellaista kestä pää.

Ehdotan Code::Blocksia vaihtoehdoksi.

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 10:16 pm
by temu92
Grandi wrote:Tuosta DevC++:sta vielä. On muuten ihan sairaan buginen IDE, että en todellakaan suosittele kellekkään. Koko homma kaatuu mitä ihmeellisimpiin vikoihin mistä ei ole devillä itselläkään mitään hajua.
Testannut vain beta 5:sta joka on keskeneräinen? Itsellä on 4.9 versio eikä ole kaatuillut.

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 10:24 pm
by Character
Kokeilin Code::Block:ia mutta en saanut suoritettua projektia.
Miten se tehdään? Laitoin Build -> Run mutta ei toiminut.. :?

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 10:40 pm
by Koodiapina
temu92 wrote:Testannut vain beta 5:sta joka on keskeneräinen? Itsellä on 4.9 versio eikä ole kaatuillut.
Kumpaakin olen käyttänyt ja kyllähän tuo 5.x enemmän kaatuili. Muut bugit kuitenkin lähes samat molemmissa, varmaan ne saadaan vielä korjattua, mutta henkilökohtaisesti luottamus kyseiseen softaan on tyystin mennyttä. Sen verran kireiksi veti hermot aika-ajoin.

Re: C++ -kysymykset

Posted: Fri Jan 09, 2009 10:47 pm
by temu92
Character wrote:Kokeilin Code::Block:ia mutta en saanut suoritettua projektia.
Miten se tehdään? Laitoin Build -> Run mutta ei toiminut.. :?
Koska Code::Blocks on tehty useammalle kielelle kuin vain C++:lle sekä sen mukana ei tule kääntäjää, sinun pitää itse määrittää asetuksista se mistä IDE löytäisi kääntäjäsi. Itse en ole käyttänyt ko. IDEä muuta kuin ihan vähän asmin kirjoitteluun ja nekin käänsin itse suoraan komentoriviltä, joten en osaa neuvoa miten.

Re: C++ -kysymykset

Posted: Mon Jan 12, 2009 10:33 pm
by JATothrim
Character wrote:Kokeilin Code::Block:ia mutta en saanut suoritettua projektia.
Miten se tehdään? Laitoin Build -> Run mutta ei toiminut.. :?
Mitä IDE valittaa? käännösvirhe vai jotain muuta? Valaise ongelmaasi hieman. Tuon perusteella en osaa sanoa muuta kuin, että millaisen version asensit IDE:stä? Tuliko siinä esim. mingw kääntäjä mukana?

Re: C++ -kysymykset

Posted: Wed Jan 14, 2009 12:16 am
by Character
Anti olla.. Asensin sittenkin Crimson Editorin. :D

Re: C++ -kysymykset

Posted: Thu Jan 22, 2009 9:02 pm
by Koodiapina
Mistä saisin revittyä CoolBasicin GetAngle() funktion vastineen C/C++ kieliin? Googletin vaikka millä mitalla, mutta tuli vain matemaattisia kaavoja joista en ymmärrä yhtikäs mitään. Siis ihan valmista funktiota pyytelen, itse en moista osaa tehdä.

Re: C++ -kysymykset

Posted: Thu Jan 22, 2009 9:03 pm
by phons
Irrlicht:ssä on getRotation, mutta SDL:stä en tiä, enkä juuri muistakaan.

Edit: Olisi varmaan taas pitänyt ensin katsoa mitä tuo GetAngle()-funktio edes tekee. Eli tolla getRotation:lla ei saa sitä mitä CB:ssä GetAngle:lla.

Re: C++ -kysymykset

Posted: Thu Jan 22, 2009 9:12 pm
by temu92
Wikipediasta kannattaa katsoa atan2().

Re: C++ -kysymykset

Posted: Thu Jan 22, 2009 10:02 pm
by Koodiapina
Käytän toki koodissani atan2():sta. Tässä viritelmäni joka ei toiminut, korjatkaas mahdolliset virheet:

Code: Select all

double distance(double x1,double y1,double x2,double y2) {
  return sqrt(pow(x2-x1,2)+pow(y2-y1,2));
}

double getAngle(double x1,double y1,double x2,double y2) {
if (x1<x2 && y1<y2)
  return 360 - atan2(distance(0,y1,0,y2),distance(x1,0,x2,0));
else if (x1>x2 && y1<y2)
  return 180 + atan2(distance(0,y1,0,y2),distance(x1,0,x2,0));
else if (x1>x2 && y1>y2)
  return 180 - atan2(distance(0,y1,0,y2),distance(x1,0,x2,0));
else if (x1<x2 && y1>y2)
  return atan2(distance(0,y1,0,y2),distance(x1,0,x2,0));
else if (x1==x2 && y1>y2)
  return 90;
else if (x1==x2 && y1<y2)
  return 270;
else if (x1>x2 && y1==y2)
  return 180;
else
  return 0;
}

Re: C++ -kysymykset

Posted: Fri Jan 23, 2009 5:25 pm
by Dande
Grandi wrote:Käytän toki koodissani atan2():sta. Tässä viritelmäni joka ei toiminut, korjatkaas mahdolliset virheet:

Code: Select all

koodia
Aika paljon turhaa tuohon teit, kun ottaa huomioon atan2:sen hyödyt. Lisäksi minua ärsyttää tuo tapa laskea kahden samalla akselilla olevan pisteen etäisyys distance-funktiolla, kun on olemassa operator- eli perus miinuslasku ( tyyliin x2-x1, lienee hieman kevyempi, kuin turhat potenssiin korotukset ja neliöjuuret ) tässä olisi minun toteutukseni:

Code: Select all

double GetAngle(double x1, double y1, double x2, double y2){
    double tmp=atan2(y2-y1,x2-x1)*180/3.14159265; // C:n standardikirjasto käyttää radiaaneja, joten tuossa muutetaan ne asteiksi
    return tmp<0?360+tmp:tmp; //jos ei tykätä miinusmerkkisistä asteista, niin tällä saadaan esim. -45:n sijasta 315
}
Koodissasi suurin virhe johtunee siitä (en tehnyt mitään syväluotaavaa analyysia, kunhan vilkaisin), että oletit C:n standardikirjaston käyttävän asteita (kuten koodin kommentissa totesin, käytössä on radiaanit, eli täysiympyrä on 2*Pii), ja vaikka käytitkin atan2-funktiota, et käyttänyt hyödyksi sen tuomaa etua atan-funktioon