GUMBI

Za vse novince v izdelovanju iger.

GUMBI

OdgovorNapisal/-a koscak » Pe Jan 27, 2012 11:36 pm

Naloadati sem hotel teksturo za gumbe vendar mi noče nobenega naloadati ;((( mi lahko kdo pove kaj je narobe..
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;
koscak
wannabe
wannabe
 
Prispevkov: 97
Pridružen: Ne Nov 20, 2011 10:23 pm

Re: GUMBI

OdgovorNapisal/-a Blodyavenger » So Jan 28, 2012 12:50 am

Tomaa je podal lep primer kako to narediti v temi "Zivljenje". Ko izrisuješ pravokotnik moraš določit tudi koordinate teksture. Samo BIND_TEXTURE ni dovol, saj sistem ne more vedet, kje, kako in kaj naj izriše.

tomaa napisal/-a:Še primer:
Koda: Izberi vse
// najava spremenljivke za teksturo
GLuint my_texture;

// 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
        );

// render
// koordinate točk (glVertex3f) so naključne
glBindTexture(GL_TEXTURE_2D, my_texture);
glBegin(GL_QUADS);
   // bottom-left
   glTexCoord2f(0.0, 0.0);
   glVertex3f(0.0, 0.0, 0.0);
   // bottom-right
   glTexCoord2f(1.0, 0.0);
   glVertex3f(10.0, 0.0, 0.0);
   // top-right
   glTexCoord2f(1.0, 1.0);
   glVertex3f(10.0, 10.0, 0.0);
   // top-left
   glTexCoord2f(0.0, 1.0);
   glVertex3f(0.0, 10.0, 0.0);
glEnd ();

// unload !!!
// preveri če tekstura obstaja in jo odstrani
// KODO ZA TEM KLIČEŠ OB IZHODU IZ PROGRAMA
if(glIsTexture(GL_TEXTURE_2D, my_texture);
   glDeleteTextures(1, &my_texture);

................ My personal GameDev Blog ...................
"Don't you dare using uninitialized variables, not in C++"
Uporabniški avatar
Blodyavenger
expert
expert
 
Prispevkov: 716
Pridružen: Pe Sep 12, 2008 3:31 pm
Kraj: Land of the Ten Hares

Re: GUMBI

OdgovorNapisal/-a koscak » So Jan 28, 2012 4:03 pm

Hvala dela:)))
viewtopic.php?f=51&t=2459
tukaj je dostop do igre :)
koscak
wannabe
wannabe
 
Prispevkov: 97
Pridružen: Ne Nov 20, 2011 10:23 pm


Vrni se na Začetniki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost

cron