Nič mi noče sem pa dlečke kode sem nalimal, če ima kdo kak predlog se priporočam..
- Koda: Izberi vse
GLuint tekstura[3];
display funkcija z load
- Koda: Izberi vse
void load()
{ glEnable(GL_TEXTURE_2D);
tekstura[1] = SOIL_load_OGL_texture
(
"Data/start.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
tekstura[2] = SOIL_load_OGL_texture
(
"Data/game1_1.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
tekstura[3] = SOIL_load_OGL_texture
(
"Data/exit.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_INVERT_Y
);
}
static void display(void) {
// te tri vrstice naj bodo vedno na zaèetku
// izrisi meni
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
ozadje();
glLoadIdentity();
if(gameState == GAME_MENU)
{
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glOrtho (0, width, height, 0, 0, 1);
// load();
for( int i=0; i< vGumbi.size(); i++ )
{
glBindTexture(GL_TEXTURE_2D, tekstura[i]);
vGumbi.at(i)->Draw(i);//<------------------- ------------------------------------------------------------------------------------kličem draw za knof ;((((
glBindTexture(GL_TEXTURE_2D,5);
}
//load();
/*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();
}*/
glFlush();
glutSwapBuffers();
}
else if(gameState == GAME_PLAY)
{
// glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
// glOrtho (0, width, height, 0, 0, 1);
glMatrixMode (GL_MODELVIEW);
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
//izrisovanje zdravja za mojo ladjo
zdavje_izris();
//izrisovanje zdravja za sovrazne ladje
zdavje_izris2();
//izrisovanje ledenikov
for (int i=0; i<asteroids.size(); i++)
{
asteroids.at(i)->draw();
}
//izrisovanje bonusa
for(int i=0;i<Bonus.size();i++)
{
Bonus[i]->draw();
}
// Izris moje ladje
ship->draw();
//Iizris sovrazne ladje
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();
}
else if(gameState=GAME_1_1)
{
// glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
// glOrtho (0, width, height, 0, 0, 1);
glMatrixMode (GL_MODELVIEW);
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<listaMetkov.size(); i++ )
{
listaMetkov.at( i )->draw();
}
glFlush();
glutSwapBuffers();
}
}
static void Update(int value)
{
QueryPerformanceCounter((LARGE_INTEGER*)&end_count);
//find the time
dt = (float)(end_count - start_count) / (float)freq;
start_count=end_count;
cout<<"dt:"<<dt<<" ";
if(gameState == GAME_MENU)
{
// load();
// cout<<gameState;
// display();
glutTimerFunc(1000/FPS, Update, 1);
}
else if(gameState == GAME_PLAY)
{
// ozadje();
// pri inicializacije ne pozabi
if((listasovraznih_ladij.size()==0)||(ship->zdravje<=0))
{
if(listasovraznih_ladij.size()==0)
{
glutDisplayFunc(victory); // Register The Display Function
glutIdleFunc(victory);
gameState=GAME_MENU;
// glutTimerFunc(1000/FPS, Update, 1);
// 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);
gameState=GAME_MENU;
// glutTimerFunc(1000/FPS, Update, 1);
// victory();
//exit(1);
}
} else
{
glutTimerFunc(1000/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;
}
}
// ustvarjanje metka
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 ( listasovraznih_ladij[i]->lahkoStreljasnasp == true )
{
listanaspMetkov.push_back(new naspmetki());
listasovraznih_ladij[i]->stevec++;
listasovraznih_ladij[i]->lahkoStreljasnasp = false; //<------------------------
// cout<<"Metek ustvarjen";
// cout<<listaMetkov.size();
}
}}
for (int i=0; i<listasovraznih_ladij.size(); i++)
{
//preverjanje streljanje moje ladje
//stevecmetkov spusti 25 metkov potem pa 350ml sekund presledek
if(listasovraznih_ladij[i]->stevec<10)
{
if( listasovraznih_ladij[i]-> lahkoStreljasnasp == false )
{
listasovraznih_ladij[i]->tmrStrelnasp++;
if( listasovraznih_ladij[i]->tmrStrelnasp==5)
{
listasovraznih_ladij[i]-> tmrStrelnasp=0;
listasovraznih_ladij[i]-> lahkoStreljasnasp = true;
}
}
}
else
{
listasovraznih_ladij[i]-> tmrStrelnasp++;
if(listasovraznih_ladij[i]-> tmrStrelnasp==350)
{
listasovraznih_ladij[i]-> tmrStrelnasp=0;
listasovraznih_ladij[i]-> lahkoStreljasnasp = true;
listasovraznih_ladij[i]->stevec=0;
}
} }
//funckija za preverjanje trkov
collision();
// cout<<"zdravja je še"<<ship->zdravje;
stevecbonus++;
if(stevecbonus==stevecbonus2)
{
stevecbonus2=stevecbonus2+100;
stevecbonus=0;
Bonus.push_back(new bonus());
}
}
else if(gameState=GAME_1_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;
}
}
glutTimerFunc(1000/FPS, Update, 1); // <--------
}
}
- Koda: Izberi vse
int main(int argc, char** argv) // <---------------------------------------MAIN
{
for( int i=0; i<256; i++)
tip[i] = false;
srand((unsigned)time(0));
Gumb *btn = new Gumb();
btn->Set( 128, 130, 100, 20);
btn->SetName ( "gumb_nova_igra");
vGumbi.push_back( btn );
Gumb *bin = new Gumb();
bin->Set( 128, 170, 100, 20);
bin->SetName ( "1_1");
vGumbi.push_back( bin );
Gumb *bun = new Gumb();
bun->Set( 128, 210, 100, 20);
bun->SetName ( "exit");
vGumbi.push_back( bun );
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();
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
QueryPerformanceCounter((LARGE_INTEGER*)&start_count);
// load();
// aktiviranje zaslona
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowPosition(10, 10);
glutInitWindowSize(width, height);
glutCreateWindow("Krneki");
glutKeyboardFunc(tipkovnica);
glutKeyboardUpFunc(tipkovnica2);
glutMouseFunc(MouseButton);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutTimerFunc(1000/FPS, Update, 1); // <--------
load();//<------------------- ------------------------------------------------------------------------------------tukaj kličem load
glutMainLoop();
return 1;
// system("pouse");
}
gumbki ...
- Koda: Izberi vse
class Gumb{
public:
Gumb() //constructor
{
x= 0;
y= 0;
width = 128;
height = 128;
}
int x; // X pozicija gumba
int y; // Y pozicija gumba
int width; // širina
int height; // višina
char* name;
void Set(int x, int y, int width, int height) //nastavimo vrednosti
{
this->x = x;
this->y = y;
this->width = width;
this->height = height;
}
void Draw(int i) // izris gumba
{
glBindTexture(GL_TEXTURE_2D, tekstura[i]);
glBegin(GL_QUADS);
glColor3d(1,0,0);
glVertex2f(x, y);
glVertex2f(x + width, y);
glVertex2f(x + width, y + height);
glVertex2f(x, y+ height);
glEnd();
glBindTexture(GL_TEXTURE_2D,5);
}
bool IsClicked(int xx, int yy) // preverimo èe je bil pritisnjen
{
if( xx > x && xx < x + width)
if( yy > y && yy < y + height)
{
return true;
}
return false;
}
void SetName(char * name){ this->name = name; }
char* GetName(){ return name; }
};
vector<Gumb*> vGumbi;