C++ -kysymykset

Muu yhteisön välinen keskustelu.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post by Koodiapina »

_getch() @ conio.h palauttaa painetun näppäimen ASCII-koodin.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post 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?
-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'.
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post 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
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post 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)
-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'.
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post 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
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim »

Napakymppi! Kiittos, Galgoneer! (Tajusit varmaankin miksi en löytänyt vastausta suoraan googlettamalla.. ;) )
-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'.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: C++ -kysymykset

Post by Character »

En ole ennen ohjelmoinut kuin CB:llä ja aion alkaa harjoitella C++:aa.
Mikä olisi paras ohjelma tähän tarkoitukseen? :D
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post 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.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post 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.
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post 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.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: C++ -kysymykset

Post by Character »

Kokeilin Code::Block:ia mutta en saanut suoritettua projektia.
Miten se tehdään? Laitoin Build -> Run mutta ei toiminut.. :?
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post 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.
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post 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.
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post 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?
-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'.
Character
Active Member
Posts: 113
Joined: Thu Nov 27, 2008 2:16 pm

Re: C++ -kysymykset

Post by Character »

Anti olla.. Asensin sittenkin Crimson Editorin. :D
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post 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ä.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post 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.
Last edited by phons on Thu Jan 22, 2009 9:27 pm, edited 1 time in total.
Image
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

Wikipediasta kannattaa katsoa atan2().
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: C++ -kysymykset

Post 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;
}
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post 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
Post Reply