C++ Projektit / Esimerkki koodit
- Sami The Great
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 4:15 pm
- Contact:
Re: C++ Projektit / Esimerkki koodit
No kolmas kerta toden sanoo nyt laitoin kaikki dll:ät mukaan ja käänsin koko homman uudestaan release modessa.
http://user.personal.fi/atk/QuickWaySof ... NewVer.rar
Toussa on uusi linkki ladatkaa uusi versio siitä. Aina näiden C++ ohjelmien kanssa saa tapella kun niitä yrittää jollain toisella koneella saada toimimaan
http://user.personal.fi/atk/QuickWaySof ... NewVer.rar
Toussa on uusi linkki ladatkaa uusi versio siitä. Aina näiden C++ ohjelmien kanssa saa tapella kun niitä yrittää jollain toisella koneella saada toimimaan
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
CoolBasickin käyttäjä vuodesta 2004.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: C++ Projektit / Esimerkki koodit
Ainakin tuo toimii : D Ja hienohan se on, tosin avaruudessa ilmanvastus on hieman häiritsevä asia :p Ja kamera voisi seurata pehmeästi, mutta se nyt on pientä tweakkailua vain.
Re: C++ Projektit / Esimerkki koodit
Yksi vaihtoehto on laittaa sorsakoodi messiin, mutta aina ei tietysti halua paljastaa lähdekoodia. Sitten voi tehdä .deb -installerin, joka siis toimii debian -pohjaisissa järjestelmissä. Muistaakseni eri prosessorityypit kuitenkin vaativat omat installerinsa.Sami345 wrote:Miten voisin korjata tilanteen ja saada sen toimimaan muillakin koneilla?
Toinen yleinen installerityyppi on .rpm, jota Red Hat ja siihen pohjautuvat käyttävät. (rpm = Red Hat Package Manager)
Semmosta. Tätä ei tosiaan Linuxissa ole turhan helpoksi tehty. Itse en ole viel ehtinyt perehtymään tarkemmin siihen, miten noita installereita luodaan.
Voittoja viikkokisoissa: 3
http://fugufish.dy.fi/ | vanhat cb-pelini: http://porzi.arkku.net/old_games/
http://fugufish.dy.fi/ | vanhat cb-pelini: http://porzi.arkku.net/old_games/
Re: C++ Projektit / Esimerkki koodit
Tuo minun peli toimii nyt, kun laitoin .so (vastaa Windowsin .dll) tiedostot mukaan.porzi wrote:Yksi vaihtoehto on laittaa sorsakoodi messiin, mutta aina ei tietysti halua paljastaa lähdekoodia. Sitten voi tehdä .deb -installerin, joka siis toimii debian -pohjaisissa järjestelmissä. Muistaakseni eri prosessorityypit kuitenkin vaativat omat installerinsa.Sami345 wrote:Miten voisin korjata tilanteen ja saada sen toimimaan muillakin koneilla?
Toinen yleinen installerityyppi on .rpm, jota Red Hat ja siihen pohjautuvat käyttävät. (rpm = Red Hat Package Manager)
Semmosta. Tätä ei tosiaan Linuxissa ole turhan helpoksi tehty. Itse en ole viel ehtinyt perehtymään tarkemmin siihen, miten noita installereita luodaan.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Re: C++ Projektit / Esimerkki koodit
Ei ainakaan mulla toimi, vaan valittaa yhä samaa. (Kyllä ne tiedostot siinä näkyi, mutta valitti silti... ei kyl mitään hajua, mistä johtuu.)Sami345 wrote:Tuo minun peli toimii nyt, kun laitoin .so (vastaa Windowsin .dll) tiedostot mukaan.
Ja siis vaikka laittaisit mitkä filut mukaan kun olet kääntänyt ohjelman yhdellä prosessorityypillä... (intel/amd/32/64), sen ei ainakaan pitäisi toimia muilla. Tuo prosessorin bittisyys tosin määräytyy käyttiksen bittisyyden mukaan. 64 koneelle voi asentaa myös 32 järjestelmän, jolloin se käyttää 32 bittisiä binääri -tiedostojakin. Mutta tämä ongelma näyttäisi olevan jossain muussa, koska valittaa tosta sdl_gfx:stä.
Voittoja viikkokisoissa: 3
http://fugufish.dy.fi/ | vanhat cb-pelini: http://porzi.arkku.net/old_games/
http://fugufish.dy.fi/ | vanhat cb-pelini: http://porzi.arkku.net/old_games/
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ Projektit / Esimerkki koodit
WormZ
Taas pukkaa projektia; tällä kertaa matopeli, WormZ. Koodi tulee mukana, mutta se on melkoista purkkaa ja huonosti koodattua. Kertokaa kokeiltuanne toimiiko koneellanne.
Lataus.
Niin ja pistäkää ihmeessä ennätyksiännekin ;) Omani on tällä hetkellä 37.
Taas pukkaa projektia; tällä kertaa matopeli, WormZ. Koodi tulee mukana, mutta se on melkoista purkkaa ja huonosti koodattua. Kertokaa kokeiltuanne toimiiko koneellanne.
Lataus.
Niin ja pistäkää ihmeessä ennätyksiännekin ;) Omani on tällä hetkellä 37.
Re: C++ Projektit / Esimerkki koodit
Tässä nyt viimein se lupailemani Windows-versio pelistäni.
[/edit]
EDIT:
Saatte koodinkin:
Code: Select all
#include <SDL\SDL.h>
#include <SDL\SDL_rotozoom.h>
#include <SDL\SDL_ttf.h>
#include <cmath>
#include <cstdio>
void DrawImage(SDL_Surface *kuva, SDL_Surface *naytto,int x, int y);
void Text(int x,int y,char text[],TTF_Font *font,SDL_Surface *naytto,int r,int g,int b);
int main ( int argc, char** argv )
{
bool exit = false;
int reload[2] = {0,0};
int elama[2] = {100,100};
int start_time = 0;
int frame_time = 1;
double koordinaattit[2][3];
char temp_str[100];
koordinaattit[1][0] = -300;
koordinaattit[1][1] = -200;
koordinaattit[1][2] = 0;
koordinaattit[0][0] = 300;
koordinaattit[0][1] = 200;
koordinaattit[0][2] = 180;
double ammukset[100][3];
for(int i = 0;i<100;i++)
{
ammukset[i][2] = -1;
}
const long double PII = 3.141592653589793238462643383279L;
Uint8* nappi;
SDL_Event tapahtuma;
SDL_Surface* naytto;
SDL_Surface* ukko;
SDL_Surface* ammus;
SDL_Surface* temp;
TTF_Font *font;
if( SDL_Init(SDL_INIT_VIDEO) < 0 )
{
fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError());
return 0;
}
if(TTF_Init()==-1) {
printf("TTF_Init: %s\n", TTF_GetError());
return 0;
}
font=TTF_OpenFont("media/arial.ttf", 32);
if(!font) {
printf("TTF_OpenFont: %s\n", TTF_GetError());
// handle error
}
naytto = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
ukko = SDL_LoadBMP("media/soldier.bmp");
ammus = SDL_LoadBMP("media/bullet.bmp");
SDL_SetColorKey(ukko, SDL_SRCCOLORKEY, SDL_MapRGB(ukko->format,0,0,0));
while(!exit)
{
start_time = SDL_GetTicks();
sprintf (temp_str, "Pelaaja 1 elämä: %d Pelaaja 2 elämä: %d FPS: %d", elama[0], elama[1], 1000/frame_time);
Text(0,0,temp_str,font,naytto,255,255,255);
SDL_PollEvent(&tapahtuma);
if ( tapahtuma.type == SDL_QUIT ) { exit = true; } //poistumistapahtuma
nappi = SDL_GetKeyState(NULL);
if ( nappi[SDLK_UP] ) { koordinaattit[0][1] -= sin(PII*koordinaattit[0][2]/180)*frame_time/10.0; koordinaattit[0][0] += cos(PII*koordinaattit[0][2]/180)*frame_time/10.0; }
if ( nappi[SDLK_DOWN] ) { koordinaattit[0][1] += sin(PII*koordinaattit[0][2]/180)*frame_time/15.0; koordinaattit[0][0] -= cos(PII*koordinaattit[0][2]/180)*frame_time/15.0; }
if ( nappi[SDLK_LEFT] ) { koordinaattit[0][2] += frame_time/5.0; }
if ( nappi[SDLK_RIGHT]) { koordinaattit[0][2] -= frame_time/5.0; }
if ( nappi[SDLK_RCTRL] and reload[0] == 0)
{
int i = 0;
while(ammukset[i][2] != -1) i++;
ammukset[i][2] = koordinaattit[0][2];
ammukset[i][0] = koordinaattit[0][0] + cos(PII*ammukset[i][2]/180)*23;
ammukset[i][1] = koordinaattit[0][1] - sin(PII*ammukset[i][2]/180)*23;
reload[0] = 60;
}
if ( nappi[SDLK_w] ) { koordinaattit[1][1] -= sin(PII*koordinaattit[1][2]/180)*frame_time/10.0; koordinaattit[1][0] += cos(PII*koordinaattit[1][2]/180)*frame_time/10.0; }
if ( nappi[SDLK_s] ) { koordinaattit[1][1] += sin(PII*koordinaattit[1][2]/180)*frame_time/15.0; koordinaattit[1][0] -= cos(PII*koordinaattit[1][2]/180)*frame_time/15.0; }
if ( nappi[SDLK_a] ) { koordinaattit[1][2] += frame_time/5.0; }
if ( nappi[SDLK_d] ) { koordinaattit[1][2] -= frame_time/5.0; }
if ( nappi[SDLK_LCTRL] and reload[1] == 0)
{
int i = 0;
while(ammukset[i][2] != -1) i++;
ammukset[i][2] = koordinaattit[1][2];
ammukset[i][0] = koordinaattit[1][0] + cos(PII*ammukset[i][2]/180)*23;
ammukset[i][1] = koordinaattit[1][1] - sin(PII*ammukset[i][2]/180)*23;
reload[1] = 60;
}
if ( nappi[SDLK_ESCAPE] ) { exit = true; }
for(int i = 0;i<2;i++)
{
if(reload[i] > 0) reload[i]--;
temp = rotozoomSurface(ukko, koordinaattit[i][2], 1, 0);
DrawImage(temp,naytto,koordinaattit[i][0],koordinaattit[i][1]);
SDL_FreeSurface(temp);
if(elama[i] < 1)
{
SDL_FillRect(naytto, 0, SDL_MapRGB(naytto->format, 0, 0, 0));
sprintf (temp_str, "Pelaaja %d kuoli! Pelaaja %d voitti!", elama[0], elama[1], 1000/frame_time);
Text(0,0,temp_str,font,naytto,255,255,255);
exit = true;
}
}
for(int i = 0;i<100;i++)
{
if(ammukset[i][2] != -1)
{
temp = rotozoomSurface(ammus, ammukset[i][2], 1, 0);
DrawImage(temp,naytto,ammukset[i][0],ammukset[i][1]);
SDL_FreeSurface(temp);
ammukset[i][0] += cos(PII*ammukset[i][2]/180)*frame_time/2.0;
ammukset[i][1] -= sin(PII*ammukset[i][2]/180)*frame_time/2.0;
double temp1;
double temp2;
temp1 = koordinaattit[0][0]-ammukset[i][0];
temp2 = koordinaattit[0][1]-ammukset[i][1];
if(sqrt(temp1*temp1 + temp2*temp2)<23) {elama[0] -= 5; ammukset[i][2] = -1;}
temp1 = koordinaattit[1][0]-ammukset[i][0];
temp2 = koordinaattit[1][1]-ammukset[i][1];
if(sqrt(temp1*temp1 + temp2*temp2)<23) {elama[1] -= 5; ammukset[i][2] = -1;}
if(ammukset[i][0] < -400 or ammukset[i][0] > 400 or ammukset[i][1] < -300 or ammukset[i][1] > 300) ammukset[i][2] = -1;
}
}
for(int i = 0;i<2;i++)
{
if(elama[i] < 1)
{
SDL_FillRect(naytto, 0, SDL_MapRGB(naytto->format, 0, 0, 0));
sprintf (temp_str, "Pelaaja %d kuoli! Pelaaja %d voitti! Jatka painamalla entteriä.",i + 1,!i + 1);
Text(0,0,temp_str,font,naytto,255,255,255);
exit = true;
SDL_Flip(naytto);
do
{
SDL_WaitEvent(&tapahtuma);
nappi = SDL_GetKeyState(NULL);
}while(!nappi[SDLK_RETURN]);
}
}
SDL_Flip(naytto);
SDL_FillRect(naytto, 0, SDL_MapRGB(naytto->format, 0, 0, 0));
frame_time = SDL_GetTicks() - start_time;
}
TTF_CloseFont(font);
SDL_FreeSurface(ukko);
SDL_FreeSurface(ammus);
printf("Ohjelman suoritus päättyi\n");
SDL_Quit();
return 0;
}
void DrawImage(SDL_Surface *kuva, SDL_Surface *naytto,int x, int y)
{
SDL_Rect alue;
alue.x = x - (kuva->w >> 1) + (naytto->w >> 1);
alue.y = y - (kuva->h >> 1) + (naytto->h >> 1);
SDL_BlitSurface(kuva,NULL,naytto,&alue);
}
void Text(int x,int y,char text[],TTF_Font *font,SDL_Surface *naytto,int r,int g,int b)
{
SDL_Surface* temp;
SDL_Color color = {255,255,255};
SDL_Rect alue;
temp = TTF_RenderUTF8_Blended(font,text,color);
alue.x = x;
alue.y = y;
SDL_BlitSurface(temp,NULL,naytto,&alue);
SDL_FreeSurface(temp);
}
- Attachments
-
- Ammuskelu_win.zip
- Windows-versio
- (816.81 KiB) Downloaded 389 times
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Re: C++ Projektit / Esimerkki koodit
Sori tuplapostaus, mutta täytyy nostaa.
Olen tässä pari päivää työstänyt projektia nimeltä Samin tietokilpailu. (Syyttäkää mielikuvitustani huonosta nimestä. ) Peliä pelataan Buzz!-summereilla. Aijon tulevaisuudessa lisätä näppäimistön tuen. Peliä voi pelata enintää 4 pelaajaa yhtäaikaa. Nyt on tullut aika julkaista ensimmäinen beta. Bugeista ja kielioppivirheistä saa ilmoittaa. Myöskin kehitys ehdotuksia ja kritiikkiä saa laittaa.
Huom. Jos fonttikansiosi ei ole C:\Windows\Fonts\, niin sinun täytyy vaihtaa se settings.ini tiedostosta, joka löytyy kansiosta data.
Seuraavaan versioon tulossa:
-Näppäimistön tuki
-Älykkäämpi pisteiden lasku
Screenshotti: Lataus:
Olen tässä pari päivää työstänyt projektia nimeltä Samin tietokilpailu. (Syyttäkää mielikuvitustani huonosta nimestä. ) Peliä pelataan Buzz!-summereilla. Aijon tulevaisuudessa lisätä näppäimistön tuen. Peliä voi pelata enintää 4 pelaajaa yhtäaikaa. Nyt on tullut aika julkaista ensimmäinen beta. Bugeista ja kielioppivirheistä saa ilmoittaa. Myöskin kehitys ehdotuksia ja kritiikkiä saa laittaa.
Huom. Jos fonttikansiosi ei ole C:\Windows\Fonts\, niin sinun täytyy vaihtaa se settings.ini tiedostosta, joka löytyy kansiosta data.
Seuraavaan versioon tulossa:
-Näppäimistön tuki
-Älykkäämpi pisteiden lasku
Screenshotti: Lataus:
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ Projektit / Esimerkki koodit
Koodasin tällaisen pienen lausekkeen laskijan, saa käyttää vapaasti. Laskee nopeasti ja virheettömästi.
Code: Select all
/* Calculator in C++
By Kari Rantanen 2009 */
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <sstream>
using namespace std;
double Calculate (string Exp, int *i = 0L)
{
string Ops = "#+-*/^", Contain;
int Order[] = { 0, 1, 1, 2, 2, 3 };
vector <double> Data;
bool HasNum = 0, IsMinus = 0;
if (!i) i = new int(0);
for (*i; *i < Exp.length()+1; (*i)++)
{
Exp[*i] += (Exp[*i]>='A' && Exp[*i]<='Z')*32;
char Here = Exp[*i];
if (Here == ' ' || Here == '\t') continue;
if (Here == '(')
{
(*i)++;
Data.push_back (Calculate (Exp, i) * (1-IsMinus*2));
IsMinus = 0;
HasNum = 1;
continue;
}
if ((Ops.find (Here) != -1 || (*i == Exp.length() || Here == ')')) && Ops.find(Exp[*i-1]) == -1)
{
IsMinus = 0;
if (*i == Exp.length() || Here == ')') Here = '#';
Here = Ops.find(Here);
if (!HasNum)
{
double Convert;
istringstream Stream (Contain);
Stream >> Convert;
Data.push_back (Convert);
}
HasNum = 0;
while (Data.size() >= 3)
{
double b = Data[Data.size()-1];
char Oper = Data[Data.size()-2];
double a = Data[Data.size()-3];
if (Order[Oper] < Order[Here]) break;
Data.erase (Data.end()-3, Data.end());
switch (Oper)
{
case 1: Data.push_back (a + b); break;
case 2: Data.push_back (a - b); break;
case 3: Data.push_back (a * b); break;
case 4: Data.push_back (a / b); break;
case 5: Data.push_back (pow (a, b)); break;
}
}
if (Exp[*i] == ')') return Data[0];
if (Here) Data.push_back (Here);
Contain = "";
continue;
}
if (Here == '-') IsMinus = 1;
Contain += Here;
}
return Data[0];
}
int main()
{
cout << Calculate ("(100+123*0.1)/-13.0+(2.0+(6+(-7-2)+8.0)*(34/2)-3^(-2+1))^0.5") << endl;
}
Re: C++ Projektit / Esimerkki koodit
Onkos olemassa tietotyyppi long double?Grandi wrote:Koodasin tällaisen pienen lausekkeen laskijan, saa käyttää vapaasti. Laskee nopeasti ja virheettömästi.Code: Select all
/* Calculator in C++ By Kari Rantanen 2009 */ #include <iostream> #include <string> #include <vector> #include <cmath> #include <sstream> using namespace std; double Calculate (string Exp, int *i = 0L) { string Ops = "#+-*/^", Contain; int Order[] = { 0, 1, 1, 2, 2, 3 }; vector <double> Data; bool HasNum = 0, IsMinus = 0; if (!i) i = new int(0); for (*i; *i < Exp.length()+1; (*i)++) { Exp[*i] += (Exp[*i]>='A' && Exp[*i]<='Z')*32; char Here = Exp[*i]; if (Here == ' ' || Here == '\t') continue; if (Here == '(') { (*i)++; Data.push_back (Calculate (Exp, i) * (1-IsMinus*2)); IsMinus = 0; HasNum = 1; continue; } if ((Ops.find (Here) != -1 || (*i == Exp.length() || Here == ')')) && Ops.find(Exp[*i-1]) == -1) { IsMinus = 0; if (*i == Exp.length() || Here == ')') Here = '#'; Here = Ops.find(Here); if (!HasNum) { double Convert; istringstream Stream (Contain); Stream >> Convert; Data.push_back (Convert); } HasNum = 0; while (Data.size() >= 3) { double b = Data[Data.size()-1]; char Oper = Data[Data.size()-2]; double a = Data[Data.size()-3]; if (Order[Oper] < Order[Here]) break; Data.erase (Data.end()-3, Data.end()); switch (Oper) { case 1: Data.push_back (a + b); break; case 2: Data.push_back (a - b); break; case 3: Data.push_back (a * b); break; case 4: Data.push_back (a / b); break; case 5: Data.push_back (pow (a, b)); break; } } if (Exp[*i] == ')') return Data[0]; if (Here) Data.push_back (Here); Contain = ""; continue; } if (Here == '-') IsMinus = 1; Contain += Here; } return Data[0]; } int main() { cout << Calculate ("(100+123*0.1)/-13.0+(2.0+(6+(-7-2)+8.0)*(34/2)-3^(-2+1))^0.5") << endl; }
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: C++ Projektit / Esimerkki koodit
Eikös se olisi sitten tarkempi ja 'virheettömämpi' kuin double, jota koodissasi käytätGrandi wrote:On.
- Zero
- Lead Developer
- Posts: 727
- Joined: Sun Aug 26, 2007 2:30 pm
- Location: Helsinki, Finland
- Contact:
Re: C++ Projektit / Esimerkki koodit
Mutta myös aika reilusti hitaampi...
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic
http://www.coolbasic.com/blog
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: C++ Projektit / Esimerkki koodit
Kuten Zerpa sanoi, long double vaatii enemmän laskentatehoa, sillä siinä on yksinkertaisesti enemmän dataa. Kuitenkin jo normaali double on niin tarkka, että jos sitä osaa käyttää oikein, sen tarkkuus kyllä riittää, mikäli ei ole kyse mistään tieteellisestä analyysista, tms. erityistä tarkkuutta vaativasta hommasta.esa94 wrote:Eikös se olisi sitten tarkempi ja 'virheettömämpi' kuin double, jota koodissasi käytätGrandi wrote:On.
Taskulaskimesi nimittäin antaa todennäköisesti max. 10 numeron tarkkuuden, kun 64-bittisen doublen 52:n bitin mantissalla päästään parhaimmillaan log10(2^53) ≃ 16 numeron tarkkuuteen. Vastaava long doublen tarkkuus (112-bittisellä mantissalla) on älytön log10(2^113) ≃ 34 numeroa.
Yritäpä vaikka huviksesi mitata pituutesi 16 merkitsevän numeron tarkkuudella. Näin esimerkkinä sanottakoon, että rullamitalla, johon on merkitty millimetrit, pääsee 4:n merkitsevän numeron tarkkuuteen
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Re: C++ Projektit / Esimerkki koodit
On muuten aikas hyvä opas, jos C++ haluaa opetella, tuo ohjelmointiputkaan putkahtanut (heh..) Peliohjelmointi C++:lla: matopeli opas
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
- Sami The Great
- Advanced Member
- Posts: 485
- Joined: Tue Aug 28, 2007 4:15 pm
- Contact:
Re: C++ Projektit / Esimerkki koodit
Pääsee vähän nostelemaan tätäkin vanhaa aihetta. Eli olen tässä aikani kuluksi koodaillut C++:lla tälläistä harjoitusprojektia, jonka nimi tällä hetkellä on Magiester's Stand. Peli tulee olemaan Tower Defence tyyppinen, jossa sinulla on kukkulan päällä torni, johon helvetin joukot yrittävät tunkeutua yön tullen (päivällä pystyy rakentamaan uusia torneja ja puolustuksia). Tehtävänä on tuhota ne ennen kuin ne hajottavat tornin oven. Vihollisia tuhotaan ampumalla niitä tornista erilaisilla loitsuilla sekä tienvarsille asetettavilla jousiampujilla/muilla härpäkkeillä. Tällä hetkellä peli on ihan alkuvaiheessa, joten mitään pelattavaa ei vielä ole. Olen kasaillut peruspelimoottoria sekä tehnyt grafiikkaa, josta sekään kaikki ei ole vielä itse pelissä. Projektin ei ole tarkoitus olla mikään hirveän pitkä, joten pidän sen yksinkertaisena, jotta kerkeän saada sen joskus valmiiksikin, kun koodaamaan pääsen vain viikonloppusin. Tämän viikonlopun kovan työn tuloksena sain vihdoin valmiiksi maaston ja sen textuurit peliin. Textuurit ovat 4-komponenttisia, joten ne näyttävät vähän paremmalta, kuin pelkkä perus kuvatextuuri. Maastossa on 6 eri textuuri kerrosta, jotka ovat alpha blend- tekniikalla sommiteltu päällekkäin. Tarkoitus olisi vielä lisätä maastoon tuulessa heiluvaa ruohoa ja joitain kukkia sekä isoja kiviä, puita ja muuta kasvillisuutta. Kirjastoina toimivat OGRE3D(grafiikka), PhysX(fysiikka ja törmäykset), IrrKlang(äänet), OIS(input) sekä MyGUI(käyttöliittymä). Lisäksi veden renderöintiin käytän valmista lisäkirjastoa nimeltä Hydrax. Tässä kuvaa tämän hetkisestä peliruudusta:
http://www.rockodilegames.com
CoolBasickin käyttäjä vuodesta 2004.
CoolBasickin käyttäjä vuodesta 2004.
Re: C++ Projektit / Esimerkki koodit
Huh... Kuulostaa hienolta ja näyttää myös mikäli tuosta yhdestä kuvasta nyt voi mitää päätellä.Sami The Great wrote:Pääsee vähän nostelemaan tätäkin vanhaa aihetta. Eli olen tässä aikani kuluksi koodaillut C++:lla tälläistä harjoitusprojektia, jonka nimi tällä hetkellä on Magiester's Stand. Peli tulee olemaan Tower Defence tyyppinen, jossa sinulla on kukkulan päällä torni, johon helvetin joukot yrittävät tunkeutua yön tullen (päivällä pystyy rakentamaan uusia torneja ja puolustuksia). Tehtävänä on tuhota ne ennen kuin ne hajottavat tornin oven. Vihollisia tuhotaan ampumalla niitä tornista erilaisilla loitsuilla sekä tienvarsille asetettavilla jousiampujilla/muilla härpäkkeillä. Tällä hetkellä peli on ihan alkuvaiheessa, joten mitään pelattavaa ei vielä ole. Olen kasaillut peruspelimoottoria sekä tehnyt grafiikkaa, josta sekään kaikki ei ole vielä itse pelissä. Projektin ei ole tarkoitus olla mikään hirveän pitkä, joten pidän sen yksinkertaisena, jotta kerkeän saada sen joskus valmiiksikin, kun koodaamaan pääsen vain viikonloppusin. Tämän viikonlopun kovan työn tuloksena sain vihdoin valmiiksi maaston ja sen textuurit peliin. Textuurit ovat 4-komponenttisia, joten ne näyttävät vähän paremmalta, kuin pelkkä perus kuvatextuuri. Maastossa on 6 eri textuuri kerrosta, jotka ovat alpha blend- tekniikalla sommiteltu päällekkäin. Tarkoitus olisi vielä lisätä maastoon tuulessa heiluvaa ruohoa ja joitain kukkia sekä isoja kiviä, puita ja muuta kasvillisuutta. Kirjastoina toimivat OGRE3D(grafiikka), PhysX(fysiikka ja törmäykset), IrrKlang(äänet), OIS(input) sekä MyGUI(käyttöliittymä). Lisäksi veden renderöintiin käytän valmista lisäkirjastoa nimeltä Hydrax. Tässä kuvaa tämän hetkisestä peliruudusta: kuva
Re: C++ Projektit / Esimerkki koodit
Nostelen kans vähän aihetta. Että niin, kuinka tämä Makefilen "rakennus" onnistuu MingW kääntäjällä? (GNU GCC) Olen nyt vihdoinkin ottanut itseäni niskasta kii ja hypännyt C++:n pariin. Onnistuin jopa linkkaamaan kirjastoja ilman kenenkään apuja. \o/
EDIT:
Niin siis olen buildaamassa SDL_gfx:n makefileä.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: C++ Projektit / Esimerkki koodit
Lataa MSYS. Siinä tulee mukana "make".MaGetzUb wrote:Nostelen kans vähän aihetta. Että niin, kuinka tämä Makefilen "rakennus" onnistuu MingW kääntäjällä? (GNU GCC) Olen nyt vihdoinkin ottanut itseäni niskasta kii ja hypännyt C++:n pariin. Onnistuin jopa linkkaamaan kirjastoja ilman kenenkään apuja. \o/EDIT:Niin siis olen buildaamassa SDL_gfx:n makefileä.
Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
Re: C++ Projektit / Esimerkki koodit
mingw32-makeSami345 wrote:Lataa MSYS. Siinä tulee mukana "make".MaGetzUb wrote:Nostelen kans vähän aihetta. Että niin, kuinka tämä Makefilen "rakennus" onnistuu MingW kääntäjällä? :) (GNU GCC) Olen nyt vihdoinkin ottanut itseäni niskasta kii ja hypännyt C++:n pariin. Onnistuin jopa linkkaamaan kirjastoja ilman kenenkään apuja. \o/EDIT:Niin siis olen buildaamassa SDL_gfx:n makefileä. :)
mut MSYSin on kyl parempi