Forum » Programiranje » c++ enum
c++ enum
aaaaa93 ::
Problem glede menjave med menijem in igro:
Meni ugotovi da je bil kliknjen now game ampak ne prestavi da bi nato zalavfal igro;
Opredelitev problema:
Slika:
Slika: prikazuje 0 pomeni da je prestavil na game play 1 pomeni da smo še v menuju, tako kot vidiš zazna, da smo nekaj delali z gumbi vendar ne prestavi
(zgornju button je new game spodnji exit;)))
Deklaracija enuma:
Klik na miško, kot vidiš spodaj prestavim na GAME_PLAY, vendar čez 100/fps je spet v menu načinu ;(:
drugi gum exit(1) mi pa zazna čudno to..
main
update
display
Meni ugotovi da je bil kliknjen now game ampak ne prestavi da bi nato zalavfal igro;
Opredelitev problema:
Slika:
Slika: prikazuje 0 pomeni da je prestavil na game play 1 pomeni da smo še v menuju, tako kot vidiš zazna, da smo nekaj delali z gumbi vendar ne prestavi
(zgornju button je new game spodnji exit;)))
Deklaracija enuma:
enum game_state_e {
GAME_PLAY,
GAME_MENU
};
game_state_e gameState = GAME_MENU;
//podam da na začetku vrže na new menu !!!!!!!
Klik na miško, kot vidiš spodaj prestavim na GAME_PLAY, vendar čez 100/fps je spet v menu načinu ;(:
void MouseButton(int button,int state,int x, int y)
{
if (state == GLUT_DOWN)
{ //IsClicked(x, y);
switch(button)
{
case GLUT_LEFT_BUTTON:
for( int i=0; i< vGumbi.size(); i++ )
{
if( vGumbi.at(i)->IsClicked(x,y) )
{
if( !strcmp(vGumbi.at(i)->GetName(), "gumb_nova_igra"))
{
game_state_e gameState=GAME_PLAY;
}
else if( !strcmp(vGumbi.at(i)->GetName(), "exit"))
{
exit(1);
// printf("zapri");
}
break;
}
//printf("button pressed at (%d,%d)\n",x,y);
}
glutPostRedisplay();
}
}}
game_state_e gameState = GAME_MENU;drugi gum exit(1) mi pa zazna čudno to..
main
int main(int argc, char** argv) // <---------------------------------------MAIN
{ for( int i=0; i<256; i++)
{
tip[i] = false;
}
srand((unsigned)time(0));
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowPosition(10, 10);
glutInitWindowSize(width, height);
glutCreateWindow("Krneki");
if(gameState==GAME_MENU)
{
Gumb *btn = new Gumb();
btn->Set( 128, 128, 100, 20);
btn->SetName ( "gumb_nova_igra");
vGumbi.push_back( btn );
Gumb *bun = new Gumb();
bun->Set( 128, 180, 100, 20);
bun->SetName ( "exit");
vGumbi.push_back( bun );
glutMouseFunc(MouseButton);
glutDisplayFunc(display);
glutTimerFunc(100/FPS, Update, 1); // <--------
glutMainLoop();
}
else if(gameState==GAME_PLAY)
{
for (int i=0; i<ASTEROIDS; i++) {
asteroids.push_back(new Asteroid());}
// cout << asteroids[i]->x << " " << asteroids[i]->y << endl;
for (int j=0; j<ST_NASPROTNIH_LADIJ; j++) {
listasovraznih_ladij.push_back(new sovrazna_ladja());
// cout<<" ladja ustvarjena ";
}
ship = new Ship();
// pri inicializacije ne pozabi
glEnable(GL_TEXTURE_2D);
// load
my_texture = SOIL_load_OGL_texture
(
"Data/NeHe.bmp",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
my_texture2 = SOIL_load_OGL_texture
(
"Data/sovraznaladja.bmp",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
my_texture3 = SOIL_load_OGL_texture
(
"Data/morje.bmp",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
my_texture4 = SOIL_load_OGL_texture
(
"Data/asteroidi.bmp",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
glutKeyboardFunc(tipkovnica);
glutKeyboardUpFunc(tipkovnica2);
glutMouseFunc(MouseButton);
glutDisplayFunc(display);
// glutReshapeFunc(reshape);
glutTimerFunc(100/FPS, Update, 1); // <--------
glutMainLoop();
}
return 1;
// system("pouse");
}
update
static void Update(int value)
{
if(gameState == GAME_MENU)
{
cout<<gameState;
// display();
glutTimerFunc(100/FPS, Update, 1); // <--------
}
else if(gameState == GAME_PLAY)
{
if((listasovraznih_ladij.size()==0)||(ship->zdravje<=0))
{
if(listasovraznih_ladij.size()==0)
{
glutDisplayFunc(victory); // Register The Display Function
glutIdleFunc(victory);
// victory();
// if(stevec==20)
//exit(1);
// glutTimerFunc(1000/FPS,victory(), 1);
}
else if(ship->zdravje<=0)
{
//cout<<" "<<"hastala vistalas ubila si mojo ladjo prasica"<<" ";
glutDisplayFunc(lost); // Register The Display Function
glutIdleFunc(lost);
// victory();
//exit(1);
}
}
else
{
glutTimerFunc(100/FPS, Update, 1);
}
// Bonus->bonus
pritisni();
glutPostRedisplay();
ship->move();
reorder();
for (int i=0; i<asteroids.size(); i++)
asteroids.at(i)->move();
for (int i=0; i<listasovraznih_ladij.size(); i++)
listasovraznih_ladij.at(i)->move();
//dodajanje mojih metkov v vektor
for( int i=0; i<listaMetkov.size(); i++ )
{
// preverjanje
if( !listaMetkov.at(i)->readytoclear )
listaMetkov.at( i )->move();
else
{
listaMetkov.erase( listaMetkov.begin() + i);
}
}
//dodajanje nasprotnih metkov v vektor
for( int j=0; j<listanaspMetkov.size(); j++ )
{
if( !listanaspMetkov.at(j)->naspreadytoclear )
listanaspMetkov.at( j )->move();
else
listanaspMetkov.erase( listanaspMetkov.begin() + j);
}
//preverjanje streljanje moje ladje
//stevecmetkov spusti 25 metkov potem pa 350ml sekund presledek
if(stevecmetkov<25)
{
if( lahkoStreljas == false )
{
tmrStrel++;
if( tmrStrel==5)
{
tmrStrel=0;
lahkoStreljas = true;
}
}
}
else
{
tmrStrel++;
if( tmrStrel==350)
{
tmrStrel=0;
lahkoStreljas = true;
stevecmetkov=0;
}
}
//
for (int i=0; i<listasovraznih_ladij.size(); i++)
{
double dx = ship->x -listasovraznih_ladij[i]-> ladx;
double dy = ship->y -listasovraznih_ladij[i]-> lady;
dx=sqrt(dx*dx);
dy=sqrt(dy*dy);
if(dx<(1.0)&&dy<(0.2))
{
if ( lahkoStreljasnasp == true )
{
listanaspMetkov.push_back(new naspmetki());
lahkoStreljasnasp = false; //<------------------------
// cout<<"Metek ustvarjen";
// cout<<listaMetkov.size();
}
}
}
if(stevecnaspmetkov<25)
{
if( lahkoStreljasnasp == false )
{
tmrStrelnasp++;
if( tmrStrelnasp==5)
{
tmrStrelnasp=0;
lahkoStreljasnasp = true;
}
}
}
else
{
tmrStrelnasp++;
if( tmrStrelnasp==350)
{
tmrStrelnasp=0;
lahkoStreljasnasp = true;
stevecnaspmetkov=0;
}
}
collision();
// cout<<"zdravja je še"<<ship->zdravje;
for (int j=0; j<listasovraznih_ladij.size(); j++) {
if(listasovraznih_ladij[j]->zdravjenasp<=0)
{
// cout<<" "<<"hastala vistalas"<<" ";
listasovraznih_ladij.erase( listasovraznih_ladij.begin()+ j);
j--;
} }
for(int i=0; i<asteroids.size(); i++) {
for(int j=0; j<listaMetkov.size(); j++) {
double dx = asteroids[i]->x - listaMetkov[j]->x;
double dy = asteroids[i]->y - listaMetkov[j]->y;
double r = asteroids[i]->maxR + listaMetkov[j]->r;
if(dx*dx + dy*dy < r*r) {
listaMetkov[j]->strel=0;
listaMetkov[j]->readytoclear=1;
}}}
for(int i=0; i<asteroids.size(); i++) {
for(int j=0; j<listanaspMetkov.size(); j++) {
double dx = asteroids[i]->x - listanaspMetkov[j]->x;
double dy = asteroids[i]->y - listanaspMetkov[j]->y;
double r = asteroids[i]->maxR + listanaspMetkov[j]->r;
if(dx*dx + dy*dy < r*r) {
listanaspMetkov[j]->naspstrel=0;
listanaspMetkov[j]->naspreadytoclear=1;
}}}
stevecbonus++;
if(stevecbonus==stevecbonus2)
{
stevecbonus2=stevecbonus2+100;
stevecbonus=0;
Bonus.push_back(new bonus());
}
}
}display
static void display(void) {
// te tri vrstice naj bodo vedno na začetku
// izrisi meni
if(gameState==GAME_MENU)
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glLoadIdentity();
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0, width, height, 0, 0, 1);
glMatrixMode (GL_MODELVIEW);
for( int i=0; i< vGumbi.size(); i++ )
{
vGumbi.at(i)->Draw();
}
glutSwapBuffers();
/* glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0, width, height, 0, 0, 1);
glMatrixMode (GL_MODELVIEW);
glBegin(GL_QUADS);
for(int i = 0; i < 2; i++) {
glColor3f(1.0f, 1.0f, 1.0f);
glVertex2f(100.0f, 320 - i*50);
glVertex2f(300.0f, 320 - i*50);
glVertex2f(300.0f, 320 - (i*50)+30);
glVertex2f(100.0f, 320 - (i*50)+30);
}
glEnd();
// izriši kazalec v meniju glede na stanje menija
if(menuState == MENU_NEWGAME)
{
glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(60.0f, 320 - 0*50);
glVertex2f(90.0f, 320 - 0*50);
glVertex2f(90.0f, 320 - (0*50)+30);
glVertex2f(60.0f, 320 - (0*50)+30);
glEnd();
}
else if(menuState == MENU_EXIT)
{
glBegin(GL_QUADS);
glColor3f(1.0f, 0.0f, 0.0f);
glVertex2f(60.0f, 320 - 1*50);
glVertex2f(90.0f, 320 - 1*50);
glVertex2f(90.0f, 320 - (1*50)+30);
glVertex2f(60.0f, 320 - (1*50)+30);
glEnd();
}*/
}
else if(gameState == GAME_PLAY)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBindTexture(GL_TEXTURE_2D, my_texture3);
glBegin(GL_QUADS);
glColor3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex2f(-1, -1);
glTexCoord2f(1.0f, 0.0f);
glVertex2f(1, -1);
glTexCoord2f(1.0f, 1.0f);
glVertex2f(1,1);
glTexCoord2f(0.0f, 1.0f);
glVertex2f(-1,1);
glEnd();
glBindTexture(GL_TEXTURE_2D,5);
for (int j=0; j<asteroids.size(); j++) {
asteroids[j]->move();
ship->move();
}
zdavje_izris();
zdavje_izris2();
for (int i=0; i<asteroids.size(); i++)
{
asteroids.at(i)->draw();
}
for(int i=0;i<Bonus.size();i++)
{
Bonus[i]->draw();
}
// Izris
ship->draw();
for (int i=0; i<listasovraznih_ladij.size(); i++)
{
listasovraznih_ladij.at(i)->draw();
}
for( int i=0; i<listaMetkov.size(); i++ )
{
listaMetkov.at( i )->draw();
}
for( int j=0; j<listanaspMetkov.size(); j++ )
{
listanaspMetkov.at( j )->draw();
}
}
glFlush();
glutSwapBuffers();
}

Bistri007 ::
To pa imaš kode...
Sem pogledal na hitro:
1. imaš na koncu vsakega case (v switch) break?
2. zakaj še enkrat deklariraš spremenljivko gameState kot lokalno?
( game_state_e gameState=GAME_PLAY; )
Sem pogledal na hitro:
1. imaš na koncu vsakega case (v switch) break?
2. zakaj še enkrat deklariraš spremenljivko gameState kot lokalno?
( game_state_e gameState=GAME_PLAY; )
Največja napaka desetletja je bila narejena 4. novembra 2008
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...
aaaaa93 ::
Se opravičujem dal sem minimalno kode kolikor se da, imam jo 2,5k vrstic ;)
Ja sem odstranil gameState=GAME_PLAY; ye sedaj in ko kliknem na knof mi pa zbuga zadevo program se izsuje..
//tukaj je prva slika ko samo skompajlamo igra se še ni crashala, še lavfa
//tukaj se je že veslo scrashala in javla več napak
Aja pa nekako bi moral sprmeniti globlano spremenljivko da bi dobila vrednost game play
Ja sem odstranil gameState=GAME_PLAY; ye sedaj in ko kliknem na knof mi pa zbuga zadevo program se izsuje..
//tukaj je prva slika ko samo skompajlamo igra se še ni crashala, še lavfa
//tukaj se je že veslo scrashala in javla več napak
Aja pa nekako bi moral sprmeniti globlano spremenljivko da bi dobila vrednost game play
Zgodovina sprememb…
- spremenil: aaaaa93 ()

Bistri007 ::
Ja sem odstranil gameState=GAME_PLAY; ye sedaj in ko kliknem na knof mi pa zbuga zadevo program se izsuje..
Te ne razumem čisto dobro. Jaz sem mislil, da bi odstranil "game_state_e" izpred "gameState=GAME_PLAY", ker drugače tu ustvariš novo spremenljivko.
Aja pa nekako bi moral sprmeniti globlano spremenljivko da bi dobila vrednost game play
Kaj pa če bi delal z objekti, če že uporabljaš C++?
this->gameState ...
Največja napaka desetletja je bila narejena 4. novembra 2008
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...
aaaaa93 ::
gameState=GAME_PLAY tako sem naredil pa mi crash naredi pri igri
game_state_e gameState=GAME_PLAY pa pomeni da sem kliku pa se ni nič zgodilo
game_state_e gameState=GAME_PLAY pa pomeni da sem kliku pa se ni nič zgodilo
technolog ::
Zagotovo ostani pri prvi možnosti, ker v drugi samo narediš novo lokalno spremenjivko in ne narediš nič.
Kaj pa pravi debugger GDB? Kakšen tip "crasha" dobiš?
Kaj pa pravi debugger GDB? Kakšen tip "crasha" dobiš?
Zgodovina sprememb…
- spremenil: technolog ()
matej94 ::
Ja maste prov v mainu sta bila 2 main loopa sedaj imam spet novo napako, ampak ugotvil sem da sem dibival crash zaradi textur v mainu nekam jih moram prestavt vendar ne vem kam ;(

Bistri007 ::
Najbolj enostavno je uporabiti step-by-step debugger. Glede na to, da imaš bolj začetniške napake, bi ti predlagal, da se najprej udomačiš v C# (z XNA, če te zanimajo igre) in greš kasneje na C++. Naučiš se objektno orientiranega programiranja, compiler in .NET runtime pa ti dajeta bolj razumljiva sporočila o napakah. Sama jezika sta si zelo podobna, s tem da se je s C++ veliko lažje "ustreliti v nogo".
Visual C# Express je brezplačen, Visual Studio z ReSharper pa je najbolj produktivno okolje.
Visual C# Express je brezplačen, Visual Studio z ReSharper pa je najbolj produktivno okolje.
Največja napaka desetletja je bila narejena 4. novembra 2008
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...
Oni so goljufali in Alah je goljufal, Alah je najboljši prevarant. (Koran 3:54)
Citiraj svetega očeta Benedikta XVI. in postani "persona rudis"...
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | napaka v c++Oddelek: Programiranje | 2072 (1157) | čuhalev |
| » | Java skeniranje map in podmapOddelek: Programiranje | 1301 (1190) | nightrage |
| » | GrafikaOddelek: Programiranje | 1844 (1196) | aaaaa93 |
| » | java net beans pomočOddelek: Programiranje | 1762 (1650) | i33a |
| » | C# PomočOddelek: Programiranje | 1575 (1400) | jizzer |


