C++ -kysymykset
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ -kysymykset
Oletko varma, että puuhailet juuri C++-projektin kanssa? Jos on C-projekti, koodi ei toimi.
Tuo siis avautuu projektin luonti -ikkunassa, vähän jälkeen kun projektityyppi on valittu. Kuvassa olevan vaiheen on voinut ohittaakin, mutta en tiedä, kumman se silloin valitsee oletuksena.
Tuo siis avautuu projektin luonti -ikkunassa, vähän jälkeen kun projektityyppi on valittu. Kuvassa olevan vaiheen on voinut ohittaakin, mutta en tiedä, kumman se silloin valitsee oletuksena.
Re: C++ -kysymykset
Juurikin näin.Grandi wrote:Oletko varma, että puuhailet juuri C++-projektin kanssa? Jos on C-projekti, koodi ei toimi.
Tuo siis avautuu projektin luonti -ikkunassa, vähän jälkeen kun projektityyppi on valittu. Kuvassa olevan vaiheen on voinut ohittaakin, mutta en tiedä, kumman se silloin valitsee oletuksena.
EDIT:
Tämänhän näkee myös siitä, jos kääntöikkunassa lukee "gcc <parametrit>" kun siinä pitäisi olla g++
Muistaakseni.
- Sami The Great
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 4:15 pm
- Contact:
Re: C++ -kysymykset
Tietääkö ketään, että miten saisin toisen ikkunan toisen ikkunan sisään? Yritän saada SDL:n luomaa ikkunaa piirtymään toisen ikkunan sisälle. SDL:ssä ei ole mahdollisuutta alustaa videosysteemiä jo valmiiksi luodulle ikkunalle, joten pitää WinAPI:n kanssa kikkailla jotenkin. Minulla on tiedossa SDL:n ikkunan kahva (HWND) sekä toisen ikkunan kahva. Etsin netistä keinoa, ja löysin funktion SetParent, mutta kääntäjä valittaa, että tälläistä funktiota ei löydy, vaikka olen includettanut windows.h:n. Olen joskus tehnyt niin, että OGRE renderöi SDL:n luomaan ikkunaan, mutta OGRE:ssa on valmiit metodit tähän hommaan, joten en asiasta enempää teidä windows tasolla, mutta käytännössä pitäisi olla siis mahdollista toteuttaa.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
CoolBasickin käyttäjä vuodesta 2004.
Re: C++ -kysymykset
Juu kiitoksia avusta, olin tallentanut testitiedoston .c päätteeksi. Nyt .c -> .cpp
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: C++ -kysymykset
Miksi edes käytät SDL:ää? Jos teet joka tapauksessa Windows-spesifistä ohjelmaa, käytä vaikkapa Direct2D:tä tai GDI+:aa. Molemmat löytynevät MSDN:stä.Sami The Great wrote:Tietääkö ketään, että miten saisin toisen ikkunan toisen ikkunan sisään? Yritän saada SDL:n luomaa ikkunaa piirtymään toisen ikkunan sisälle. SDL:ssä ei ole mahdollisuutta alustaa videosysteemiä jo valmiiksi luodulle ikkunalle, joten pitää WinAPI:n kanssa kikkailla jotenkin. Minulla on tiedossa SDL:n ikkunan kahva (HWND) sekä toisen ikkunan kahva. Etsin netistä keinoa, ja löysin funktion SetParent, mutta kääntäjä valittaa, että tälläistä funktiota ei löydy, vaikka olen includettanut windows.h:n. Olen joskus tehnyt niin, että OGRE renderöi SDL:n luomaan ikkunaan, mutta OGRE:ssa on valmiit metodit tähän hommaan, joten en asiasta enempää teidä windows tasolla, mutta käytännössä pitäisi olla siis mahdollista toteuttaa.
Re: C++ -kysymykset
Irkissä jo tätä mainostelinkin, joten olkaas hyvä: edistyneempi OpenGL koe aplikaatio windowsille. Kysykää koodista, vielä kun älyän miten se toimii.
Vinkkinä niille, jotka pelleilevät OpenScreen() kutsun kanssa: tupla screen todennäköisesti kaataa ohjelman ja epäkelpo resoluutio sulkee ohjelman mystisesti/kaataa sen. (Kokoruutu tilasta voit pelastaa itsesi sulkemalla ohjelman Alt-F4:llä)
Tämän kylkeen olisi tarkoitus häslätä vielä erilisissä threadeissa pyörivät Renderi, Syöteiden luku RAW input metodilla ja wrapata koko höskä luokka pohjaiseksi...
Vinkkinä niille, jotka pelleilevät OpenScreen() kutsun kanssa: tupla screen todennäköisesti kaataa ohjelman ja epäkelpo resoluutio sulkee ohjelman mystisesti/kaataa sen. (Kokoruutu tilasta voit pelastaa itsesi sulkemalla ohjelman Alt-F4:llä)
Tämän kylkeen olisi tarkoitus häslätä vielä erilisissä threadeissa pyörivät Renderi, Syöteiden luku RAW input metodilla ja wrapata koko höskä luokka pohjaiseksi...
- Attachments
-
- OpenGL_Test.zip
- (5.65 KiB) Downloaded 269 times
-On selkeästi impulsiivinen koodaaja joka...
Re: C++ -kysymykset
Tässä nyt pitäisi olla .til tiedostojen lataus C++:a mutta en tiedä kun se ei näyttäisi toimivan, kun ruvetaan lukemaan main funktiossa Tilemapin taulukkoon ylös otettua dataa(joka ladataan TILEMAP LoadMap funktiossa).. Ajattelin että tällä tavoin tämä kartta homma olisi paras toteuttaa..
Code: Select all
#include <fstream>
#include <map>
#include <iostream>
#include <stdlib.h>
#include <cmath> //Tarvitaan tulevaisuudessa
#include <string.h> //Tarvitaan tulevaisuudessa
using namespace std;
struct TILEMAP
{
map<int, map<int, map<int, int> > > tiledata;
int mapwidth_pix, mapheight_pix, mapwidth, mapheight;
int tilewidth, tileheight;
int maskr, maskg, maskb;
int tiles;
};
TILEMAP LoadMap(char file[100], char tileset[100]);
int main(void)
{
TILEMAP mappi;
long camx, camy;
mappi = LoadMap("C:\\Ohjelmointi\\C++\\tilemaps\\cdm2.til", "");
int x, y;
for(y = 1; y < mappi.mapheight; y++)
{
for(x = 1; y < mappi.mapwidth ; x++)
{
cout<<"\t"<<((mappi.tiledata[x])[y])[0];
}
cout<<"\n";
}
}
TILEMAP LoadMap(char file[100], char tileset[100]){
TILEMAP tmp;
ifstream kartta;
kartta.open(file, ios::in);
if(kartta.fail())
{
cout<<"Mapfile not found!";
cout<<"\nFunction aborted";
kartta.close();
}
else
{
//Siirrytään kartta datassa aloituslukukohtaan.
kartta.seekg(520);
//Luetaan kartasta tilen maski RGB arvot muistiin.
kartta.read((char*)&tmp.maskr, 1);
kartta.read((char*)&tmp.maskg, 1);
kartta.read((char*)&tmp.maskb, 1);
//Siirrytään kartassa eteenpäin
kartta.seekg(820);
//Luetaan kartasta tilesetissä olevien tilejen määrä.
kartta.read((char*)&tmp.tiles, 4);
//Kartan tiilen leveys ja pituus
kartta.read((char*)&tmp.tilewidth, 4);
kartta.read((char*)&tmp.tileheight, 4);
//Kartan leveys ja pituus tileinä.
kartta.read((char*)&tmp.mapwidth, 4);
kartta.read((char*)&tmp.mapheight, 4);
if(!tmp.tiles>0)
{
cout<<"There's no tiles in tileset!";
cout<<"\nFunction aborted.";
kartta.close();
}
else if(!(tmp.tilewidth*tmp.tileheight) > 0)
{
cout<<"Tile overall size is 0.";
cout<<"\nFunction aborted.";
kartta.close();
}
else if(!(tmp.mapwidth*tmp.mapheight) > 0)
{
cout<<"Map overall size is 0.";
cout<<"\nFunction aborted.";
kartta.close();
}
int i, empty, x, y;
//Tarkistussummat
for(i = 1; i < 4; i++){
kartta.read((char*)&empty,1);
}
//Back-kerros
for(y = 1; y < tmp.mapheight; y++)
{
for(x = 1; y < tmp.mapwidth ; x++)
{
kartta.read((char*)&((tmp.tiledata[x])[y])[0], 4);
}
}
//Tarkistussummat
for(i = 1; i < 4; i++){
kartta.read((char*)&empty,1);
}
//Hit
for(y = 1; y < tmp.mapheight; y++)
{
for(x = 1; y < tmp.mapwidth ; x++)
{
kartta.read((char*)&((tmp.tiledata[x])[y])[2], 4);
}
}
//Tarkistussummat
for(i = 1; i < 4; i++){
kartta.read((char*)&empty,1);
}
//Over
for(y = 1; y < tmp.mapheight; y++)
{
for(x = 1; y < tmp.mapwidth ; x++)
{
kartta.read((char*)&((tmp.tiledata[x])[y])[1], 4);
}
}
for(i = 1; i < 4; i++){
kartta.read((char*)&empty,1);
}
//Data
for(y = 1; y < tmp.mapheight; y++)
{
for(x = 1; y < tmp.mapwidth ; x++)
{
kartta.read((char*)&((tmp.tiledata[x])[y])[3], 4);
}
}
}
kartta.close();
return tmp;
}
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: C++ -kysymykset
MaGetzUb wrote:Code: Select all
TILEMAP mappi;
Code: Select all
static TILEMAP mappi;
Re: C++ -kysymykset
Hmm, miksi tuo static, voisitko vähän selittääkkin? En nimittäin tunne ihan C++:n perustaa. Se on sitte kiva yrittää tulkita tietämättömästi, mitä yritätte tarkoittaa.
BTW, konsolissa ei näkynyt tekstiä.
BTW, konsolissa ei näkynyt tekstiä.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: C++ -kysymykset
Jos et laita staticia, luomasi olion elinaika loppuu sen poistuessa näkyvyysalueelta - eli tässä tapauksessa funktion palatessa.MaGetzUb wrote:Hmm, miksi tuo static, voisitko vähän selittääkkin? :) En nimittäin tunne ihan C++:n perustaa. Se on sitte kiva yrittää tulkita tietämättömästi, mitä yritätte tarkoittaa.
BTW, konsolissa ei näkynyt tekstiä.
Re: C++ -kysymykset
Jos aiot ladata CoolBasicin tilemapappeja, älä tee sitä noin. Tämä on paras esimerkki kuinka muistia ei hallita C++:ssa.MaGetzUb wrote:Tässä nyt pitäisi olla .til tiedostojen lataus C++:a mutta en tiedä kun se ei näyttäisi toimivan, kun ruvetaan lukemaan main funktiossa Tilemapin taulukkoon ylös otettua dataa(joka ladataan TILEMAP LoadMap funktiossa).. Ajattelin että tällä tavoin tämä kartta homma olisi paras toteuttaa..Code: Select all
uskomatonta C + C++ purkkaviritelmä shittiä.
A) std::map kontaineria EI OLE TARKOITETTU käytettäväksi tuolla tavalla!! Käytä mielluummin vain int taulukkoa: "int * layer = new int[koko_x * koko_y];" ja tilen osoitukseen kaavaa "index = y * koko_x + x" tämä on kymmeniä kertoja nopeampi ja käyttää vähemmän muistia. Jos välttämättä haluat vielä, että karttaa voidaan venyttää lennnosta, käytä std::vector< std::vector<int> * > kontaineria rivien säilytykseen ja johon pusketaan std::vector<int>:jä
B) Hyvä herra kirjoitat C++:aa TAI C:tä, et molempia. C++:ssa standardi kirjaston headereissa EI KÄYTETÄ .h päättettä. Ei missään. Ei edes C:n kirjastoissa, vaan esim #include <stdlib.h> tulee #include <cstdlib>.
C) new heapista ja auto pinosta.
Code: Select all
int * heappiluku = new int; // varataan muistia muuttujalle heapista jotta se säilyy kun esmes. kun poistutaan funktiosta.
int pinoluku; // varataan muistia muuttujalle pinosta eli muuttuja tuhoutuu nykyvyysalueensa ulkopuolella.
Jatkappas lukemista täällä: http://www.cplusplus.com/doc/tutorial/ (ohjelmointiputkassa on myös erittäin vaikuttava suomenkielinen C++ opas)
BTW. voisin opastaa sinua "kädestä pitäen" tilekartan tekemiseen. C++:lla.
-On selkeästi impulsiivinen koodaaja joka...
Re: C++ -kysymykset
Jotakin perusjuttuja voi löytää myös täältä. Toisaalta tuo on hieman vanhempi ja jotkin jutut saattaa olla jo vanhentunutta tietoa.
Re: C++ -kysymykset
No nii-in.. "Laittakaa natsi erään ja menkää itse perään." Minä kyselin teiltä neuvoja, mitään kunnollista/ymmärrettävää ei tullut. Ja nyt kun postasin luullakseni toimivan koodinpätkän, niin olin tehnyt sen väärin. Noh kiitos nyt noista jokseenkin epäselvistä neuvoista.JATothrim wrote:Jos aiot ladata CoolBasicin tilemapappeja, älä tee sitä noin. Tämä on paras esimerkki kuinka muistia ei hallita C++:ssa.MaGetzUb wrote:Tässä nyt pitäisi olla .til tiedostojen lataus C++:a mutta en tiedä kun se ei näyttäisi toimivan, kun ruvetaan lukemaan main funktiossa Tilemapin taulukkoon ylös otettua dataa(joka ladataan TILEMAP LoadMap funktiossa).. Ajattelin että tällä tavoin tämä kartta homma olisi paras toteuttaa..Code: Select all
uskomatonta C + C++ purkkaviritelmä shittiä.
A) std::map kontaineria EI OLE TARKOITETTU käytettäväksi tuolla tavalla!! Käytä mielluummin vain int taulukkoa: "int * layer = new int[koko_x * koko_y];" ja tilen osoitukseen kaavaa "index = y * koko_x + x" tämä on kymmeniä kertoja nopeampi ja käyttää vähemmän muistia. Jos välttämättä haluat vielä, että karttaa voidaan venyttää lennnosta, käytä std::vector< std::vector<int> * > kontaineria rivien säilytykseen ja johon pusketaan std::vector<int>:jä
B) Hyvä herra kirjoitat C++:aa TAI C:tä, et molempia. C++:ssa standardi kirjaston headereissa EI KÄYTETÄ .h päättettä. Ei missään. Ei edes C:n kirjastoissa, vaan esim #include <stdlib.h> tulee #include <cstdlib>.
C) new heapista ja auto pinosta.
Kuinka muuten sitten SDL:n kanssa, miten sen includetan ilman .h päätettä?
Solar Eclipse
We're in a simulation, and God is trying to debug us.
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ -kysymykset
SDL:n perään kuuluu se .h-pääte, koska se on C-kirjasto.MaGetzUb wrote:Kuinka muuten sitten SDL:n kanssa, miten sen includetan ilman .h päätettä?
Re: C++ -kysymykset
Hubz, tarkoitin siis että C/C++:n kääntäjän mukana tulevat standardikirjaston headerit pitäisi laittaa noin. Jos kirjasto on esim. itse asenneltu, niin ei ole väliä kuinka #include-ttelet niitä tiedostoja. Voit kokeilla #include <cstdlib>:n ja #include <stdlib.h> eroa: ensimmäinen syytää kaikki funktionsa järkevästi std:: nimiavaruuden alle, mutta toinen ei. (windows.h on C++ koodajalle yksi kauhistus, koska se saastuttaa globaalin nimiavaruuden pahanpäiväisesti. Kokeilin #includettaa windoows.h:n oman nimiavaruuden sisällä, mutta kääntäjä ei oikein pitänyt tästä. Se siitä sitten. )MaGetzUb wrote: No nii-in.. "Laittakaa natsi erään ja menkää itse perään." Minä kyselin teiltä neuvoja, mitään kunnollista/ymmärrettävää ei tullut. Ja nyt kun postasin luullakseni toimivan koodinpätkän, niin olin tehnyt sen väärin. Noh kiitos nyt noista jokseenkin epäselvistä neuvoista.
Kuinka muuten sitten SDL:n kanssa, miten sen includetan ilman .h päätettä?
-On selkeästi impulsiivinen koodaaja joka...
- Sami The Great
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 4:15 pm
- Contact:
Re: C++ -kysymykset
Sain ratkottua tuon aikaisemman ongelmani, mutta näyttää siltä, että SDL:n sisällyttäminen samaan ohjelmaan wxWidgets kirjaston kanssa ei oikein toimi, koska kun SDL:n video-osuuden alustaa, menee wxWidgets:in piirtojärjästykset perinpohjaisesti sekaisin Pitää siis vain unohtaa tämä yhdistelmä systeemi ja tehdä GUI pelkästään SDL:ää käyttäen. Olen siis tilemappi editoria tekemässä sekä omaa tilemappi formaattia ja sen piirtosysteemiä, johon olisi tarkoitus tulla tuki varjoille sekä eri muotoisille HIT-kerros palikoille (kolmiot sekä pienemmät neliöt kuin itse tile). Formaatin olen jo suunnitellut ja koodannut systeemin tiedon säilyttämiseen muistissa. Pitää välillä koodailla myös vähän C++:lla, ettei ihan pääse unohtumaan.
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
CoolBasickin käyttäjä vuodesta 2004.
Re: C++ -kysymykset
Eikös wxWidget tue OpenGL-ikkunoita? Mikset siis käyttäisi niitä?Sami The Great wrote:Sain ratkottua tuon aikaisemman ongelmani, mutta näyttää siltä, että SDL:n sisällyttäminen samaan ohjelmaan wxWidgets kirjaston kanssa ei oikein toimi, koska kun SDL:n video-osuuden alustaa, menee wxWidgets:in piirtojärjästykset perinpohjaisesti sekaisin :D Pitää siis vain unohtaa tämä yhdistelmä systeemi ja tehdä GUI pelkästään SDL:ää käyttäen. Olen siis tilemappi editoria tekemässä sekä omaa tilemappi formaattia ja sen piirtosysteemiä, johon olisi tarkoitus tulla tuki varjoille sekä eri muotoisille HIT-kerros palikoille (kolmiot sekä pienemmät neliöt kuin itse tile). Formaatin olen jo suunnitellut ja koodannut systeemin tiedon säilyttämiseen muistissa. Pitää välillä koodailla myös vähän C++:lla, ettei ihan pääse unohtumaan.
-
- Tech Developer
- Posts: 545
- Joined: Sun Aug 26, 2007 2:43 pm
- Location: Liminka
Re: C++ -kysymykset
SDL:n päälle voisin suositella Paragui-nimistä kirjastoa. Erittäin mallikkaasti toimivat GUI-komponentit. Projekti on nykyään kai jokseenkin kuollut, mutta tiedostot löytää vielä näppärästi googlailemalla ja ne ovat myös useiden linux-jakeluiden repoissaSami The Great wrote:Sain ratkottua tuon aikaisemman ongelmani, mutta näyttää siltä, että SDL:n sisällyttäminen samaan ohjelmaan wxWidgets kirjaston kanssa ei oikein toimi, koska kun SDL:n video-osuuden alustaa, menee wxWidgets:in piirtojärjästykset perinpohjaisesti sekaisin Pitää siis vain unohtaa tämä yhdistelmä systeemi ja tehdä GUI pelkästään SDL:ää käyttäen. Olen siis tilemappi editoria tekemässä sekä omaa tilemappi formaattia ja sen piirtosysteemiä, johon olisi tarkoitus tulla tuki varjoille sekä eri muotoisille HIT-kerros palikoille (kolmiot sekä pienemmät neliöt kuin itse tile). Formaatin olen jo suunnitellut ja koodannut systeemin tiedon säilyttämiseen muistissa. Pitää välillä koodailla myös vähän C++:lla, ettei ihan pääse unohtumaan.
CoolBasic henkilökuntaa
Kehittäjä
cbFUN Kello
cbSDL
Whale.dy.fi
<@cce> miltäs tuntuu olla suomen paras
Kehittäjä
cbFUN Kello
cbSDL
Whale.dy.fi
<@cce> miltäs tuntuu olla suomen paras
Re: C++ -kysymykset
tukee mutta siitä pitää säätää aika helvetillisesti. ProTip: overridaa ikkunan tyhjennys/whatever niin GL piirtyy nätisti. Mulla on tästä toimivahko viritelmä.esa94 wrote:Eikös wxWidget tue OpenGL-ikkunoita? Mikset siis käyttäisi niitä?Sami The Great wrote:Sain ratkottua tuon aikaisemman ongelmani, mutta näyttää siltä, että SDL:n sisällyttäminen samaan ohjelmaan wxWidgets kirjaston kanssa ei oikein toimi, koska kun SDL:n video-osuuden alustaa, menee wxWidgets:in piirtojärjästykset perinpohjaisesti sekaisin Pitää siis vain unohtaa tämä yhdistelmä systeemi ja tehdä GUI pelkästään SDL:ää käyttäen. Olen siis tilemappi editoria tekemässä sekä omaa tilemappi formaattia ja sen piirtosysteemiä, johon olisi tarkoitus tulla tuki varjoille sekä eri muotoisille HIT-kerros palikoille (kolmiot sekä pienemmät neliöt kuin itse tile). Formaatin olen jo suunnitellut ja koodannut systeemin tiedon säilyttämiseen muistissa. Pitää välillä koodailla myös vähän C++:lla, ettei ihan pääse unohtumaan.
-On selkeästi impulsiivinen koodaaja joka...
- Dibalo
- Advanced Member
- Posts: 298
- Joined: Mon Aug 27, 2007 8:12 pm
- Location: Espoo, Finland
- Contact:
Re: C++ -kysymykset
wxWidgetsin ja SDL:n yhdistämiseen löytyi puolen minuutin Googletuksen jälkeen varsin hyvä tuto: http://code.technoplaza.net/wx-sdl/part1/
Eipä tuo minusta kovin vaikealta näyttänyt.
Eipä tuo minusta kovin vaikealta näyttänyt.