C++ -kysymykset

Muu yhteisön välinen keskustelu.
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 Mar 15, 2009 9:31 pm

Jormalaz wrote:Tiedättekö millä kirjastolla pystyisi mallintamaan objekteja tai jotain vastaavaa projektiini? Käytän Visual C++:tä. Olisi tarkoitus, että jotenkin 3D Studio Maxilla mallintamat aseet yms. saisi peliin jotenkin. Millä kirjastolla se onnistuu?
Itse käytän ihan standard I/O:ta. Wanha kunnon stdio.h siis. Valmista funktiota se ei (tietenkään) moiseen sisällä, van sen saa ihan itse väkertää. Formaatteja on monia, enkä nyt muista mihin kaikkeen 3DSM exporttii, mutta ainakin .3ds toiminee, siihen löytyy mahtava tutoriaali esimerkiksi tästä. Sivusto on periaatteessa avaruussimulaatioita varten (ja täysin kuollut), mutta suurin osa siellä olevasta asiasta on yleishyvää, rautaista asiaa.

sillie
Newcomer
Posts: 19
Joined: Sun Dec 14, 2008 9:56 pm

Re: C++ -kysymykset

Post by sillie » Thu Apr 09, 2009 8:54 pm

Irrlichtiä oon nyt kaks päivää koodaillu, ja voin suositella erityisen lämpimästi. Tälläinen aloittelijakin pääsi sisälle suht helposti, kun jaksoi vähän tutoriaaleja katsella.
Itselleni ainakin oli Irrlicht huomattavasti helpompaa kuin OGRE, vaikka monet toisin sanovatkin :)

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 » Thu Apr 09, 2009 9:10 pm

Irrlicht on paljonkin OGRE:a käyttäjä- ja erityisesti aloittelijaystävällisempi. Mutta sitten kun sitä tehoa halutaan puristaa, niin OGRE pwnaa ihan mennen tullen Irrlichtin! :P
The darkest spells can be found from
http://tunkkaus.blogspot.fi

lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka » Sun Apr 19, 2009 8:31 pm

Hei, olen teossa pientä ohjelmaa, jolla pitäisi pystyä keskustelemaan ja pelaamaan shakkia netin välityksellä toista vastaan, niin mitä kirjastoja käytetään tähän netin läpi kommunikointiin?

Samalla myös miten tulee toimia, jos toisen kone on lähiverkossa, eli miten sen saa varmasti toisessa päässä oikeaan osoitteeseen?

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Sun Apr 19, 2009 8:38 pm

lukutoukka wrote:Hei, olen teossa pientä ohjelmaa, jolla pitäisi pystyä keskustelemaan ja pelaamaan shakkia netin välityksellä toista vastaan, niin mitä kirjastoja käytetään tähän netin läpi kommunikointiin?

Samalla myös miten tulee toimia, jos toisen kone on lähiverkossa, eli miten sen saa varmasti toisessa päässä oikeaan osoitteeseen?
EDIT:

Jos ihan nollasta alat tekemään, niin joko UNIX Socketteja tai WinSockia, riippuen alustasta.

Ööö... Lähiverkko-osoitteella? Vai tarkoititko netin yli jonkun toisen verkkoon? Sehän on oma ongelmansa, josseivät ole ohjanneet porttejaan.

lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka » Sun Apr 19, 2009 8:46 pm

esa94 wrote:
EDIT:

Jos ihan nollasta alat tekemään, niin joko UNIX Socketteja tai WinSockia, riippuen alustasta.

Ööö... Lähiverkko-osoitteella? Vai tarkoititko netin yli jonkun toisen verkkoon? Sehän on oma ongelmansa, josseivät ole ohjanneet porttejaan.
Okei, siis tuota juuri portitusta meinaan. Löytyykö tuosta WinSockista suomenkielistä tutoriaalia?

User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 » Sun Apr 19, 2009 9:33 pm

Dun believe so.

Tuossois englanninkielinen, mut kannattaa vaan ladata joku valmis verkkokirjasto mieluummin, tästä VoittoSukasta ei saa paskaakaan selvää :P

http://tangentsoft.net/wskfaq/

lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka » Mon Apr 20, 2009 5:05 pm

Eli jos hankin jonkun valmiin kirjaston, niin mikä olisi sopiva?

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 » Mon Apr 20, 2009 5:12 pm

lukutoukka wrote:Eli jos hankin jonkun valmiin kirjaston, niin mikä olisi sopiva?
Itse käytän RakNet:iä.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

lukutoukka
Active Member
Posts: 111
Joined: Fri Jun 13, 2008 9:06 pm

Re: C++ -kysymykset

Post by lukutoukka » Mon Apr 20, 2009 9:14 pm

Sami The Great wrote:
lukutoukka wrote:Eli jos hankin jonkun valmiin kirjaston, niin mikä olisi sopiva?
Itse käytän RakNet:iä.
Osaisitko sanoa miten tuo asennetaan Dev-c++ ympäristöön? Tämänkun saisin tiedettyä, niin voisin aloittaa testaamisen.

Ja chat systeemin perustoimintahan on, että palvelin ottaa asiakkaiden syötteet vastaan ja jakaa ne eteenpäin? Sitten tämä porttisysteemi, niin meneekö se siten, että palvelin kuuntelee tiettyä/tiettyjä portteja ja kun asiakas ottaa siihen yhteyden, niin se avaa sen kanssa uuden portin ja pystyy näin pitämään yhteyden?

Ja tuosta saankin johdettua uuden kysymyksen, eli onko näiden porttien käytössä rajoitteita?

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 » Mon Apr 20, 2009 9:42 pm

lukutoukka wrote:
Sami The Great wrote:
lukutoukka wrote:Eli jos hankin jonkun valmiin kirjaston, niin mikä olisi sopiva?
Itse käytän RakNet:iä.
Osaisitko sanoa miten tuo asennetaan Dev-c++ ympäristöön? Tämänkun saisin tiedettyä, niin voisin aloittaa testaamisen.

Ja chat systeemin perustoimintahan on, että palvelin ottaa asiakkaiden syötteet vastaan ja jakaa ne eteenpäin? Sitten tämä porttisysteemi, niin meneekö se siten, että palvelin kuuntelee tiettyä/tiettyjä portteja ja kun asiakas ottaa siihen yhteyden, niin se avaa sen kanssa uuden portin ja pystyy näin pitämään yhteyden?

Ja tuosta saankin johdettua uuden kysymyksen, eli onko näiden porttien käytössä rajoitteita?
Tässä on .a tiedosto jota tarvitset. Se on Dev-Cpp:n käyttämä library tiedosto. http://files.filefront.com/RakNetLibrar ... einfo.html
Käänsin sen puolestasi RakNetin Sourcesta. Eli, jotta saat RakNetin toimimaan niin sinun pitää linkittää tuo tiedosto projektiisi.

Serverille yhdistäessä tarvitsee portti tietää, mutta RakNet hoitaa automaattisesti jokaiselle eri clientille eri portin. Eli kun Server ja Client on yhdistetty niin voit alkaa suoraan lähettelemään paketteja.

Itseasiassa olen tehnyt jonkun esimerkinkin RakNetistä yhteen kouluprojektiin.

Code: Select all

Merkkijonojen lähettäminen ja vastaanottaminen RakNetin avulla

Tässä esimerkissä näytetään miten merkkijonojen lähettäminen verkon yli onnistuu RakNetiä käyttäen. Esimerkki ei käsittele RakNetin alustusta vaan ainoastaan osan, jossa merkkijono lähetetään. Alustuksesta saat lisätietoa RakNetin sivuilta.

[KOODI LÄHETTÄJÄN PUOLELLA]
/* Luodaan paketti struct, joka sisältää paketti tunnisteet ja itse merkkijonon. */
struct stringPackage
{
unsigned char typeId; //Paketin tunniste tallennetaan tähän.
char STRING[256]; //Merkkijono tallennetaan kirjain taulukkoon.
};

//Luodaan string muuttuja, johon teksti laitetaan.
std::string outGoingString = "This string is going to be sent over network";

//Luodaan uusi paketti
stringPackage pack;

//Tunniste id, katso RakNetin manuaalista miten voit luoda uusia tunnisteita.
pack.typeId = ID_STRING_PACK;
//Kopioidaan merkkijono taulukkoon.
strcpy(pack.STRING, outGointString.c_str());

RakNet::BitStream mBitStream; //Luodaan BitStream.
mBitStream.Write(pack.typeId);
mBitStream.Write(pack.STRING);

//Lähetetään bitStream
Send(mBitStream, HIGH_PRIORITY, RELIABLE_ORDERED, 0, 0, true);


[KOODI VASTAANOTTAJAN PUOLELLA]

struct stringPackage
{
unsigned char typeId; //Paketin tunniste tallennetaan tähän.
char STRING[256]; //Merkkijono tallennetaan kirjain taulukkoon.
};

//Vastaanotetaan paketti verkosta.
Packet *packet;
packet = peer->Receive();

stringPackage pack;

//Luodaan BitStream saapuneesta paketista.
RakNet::BitStream mBitStream(packet->data, packet->length, false);

//Luetaan tiedot merkkijono pakettiin.
mBitStream.Read(pack.typeId);
mBitStream.Read(pack.STRING);

//Luodaan merkkijono muuttuja ja alustetaan se kirjain taulukolla.
std::string receivedString(pack.STRING);


Nyt receivedString muuttujan pitäisi sisältää lähetetty merkkijono.
EDIT: Ainiin tuli vielä mieleen, että DEV-CPP:llä piti linkittää myös WinSock kirjasto, jotta RakNet toimisi. Kirjaston tiedostonimi oli muistaakseni libws2_32.a

EDIT2: Jaahas. Huomasin juuri, että RakNetistä on tullut uusi versio, joten minun kääntämä kirjasto ei toimi jos latasit uusimman version. Eli saat käännettyä sen kirjaston itse, kun avaat sen projekti tiedoston ja "Rebuild All". Projektitiedostolla tarkoitan sitä RakNet.dev tiedostoa.
Last edited by Sami The Great on Mon Apr 20, 2009 9:51 pm, edited 1 time in total.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

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 Apr 20, 2009 9:51 pm

Porttien käyttö on melko vapaata, mutta kannattaa käyttää portteja vasta 1024:stä alkaen. Tietääkseni sitä alemmat portit on voitu varata käyttöjärjestelmälle, näin on todennäköisepmää että yhteyden alustus epäonnistuu. Joku "5432" kelpaa jo vallan mainiosti portiksi. Vaan asiasta toiseen: oletko jo päättänyt protokollan? TCP vai UDP?
-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 » Mon Apr 20, 2009 9:52 pm

JATothrim wrote:Porttien käyttö on melko vapaata, mutta kannattaa käyttää portteja vasta 1024:stä alkaen. Tietääkseni sitä alemmat portit on voitu varata käyttöjärjestelmälle, näin on todennäköisepmää että yhteyden alustus epäonnistuu. Joku "5432" kelpaa jo vallan mainiosti portiksi. Vaan asiasta toiseen: oletko jo päättänyt protokollan? TCP vai UDP?
Ilmeisesti UDP, kun RakNet sitä käyttää ;)
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 9:37 pm

Re: C++ -kysymykset

Post by matti3 » Tue Apr 21, 2009 5:58 pm

Olen erittäin kiinnostunut C++ mutta kaikki oppaat joita olen lukenut niin koodit eivät yksinkertaisesti toimi omassa C++, joten sellaisia oppaita on turha lukea kun ei mikään toimi mitä siellä neuvotaan. Onko netissä mitään hyvää ladattavaa ilmaista c++ kirjaa? :O

Tai onko jotain kunnollisia oppaita.
Viho viimeisenä voi olla jokin ladattava ilmainen kirja. :)

Kirjastoon en jaksa mennä, joten päätän ensin koittaa jos netistä löytyisi edes joku C++ kirja/opas. :D
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini

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 » Tue Apr 21, 2009 8:20 pm

matti3 wrote:Olen erittäin kiinnostunut C++ mutta kaikki oppaat joita olen lukenut niin koodit eivät yksinkertaisesti toimi omassa C++, joten sellaisia oppaita on turha lukea kun ei mikään toimi mitä siellä neuvotaan. Onko netissä mitään hyvää ladattavaa ilmaista c++ kirjaa? :O

Tai onko jotain kunnollisia oppaita.
Viho viimeisenä voi olla jokin ladattava ilmainen kirja. :)

Kirjastoon en jaksa mennä, joten päätän ensin koittaa jos netistä löytyisi edes joku C++ kirja/opas. :D
Tämä on mielestäni hyvä opas http://www.nic.funet.fi/c++opas/
Itse harjoittelin C++:ssan perusteet tuosta oppaasta ja minulla oli myös vähän ongelmia saada ohjelmat toimiaan.
Suureksi ongelmaksi tuli main funktion määrittely. Oppaassa se esitellään void main(), mutta useissa kääntäjissä se ei toimi. Eli vaihdat vain void main():in int main():iksi niin pitäisi kaikki tuon oppaas koodit toimia ainakin Dev-Cpp:ssä ja MS visual C++ 9.0:assa.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

User avatar
dem0
Newcomer
Posts: 43
Joined: Wed Mar 19, 2008 8:36 am

Re: C++ -kysymykset

Post by dem0 » Tue Apr 21, 2009 8:22 pm

Se, etteivät oppaissa annetut koodinpätkät toimi, ei johdu kääntäjästä vaan omasta evotuksestasi.

Ladattavia C++-kirjoja en tiedä, mutta yksi varteenotettava opas on tässäkin topikissa n+1 kertaa mainittu, joskin hitusen vanhentunut Hassun Hauska C++- opas. (http://www.nic.funet.fi/c++opas/)

e. Sami, en vastannut viestiisi vaan ehdit vain lähettää sen sillä välin kun kirjoitin omaani :|
Last edited by dem0 on Tue Apr 21, 2009 8:57 pm, edited 2 times in total.

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 » Tue Apr 21, 2009 8:41 pm

dem0 wrote:Se, etteivät oppaissa annetut koodinpätkät toimi, ei johdu kääntäjästä vaan omasta evotuksestasi.

Ladattavia C++-kirjoja en tiedä, mutta yksi varteenotettava opas on tässäkin topikissa n+1 kertaa mainittu, joskin hitusen vanhentunut Hassun Hauska C++- opas. (http://www.nic.funet.fi/c++opas/)
Toki muussa koodissa voi olla omia evotuksia, mutta ainakin tuon void main() määrittelyn korjaus auttaa asiaan (ainakaan minulla ohjelma ei käänny jos main funktio palauttaa tyhjää). Ja muistithan includettaa kaiken tarvittavan mukaan? Sillä useimmat esimerkit käyttävät standard IO:ta eli iostream pitäisi olla includetettu. Ja yksi virhe mikä voisi näin aluksi tulla on jos unohdat määritellä std nimiavaruuden käyttöön. Toki voit käyttää aina standardi kirjaston funktioita tapaan std::funktio, mutta aluksi on helpompaa määritellä nimiavaruus käyttöön. Eli using namespace std;

Ja dem0 tuon oppaan linkittäminen oli sinänsä turhaa, koska linkitin siihen juuri edellisessä viestissä johon vastasit ;)

EDIT: Matti olisi myös helpompi auttaa jos kertoisit mitä editoria ja kääntäjää käytät.


EDIT2: Ainakin heti pisti silmään kaksi virhettä tuossa oppaassa miksi ohjelma ei toimi.

Code: Select all

#include <iostream.h>

void main() //tämä määrittely ei toimi ainakaan minulla
{
  cout << "Hello world!"; //tästä puuttuu nimiavaruus, koska sitä ei ole otettu käyttöön aikaisemmin
}
Kokeile jos tämä alempi koodi toimisi:

Code: Select all

#include <iostream.h>

int main()
{
  std::cout << "Hello world!";
}
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.

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

Re: C++ -kysymykset

Post by Koodiapina » Tue Apr 21, 2009 8:50 pm

Jos ei vieläkään toimi, kannattaa vaihtaa ensimmäinen rivi muotoon:

Code: Select all

#include <iostream>
Olen liian älykäs ollakseni väärässä. Jos olet kanssani eri mieltä, suosittelen sinua pohtimaan omaa elämänkatsomustasi ja sen perusteita.

matti3
Active Member
Posts: 136
Joined: Fri Mar 06, 2009 9:37 pm

Re: C++ -kysymykset

Post by matti3 » Wed Apr 22, 2009 9:42 am

Juu toimii, mutta vielä sellainen, että nyt tuo kuva vain välähtää tuossa. :o
Glory&Pride <--- selainpeli projektini

Pelilä<- yksi ylläpitämäni sivusto.

World leaders Ensimmäinen CoolBasic projektini

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

Re: C++ -kysymykset

Post by anttipanda » Wed Apr 22, 2009 10:50 am

Jos konsoli vain välähtää ruudulla, se pitää saada pysymään siinä esimerkiksi pyytämällä käyttäjää painamaan enteriä. Automaattisestihan tämä ei tietenkään tapahdu. Esimerkiksi getch() auttaa.
OoO

Post Reply