[ vladaboy93 @ 11.02.2008. 20:07 ] @
http://www.speedyshare.com/807929451.html

izvan foldera su dva dll-a koja treba staviti u isti folder di je exe nista lakse, ukoliko sam zaboravio koji DLL recite mi da cu ga okaciti.

evo screen



nije dovrsheno ali bi hteo da cujem vase misljenje.
[ avance70 @ 11.02.2008. 20:45 ] @
mogao si napomenuti sa kojim tipkama se okrece top i puca, da ne ganjam po tastaturi ;)

pretpostavljam, bice neka logicka igra u pitanju?
pa npr. kada bi se ogranicio broj metaka i dodalo jos elemenata, mogla bi se napraviti dobra mozgalica!

pohvala, samo nastavi!
[ vladaboy93 @ 11.02.2008. 21:52 ] @
na D i F se pokrece kupola, na strelice se igra....

hvala

E ovako igra je pravljena u SDL-u a za okruzenje sam koristio DevCpp pravio sam 2D engine, za rotaciju sam koristio SDL_gfx i to je to :)

[ stefanpn @ 13.02.2008. 14:02 ] @
Jako mi se svidja igrica, pogotovu to sto je radis sam.

Moje preporuke su ti
- Da se potrudis da se gameplay ubrza.
- Da FPS rate bude na 33. Jer mi se cini da igrica radi nekako presporo. (Ili ti je igrica prezahtevna sto ne bi smela da bude sa obzirom na to da su tu samo matrica i 1 sprajt.
- Za pocetak bi mogo da stavis bar neke nepriatelje sa najjednostavnijim AI-em pa ces to unapredjivati vremenom i zajedno sa igrom.
- Probaj da umesto SDL-a koristis DirectX funkcije jer ne znam da li je to do mene ali one rade mnogo, mnogo brze...

Pozdrav i svaka cast...
[ vladaboy93 @ 14.02.2008. 22:30 ] @
hvala programiranje radim sam a dizajn mi crta drugar.

FPS nije problem nego je igra zahtevna (hahahahahahahahhaahahhahaah) na mom kompu GTA radi bolje od te igre to je zbog sporih funkcija SDL-a treba da ga ukombinujem sa OpenGL-om ali nemam mnogo vremena da ucim posto spremam je***ni prijemni i bombardovanje u skoli....

Vise volim GL jel je cistiji kod DX ima gomilu onog shit coda kojji nicemu nesluzi neg je cista "formlanost".

I mislim da cu napraviti da tenkci ide u 360 stepeni mada.... hm celo vreme pravim 2D egnine koji je jednostavan za upotrtebu i sada kontam da sam probo celo vreme da napravim game maker, pa sada kontam da bi mozda u njemu mogo brze igru da zavrsim.... mada hm?
[ stefanpn @ 14.02.2008. 23:43 ] @
SMRT GAME MAKERU!!! - Pisi program...

Moja preporuka ti je da napravis engine specijalizovan samo za tvoju igru.

Sto se FPS-a tice ni SDL nije bas tako spor, mozda ti je problem negde u algoritmu. Verovatno u glavnom loop-u.
Mogao bi da postavis deo coda (main loop-samo) mozda bi moglo nesto da se pomogne.

Takodje moja preporuka ti je da se za kretanje topa koristi mis, bice mnogo atraktivnije osim ako ne spremas neku mozgalicu. Mozes razviti brzu pucacinu iz pticije perspektive imam osecaj da bi bilo mnogo zarazno.

Samo nastavi ... (I javi kad zavrsis)

I ako taj tvoj drug stvarno radi grafiku mogao bi nesto da pomogne oko moje 2D platforme (ProjS - koji za sada polako napreduje u 2D engine)
[ markozelenovic @ 15.02.2008. 16:41 ] @
Cool covece, samo nastavi...
[ vladaboy93 @ 16.02.2008. 09:36 ] @


Hteo bih da predjem na OpenGL ali 2D, 3D me jos nezanima dali neko zna mozda neka uputstva/tutoriale o 2d programiranju u OGL-u?


Evo kod.

Code:
          while( SDL_PollEvent( &event ) )
      {
       
         if( event.type == SDL_KEYDOWN) 
         {
            switch( event.key.keysym.sym )
            {
         
               case SDLK_SPACE:
               {  
                  if (f%90==0)
                  {
                  if (slug.ispaljen==false)
                  {
                     sluger=vidljiv_metak;                          
                     slug.ispaljen=true;
                  
                     if (f==0)
                     {
                         slug.x=tenk.box.x+tenk.box.w/2-3;
                         slug.y=tenk.box.y+tenk.box.h/2-3-20;
                         slug.k=0;
                     }
                     if (f==270)
                     {
                     slug.x=tenk.box.x+tenk.box.w/2-3+20;
                     slug.y=tenk.box.y+tenk.box.h/2-3;
                        slug.k=1;
                        }
                  
                     if (f==180)
                     {
                         
                     slug.x=tenk.box.x+tenk.box.w/2-3;
                     slug.y=tenk.box.y+tenk.box.h/2-3+20;       
                        slug.k=2;
                        }
                  
                     if (f==90)
                     {
                        slug.x=tenk.box.x+tenk.box.w/2-3-20;
                        slug.y=tenk.box.y+tenk.box.h/2-3;     
                        slug.k=3;
                        }

                  
                     slug.fire=false;
                     
            
                  }
                  }
               } break;    
              
               case SDLK_ESCAPE:  
               {
                  quit = true;
               } break; 
               
               
               case SDLK_d:
               {
                  vrti_right=false;
                  vrti_left=true;
               } break; 
               
               case SDLK_f:
               {
                  vrti_right=true;
                  vrti_left = false;
               } break; 
               
  
                
            }
         }

         if( event.type == SDL_QUIT )
         {
            quit = true;
         }
         
         if( event.type == SDL_KEYUP) 
         {
            switch( event.key.keysym.sym )
            {
               case SDLK_UP: tenk.up=false; break;
               case SDLK_DOWN: tenk.down = false; break;
               case SDLK_RIGHT: tenk.right = false; break;
               case SDLK_LEFT: tenk.left = false; break;
            }
         }
                    
                    
         

      }
      

      
      if(( keystates[ SDLK_UP ] )&&(tenk.right == false)&&(tenk.left == false)&&(tenk.nm==-1)&&((tenk.box.y%40)==0)&&(tenk.ml==false)&&(tenk.mr==false)&&(tenk.klizi==false)&&(tenk.adown==false)&&(tenk.aup==false)&&(tenk.aleft==false)&&(tenk.aright==false))   
      { 
         if ((tenk.klizi==false)&&(tenk.kol==false))
         {
            dot=tup;       
            tenk.mu = true;
            tenk.up = true;        
         }
      }  
      
      else
      
         if(( keystates[ SDLK_DOWN ] )&&(tenk.right == false)&&(tenk.left == false)&&(tenk.nm==-1)&&((tenk.box.y%40)==0)&&(tenk.ml==false)&&(tenk.mr==false)&&(tenk.klizi==false)&&(tenk.adown==false)&&(tenk.aup==false)&&(tenk.aleft==false)&&(tenk.aright==false))     
         {
            if ((tenk.klizi==false)&&(tenk.kol==false))
            {
               dot=tdown;        
               tenk.md = true;
               tenk.down = true;
            }
         } 
         
         else
         
            if(( keystates[ SDLK_LEFT ] )&&(tenk.down == false)&&(tenk.up == false)&&(tenk.nm==-1)&&((tenk.box.x%40)==0)&&(tenk.mu==false)&&(tenk.md==false)&&(tenk.klizi==false)&&(tenk.adown==false)&&(tenk.aup==false)&&(tenk.aleft==false)&&(tenk.aright==false))  
            { 
               if ((tenk.klizi==false)&&(tenk.kol==false))
               {
                  dot=tleft;   
                  tenk.ml = true;
                  tenk.left = true;
               }
            } 
      
            else
   
               if(( keystates[ SDLK_RIGHT ] )&&(tenk.down == false)&&(tenk.up == false)&&(tenk.nm==-1)&&((tenk.box.x%40)==0)&&(tenk.mu==false)&&(tenk.md==false)&&(tenk.klizi==false)&&(tenk.adown==false)&&(tenk.aup==false)&&(tenk.aleft==false)&&(tenk.aright==false))                                                          
               { 
                  if ((tenk.klizi==false)&&(tenk.kol==false))
                  {
                     dot=tright;       
                     tenk.right = true;
                     tenk.mr = true;
                  }
               }         


      
          
      tenk.move(tiles,tenk);
      slug.move_bull (tiles);
      tenk.set_camera();
      
      if (vrti_left==true)
      {
         f+=6;
         if(f%90!=0) {vrti_left=true;}
         else
         vrti_left=false;
      }
      else
            
      if (vrti_right==true)
      {
         f-=6;
         if(f%90!=0) {vrti_right=true;}
         else
         vrti_right=false;
      }
      
            if (f==360)
      {
          vrti_left=false;
          vrti_right=false;
          f=0;
      }
      
      if (f<0)
      {    
          f=354;
      }
      

      red_gate_count+=1;
 

      
      
      if ((tenk.red_gate_opened==true)&&(opened==false))
      {
         opened=true;
         red_gate_count=41;

      }
      
      x = tenk.box.x+20-kupola[f]->w/2;
      y = tenk.box.y+20-kupola[f]->h/2;
      
     if (red_gate_count==49)
     {
        red_gate_count=0;
        
     }
      
     if ((red_gate_count>=40)&&(tenk.red_gate_opened==false))  {red_gate_count=20;}     

      

      
      
      for( int t = 0; t < TOTAL_TILES; t++ )
      {
    
      
              if ((tiles[t]->type>=TILE_GATE_RED)&&(tiles[t]->type<49))
              {            
                 tiles[ t ]->type=red_gate_count;
              }
              tiles [ t ]->show(); 
       
      }    
      
    

      slug.draw_bull();
      tenk.show();
      
     

   
      

      apply_surface( x-camera.x,  y-camera.y, kupola[f], screen );
     
      
       
      if( SDL_Flip( screen ) == -1 )
      {
         return 1;    
      }
        
      if( fps.get_ticks() < 1000 / FRAMES_PER_SECOND )
      {
         SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - fps.get_ticks() );
      }
   }
            
   clean_up( tiles );
    
   return 0;    
[ stefanpn @ 16.02.2008. 11:14 ] @
Mnoooooogo IF-ova.
Predlazem ti da ovih 4 if zamenis sa nijednim:
Code:

if (f%==0)
if (f%=90)
if (f%=180)
if (f%=270)


Mogao bi objektu tenk da dodas jos dva parametra, pravac kretanja( ugao od 0 do 359 ), i brzinu kretanja, eventualno jos i ubrzanje.
Pa bi se tenk kretao:
Code:

if (event.type == SDL_KEYUP) ' Ovaj IF vec koristis
          { Tenk.ubrzanje = Tenk.ubrzanje + 0.3; }
if (event.type == SDL_KEYDOWN) ' Ovaj IF vec koristic
          { Tenk.ubrzanje = Tenk.ubrzanje - 0.3; }

Tenk.brzina = Tenk.brzina + Tenk.ubrzanje;
Tenk.x = Tenk.x + cos(Tenk.pravac * 3.14/180) * Tenk.brzina;
Tenk.y = Tenk.y + sin(Tenk.pravac * 3.14/180) * Tenk.brzina;


Tako bi se resio 4 uporedjivanja i malo ubrzao rad tvog programa. Jer znamo da je uporedjivanje najzahtevnija operacija za procesor, obicno joj je potrebno 24 takta. sto znaci da ako imas 1 procesor od 1GHz uporedjivanje se vrsi brzinom od 1/24 GHz.

I ne znam sta ce ti ono:
if {f%90==0}
Pusti ga da puca u svim pravcima...

I mogao bi da mu dodas nesto kao smirivanje

if (tenk.brzina < 1 && tenk.ubrzanje => 0) { tenk.brzina = 0}
if (tenk.brzina > -1 && tenk.ubrzanje =< 0) { tenk.brzina = 0}

A umesto da kupolu okreces na F i G, za to koristi misa... I dobijas nesto slicno Alien Shooter-u - EXTRA INTERESANTNO i ZARAZNO

Pozdrav
[ Filip Strugar @ 16.02.2008. 12:01 ] @
Citat:
Hteo bih da predjem na OpenGL ali 2D, 3D me jos nezanima dali neko zna mozda neka uputstva/tutoriale o 2d programiranju u OGL-u?

Mozes da krenes sa http://glfw.sourceforge.net/ ( GLFW is a free, Open Source, portable framework for OpenGL application development. In short, it is a single library providing a powerful, portable API for otherwise operating system specific tasks such as opening an OpenGL window, and reading keyboard, time, mouse and joystick input. )

Ako mozes, nabavi http://www.opengl.org/documentation/red_book/.

A za uputstva/tutoriale: http://www.opengl.org, http://www.google.com :)
[ vladaboy93 @ 19.02.2008. 21:41 ] @
Taj GLWF se sporo razvija i nesvidja mi se bas, uzecu cist OGL/SDL.
[ yaelo @ 19.02.2008. 21:56 ] @
Što prvo ne završiš ovu igru pre nego što kreneš sa učenjem nekog apija? Ako završiš jednu igru u bilo kom apiju portovanje če ti biti lakše.