C++ -kysymykset

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

Re: C++ -kysymykset

Post by Koodiapina » Wed Dec 31, 2008 12:57 am

_getch() @ conio.h palauttaa painetun näppäimen ASCII-koodin.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim » Fri Jan 02, 2009 8:13 pm

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'.

User avatar
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post by Dande » Fri Jan 02, 2009 8:20 pm

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

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim » Sat Jan 03, 2009 4:47 pm

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'.

User avatar
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post by Dande » Sat Jan 03, 2009 6:33 pm

Tämän ja tämän lukaistuani ja kirjaston sourcet ladattuani ja event.h-tiedostoon vilkaistuani uskaltaisin antaa vinkiksi wxEVT_CLOSE_WINDOW

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim » Sun Jan 04, 2009 5:15 pm

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 3:16 pm

Re: C++ -kysymykset

Post by Character » Fri Jan 09, 2009 10:29 pm

En ole ennen ohjelmoinut kuin CB:llä ja aion alkaa harjoitella C++:aa.
Mikä olisi paras ohjelma tähän tarkoitukseen? :D

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 » Fri Jan 09, 2009 10:33 pm

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.

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: C++ -kysymykset

Post by Koodiapina » Fri Jan 09, 2009 10:59 pm

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.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

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 » Fri Jan 09, 2009 11:16 pm

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 3:16 pm

Re: C++ -kysymykset

Post by Character » Fri Jan 09, 2009 11:24 pm

Kokeilin Code::Block:ia mutta en saanut suoritettua projektia.
Miten se tehdään? Laitoin Build -> Run mutta ei toiminut.. :?

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: C++ -kysymykset

Post by Koodiapina » Fri Jan 09, 2009 11:40 pm

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.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

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 » Fri Jan 09, 2009 11:47 pm

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.

User avatar
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim » Mon Jan 12, 2009 11:33 pm

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 3:16 pm

Re: C++ -kysymykset

Post by Character » Wed Jan 14, 2009 1:16 am

Anti olla.. Asensin sittenkin Crimson Editorin. :D

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: C++ -kysymykset

Post by Koodiapina » Thu Jan 22, 2009 10:02 pm

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ä.
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: C++ -kysymykset

Post by phons » Thu Jan 22, 2009 10:03 pm

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 10:27 pm, edited 1 time in total.
Image

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 » Thu Jan 22, 2009 10:12 pm

Wikipediasta kannattaa katsoa atan2().

User avatar
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm
Contact:

Re: C++ -kysymykset

Post by Koodiapina » Thu Jan 22, 2009 11:02 pm

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;
}
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

User avatar
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: C++ -kysymykset

Post by Dande » Fri Jan 23, 2009 6:25 pm

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