Advertisement
Guest User

Untitled

a guest
Mar 31st, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <time.h>
  5.  
  6. #define ROZMIAR_POLA_X 4
  7. #define ROZMIAR_POLA_Y 4
  8. #define ODSTEP 8
  9. int SPACE = ODSTEP;
  10. int blank = 0;
  11. int pole_gry[ROZMIAR_POLA_Y][ROZMIAR_POLA_X];
  12. int x, y, z; // zmienne sterujace petlami
  13.  
  14. int generuj_pole()
  15. {
  16.     for(y=0; y<ROZMIAR_POLA_Y; y++)
  17.     {                        
  18.         for(x=0; x<ROZMIAR_POLA_X; x++)
  19.         {                      
  20.             pole_gry[y][x] = blank;
  21.         }
  22.     }
  23.        
  24. }
  25.  
  26. int rysuj_pole()
  27. {
  28.     system("cls");
  29.     printf("\n");
  30.     for(y=0; y<ROZMIAR_POLA_Y; y++)
  31.     {          
  32.         for(x=0; x<ROZMIAR_POLA_X; x++)
  33.         {
  34.             if(pole_gry[y][x-1]/10>0)
  35.             {
  36.                 SPACE = SPACE-1;
  37.                 if(pole_gry[y][x-1]/100>0)
  38.                 {
  39.                     SPACE = SPACE-1;
  40.                 }
  41.                 if(pole_gry[y][x-1]/1000>0)
  42.                 {
  43.                     SPACE = SPACE-1;
  44.                 }
  45.                 if(pole_gry[y][x-1]/10000>0)
  46.                 {
  47.                     SPACE = SPACE-1;
  48.                 }
  49.             }
  50.             else
  51.             {
  52.                 SPACE = ODSTEP;
  53.             }
  54.             for(z=0; z<SPACE; z++)
  55.             {
  56.                 printf(" ");
  57.             }                          
  58.             printf("%d", pole_gry[y][x]);
  59.         }
  60.         printf("\n");
  61.     }
  62. }
  63.  
  64. int kolizja(int warunek, int kposx, int kposy)//2, 4, 6, 8 - ruch , 5 - kolizja generuj_liczbe()
  65. {
  66.     if(warunek == 8)
  67.     {
  68.         for(y=ROZMIAR_POLA_Y-1; y>0; y--)
  69.         {
  70.             for(x=0; x<ROZMIAR_POLA_X; x++)
  71.             {
  72.                 if(pole_gry[y-1][x]==blank)
  73.                 {
  74.                     pole_gry[y-1][x]=pole_gry[y][x];
  75.                     pole_gry[y][x] = blank;
  76.                 }
  77.                 if(pole_gry[y-1][x]==pole_gry[y][x])
  78.                 {
  79.                     pole_gry[y-1][x]+=pole_gry[y][x];
  80.                     pole_gry[y][x]=blank;
  81.                 }
  82.             }
  83.         }
  84.     }
  85.    
  86.     if(warunek == 2)
  87.     {
  88.         for(y=0; y<ROZMIAR_POLA_Y; y++)
  89.         {
  90.             for(x=0; x<ROZMIAR_POLA_X; x++)
  91.             {
  92.                 if(pole_gry[y+1][x]==blank)
  93.                 {
  94.                     pole_gry[y+1][x]=pole_gry[y][x];
  95.                     pole_gry[y][x] = blank;
  96.                 }
  97.                 if(pole_gry[y+1][x]==pole_gry[y][x])
  98.                 {
  99.                     pole_gry[y+1][x]+=pole_gry[y][x];
  100.                     pole_gry[y][x]=blank;
  101.                 }
  102.             }
  103.         }
  104.     }
  105.    
  106.     if(warunek == 4)
  107.     {
  108.         for(y=0; y<ROZMIAR_POLA_Y;y++)
  109.         {
  110.             for(x=ROZMIAR_POLA_X-1; x<0; x--)
  111.             {
  112.                 if(pole_gry[y][x-1]==blank)
  113.                 {
  114.                     pole_gry[y][x-1]=pole_gry[y][x];
  115.                     pole_gry[y][x] = blank;
  116.                 }
  117.                 if(pole_gry[y][x-1]==pole_gry[y][x])
  118.                 {
  119.                     pole_gry[y][x-1]+=pole_gry[y][x];
  120.                     pole_gry[y][x]=blank;
  121.                 }
  122.             }
  123.         }
  124.     }
  125.    
  126.     if(warunek == 6)
  127.     {
  128.         for(y=0; y<ROZMIAR_POLA_Y;y++)
  129.         {
  130.             for(x=0; x<ROZMIAR_POLA_X-2; x++)
  131.             {
  132.                 if(pole_gry[y][x+1]==blank)
  133.                 {
  134.                     pole_gry[y][x+1]=pole_gry[y][x];
  135.                     pole_gry[y][x] = blank;
  136.                 }
  137.                 if(pole_gry[y][x+1]==pole_gry[y][x])
  138.                 {
  139.                     pole_gry[y][x+1]+=pole_gry[y][x];
  140.                     pole_gry[y][x]=blank;
  141.                 }
  142.             }
  143.         }
  144.     }
  145.    
  146.     // ---------------
  147.     if(warunek == 5)
  148.     {
  149.         if(pole_gry[kposy][kposx]!=blank)
  150.         {
  151.             return 5;
  152.         }
  153.         else
  154.         return 0;
  155.     }  
  156. }
  157.  
  158. int generuj_liczbe()
  159. {
  160.     int posx;
  161.     int posy;
  162.     int prawdopodobienstwo;
  163.     char liczba;
  164.     do
  165.     {
  166.         posx = rand() % ROZMIAR_POLA_X;
  167.         posy = rand() % ROZMIAR_POLA_Y;
  168.     }while(kolizja(5, posx, posy)== 5);
  169.    
  170.     prawdopodobienstwo = (rand() % 4)+1;
  171.     if(prawdopodobienstwo == 1)
  172.     {
  173.         liczba = 4;
  174.     }
  175.     else
  176.     {
  177.         liczba = 2;
  178.     }
  179.    
  180.     pole_gry[posy][posx] = liczba;
  181. }
  182.  
  183. int ruch()
  184. {
  185.     char move;
  186.     A:
  187.     move = getch();
  188.     fflush(stdin);
  189.     switch(move)
  190.     {
  191.         case 'w': kolizja(8,0,0);
  192.         break;
  193.         case 's': kolizja(2,0,0);
  194.         break;
  195.         case 'a': kolizja(4,0,0);
  196.         break;
  197.         case 'd': kolizja(6,0,0);
  198.         break;
  199.         default: goto A;
  200.     }
  201.        
  202. }
  203. int main()
  204. {
  205.     srand(time(0));
  206.    
  207.     generuj_pole();
  208.     for(;;)
  209.     {
  210.         generuj_liczbe();  
  211.         rysuj_pole();
  212.         ruch();
  213.     }
  214.     getch();
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement