rozdzielenie programu na części

0

Mistrzem w programowaniu nie jestem, ale napisałam coś takiego:

#include <allegro.h>
#include <stdlib.h>
#include "gram.h"
int licznik = 0;
void increment_speed_counter()
{
        licznik++;
}
END_OF_FUNCTION(increment_speed_counter);
 
int main()
{
        allegro_init();
        install_keyboard();
        install_timer();
       
        LOCK_VARIABLE(licznik);
        LOCK_FUNCTION(increment_speed_counter);
        install_int_ex(increment_speed_counter, BPS_TO_TIMER(500));
                       
        set_color_depth(32);
                       
        set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640,480,0,0);
 
        BITMAP *bufor = create_bitmap(640,480);
          /// zaladowanie obrazkow ^^
                                  
        BITMAP *ludz = load_bitmap("image1.bmp", NULL);
                                  
        BITMAP *wrog1 = load_bitmap("image2.bmp", NULL); 
    
        BITMAP *wrog2 = load_bitmap("image3.bmp", NULL); 
     
        BITMAP *wrog3 = load_bitmap("image4.bmp", NULL); 
    
        BITMAP *tlo = load_bitmap("tlo.bmp", NULL); 
      
                          
        int ludz_x = 310;
        int ludz_y = 230;
        int wrog1_x = 50;
        int wrog1_y = 50;
        int wrog2_x = 500;
        int wrog2_y = 50;
        int wrog3_x = 300;
        int wrog3_y = 350;
       
        int ludz_lewa; // pozycja ludzia x
        int ludz_gora; // pozycja y ludzia 
        int ludz_prawa; // (ludz_lewa + ludz->w);
        int ludz_dol; // = (ludz_gora + ludz->h);
       
        int wrog1_lewa; // = pozycja x wroga;
        int wrog1_gora; // = pozycja y wroga;
        int wrog1_prawa; 
        int wrog1_dol; 
       
        int wrog2_lewa; 
        int wrog2_gora; 
        int wrog2_prawa;
        int wrog2_dol; 
       
        int wrog3_lewa; 
        int wrog3_gora; 
        int wrog3_prawa; 
        int wrog3_dol; 
               
        int box = false;
        int kolizja;
        int timer = 0;
        int zycie = 10;
        int timer_record[3]={0,0,0};
      
        bool zycie2 = false;
        bool zycie3 = false;
        bool zycie4 = false;
        bool ruchx2 = true;
        bool ruchy2 = true;
        bool ruchx3 = true;
        bool ruchy3 = true;
        bool ruchx4 = true;
        bool ruchy4 = true;
       
        while(!key[KEY_ENTER])
    {  
    draw_sprite(bufor, tlo, 0,0);  
      
    textprintf_ex(bufor, font, 245,80, makecol(255,255,255), -1, "UCIEKAJ xD");
    textprintf_ex(bufor, font, 280,150, makecol(255,255,255), -1, "Uywaj strzalek ");
    textprintf_ex(bufor, font, 255,180, makecol(255,255,255), -1, "aby uciec przed kosmitami");
  
    blit(bufor, screen, 0, 0, 0, 0, 640, 480);
    }  
 
        while(!key[KEY_ESC])
        {
      blit(tlo, bufor, 0,0,0,0,640,480);
        // sprawdzaj kiedy gra skonczona
        if (zycie > 0)
        {        
                while(licznik > 0) 
                {              
                
                if(key[KEY_LEFT])
                            if(ludz_lewa > 0)
                                ludz_x --;                  
                        if(key[KEY_RIGHT])
                    if(ludz_prawa < 639)
                                ludz_x ++;          
                        if(key[KEY_DOWN])
                    if(ludz_dol < 479)
                                ludz_y ++;
                        if(key[KEY_UP])
                    if(ludz_gora > 0)
                                ludz_y --;
                 
                        if(ruchx2)
                                wrog1_x ++;  
                        else
                                wrog1_x--;
                        if(ruchy2)
                                wrog1_y ++;
                        else
                                wrog1_y --;
                               
                        if(ruchx3)
                                wrog2_x ++;  
                        else
                                wrog2_x --;
                        if(ruchy3)
                                wrog2_y ++;
                        else
                                wrog2_y --;
                               
                                if(ruchx4)
                                wrog3_x ++;  
                        else
                                wrog3_x --;
                        if(ruchy4)
                                wrog3_y ++;
                        else
                                wrog3_y --;
                               
                       
                if(key[KEY_SPACE])
                                box = true;                      
                        else
                                box = false;
                       
                        ludz_lewa = ludz_x;
                        ludz_gora = ludz_y;
                        ludz_prawa = (ludz_lewa + ludz->w);
                        ludz_dol = (ludz_gora + ludz->h);
   
                        wrog1_lewa = wrog1_x;
                        wrog1_gora = wrog1_y;
                       wrog1_prawa = (wrog1_lewa + wrog1->w);
                        wrog1_dol = (wrog1_gora + wrog1->h);
                       
                        wrog2_lewa = wrog2_x;
                        wrog2_gora = wrog2_y;
                         wrog2_prawa = (wrog2_lewa + wrog2->w);
                        wrog2_dol = (wrog2_gora + wrog2->h);
                       
                        wrog3_lewa = wrog3_x;
                        wrog3_gora = wrog3_y;
                        wrog3_prawa = (wrog3_lewa + wrog3->w);
                        wrog3_dol = (wrog3_gora + wrog3->h);
                       
               
                if(wrog1_prawa == 639 || wrog1_lewa == 0)
                ruchx2 = !ruchx2;
                if(wrog2_prawa == 639 || wrog2_lewa == 0)
                ruchx3 = !ruchx3;
                if(wrog3_prawa == 639 || wrog3_lewa == 0)
                ruchx4 = !ruchx4;
               
                if(wrog1_dol == 479 || wrog1_gora == 0)
                ruchy2 = !ruchy2;
                if(wrog2_dol == 479 || wrog2_gora == 0)
                ruchy3 = !ruchy3;
                if(wrog3_dol == 479 || wrog3_gora == 0)
                ruchy4 = !ruchy4;
               
                kolizja = true;              
                if(ludz_dol< wrog1_gora)
                {
                    kolizja = FALSE;
                }
                else if(ludz_gora > wrog1_dol)
                {
                    kolizja = FALSE;
                }
                else if(ludz_prawa < wrog1_lewa)
                {
                    kolizja = FALSE;
                }
                else if(ludz_lewa >  wrog1_prawa)
                {
                    kolizja = FALSE;
                }
              if (kolizja)
              {
              rectfill(bufor, 0, 0, 640, 480, makecol(200,10,0));
              textprintf_ex(bufor,font, 250,205, makecol(255,255,255), -1, "TRZASK TRZASK");
                   if(zycie2 == true)
                        {
                                  zycie = zycie - 1;
                                  zycie2 = false;
                    }
              }    
                else
                {
                          zycie2 = true;
                }
               
                kolizja = true;              
                if(ludz_dol < wrog2_gora)
                {
                    kolizja = FALSE;
                }
                else if(ludz_gora > wrog2_dol)
                {
                    kolizja = FALSE;
                }
                else if(ludz_prawa < wrog2_lewa)
                {
                    kolizja = FALSE;
                }
                else if(ludz_lewa > wrog2_prawa)
                {
                    kolizja = FALSE;
                }
              if (kolizja)
              {
              rectfill(bufor, 0, 0, 640, 480, makecol(200,0,0));
              textprintf_ex(bufor,font, 305,205, makecol(255,255,255), -1, "TRZASK");
                      if(zycie3 == true)
                        {
                          zycie = zycie - 1;
                                  zycie3 = false;
                    }
                }
                else
                {
                          zycie3 = true;
                }
               
                kolizja = true;              
                if(ludz_dol< wrog3_gora)
                {
                    kolizja = FALSE;
                }
                else if(ludz_gora > wrog3_dol)
                {
                    kolizja = FALSE;
                }
                else if(ludz_prawa < wrog3_lewa)
                {
                    kolizja = FALSE;
                }
                else if(ludz_lewa > wrog3_prawa)
                {
                    kolizja = FALSE;
                }
              if (kolizja)
              {            
              rectfill(bufor, 0, 0, 640, 480, makecol(0,0,0));
              textprintf_ex(bufor,font, 305,205, makecol(255,255,255), -1, "TRZASK");      
                      if(zycie4 == true)
                        {
                                    zycie = zycie - 1;
                                    zycie4 = false;
                    }
                }
                else
                {
                                zycie4 = true;
                }
             
                        licznik --;
                       
            }
                 rect(bufor, 0, 0, 639, 479, makecol(255,255,255));     
                 draw_sprite(bufor, wrog1, wrog1_x, wrog1_y); 
                 draw_sprite(bufor, wrog2, wrog2_x, wrog2_y); 
                 draw_sprite(bufor, wrog3, wrog3_x, wrog3_y); 
                 draw_sprite(bufor, ludz, ludz_x, ludz_y); 
                 
                 
             if(zycie!=0)
             textprintf_ex(bufor,font, 5,35, makecol(255,255,255), -1, "%d",timer);
                 if(zycie > 0)
               {
                       timer = timer + 1;
                       textprintf_ex(bufor,font, 5,35, makecol(255,255,255), -1, "%d",timer);
               }
                  if(box == true)
                  {
                        rect(bufor, ludz_lewa, ludz_gora, ludz_prawa, ludz_dol, makecol(255,0,0));
                        rect(bufor, wrog1_lewa, wrog1_gora,  wrog1_prawa, wrog1_dol, makecol(255,0,0));
                        rect(bufor, wrog2_lewa, wrog2_gora, wrog2_prawa, wrog2_dol, makecol(255,0,0));
                        rect(bufor, wrog3_lewa, wrog3_gora, wrog3_prawa, wrog3_dol, makecol(255,0,0));
              }
              if (timer > timer_record[0])
              {
                  timer_record[2]=timer_record[1];
                  timer_record[1]=timer_record[0];
                  timer_record[0]=timer;
              }
              else if (timer > timer_record[1])
              {
              timer_record[2]=timer_record[1];
              timer_record[1]=timer;
              }
              else if (timer > timer_record[2])
              {
              timer_record[2]=timer;
              }              
              textprintf_ex(bufor, font, 5,5, makecol(255,255,255), -1,"ZYCIA:");
              textprintf_ex(bufor, font, 5,15, makecol(255,255,255), -1,"%d",zycie);
              textprintf_ex(bufor, font, 5,25, makecol(255,255,255), -1,"WYNIK:");
                  blit(bufor, screen, 0, 0, 0, 0, 640, 480);
                  clear_bitmap(bufor);
        }
        else
        {
           
            blit(tlo, bufor, 0,0,0,0,640,480);
            textprintf_ex(bufor, font, 250,5, makecol(255,255,255), -1,"KONIEC GRY");
            textprintf_ex(bufor, font, 250,15, makecol(255,255,255), -1,"TWÓJ WYNIK:");
            textprintf_ex(bufor, font, 250,25, makecol(255,255,255), -1,"%d", timer);
          
            if(key[KEY_ENTER])        
            {
            zycie = 10;
            timer = 0;
               
            }
            blit(bufor, screen, 0, 0, 0, 0, 640, 480);
            clear_bitmap(bufor);      
        }
    }
   
   
   
   
        destroy_bitmap(bufor);
        destroy_bitmap(ludz);
        destroy_bitmap(wrog1);
        destroy_bitmap(wrog2);
        destroy_bitmap(wrog3);
        
        destroy_bitmap(tlo);
        return 0;
}
END_OF_MAIN()
 

jak to cholerstwo podzielić na części żeby działało, przy moich ostatnich próbach przeniesienia funkcji ruchu, gracz przestaje się poruszać ;/

0

zacznij od zrobienia klasy dla gracza i wdrożenia jej. jak zrobisz i będzie to działać to wklej tutaj wynikowy kod źródłowy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1