Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <time.h>
- #define ROZMIAR_POLA_X 4
- #define ROZMIAR_POLA_Y 4
- #define ODSTEP 8
- int SPACE = ODSTEP;
- int blank = 0;
- int pole_gry[ROZMIAR_POLA_Y][ROZMIAR_POLA_X];
- int x, y, z; // zmienne sterujace petlami
- int generuj_pole()
- {
- for(y=0; y<ROZMIAR_POLA_Y; y++)
- {
- for(x=0; x<ROZMIAR_POLA_X; x++)
- {
- pole_gry[y][x] = blank;
- }
- }
- }
- int rysuj_pole()
- {
- system("cls");
- printf("\n");
- for(y=0; y<ROZMIAR_POLA_Y; y++)
- {
- for(x=0; x<ROZMIAR_POLA_X; x++)
- {
- if(pole_gry[y][x-1]/10>0)
- {
- SPACE = SPACE-1;
- if(pole_gry[y][x-1]/100>0)
- {
- SPACE = SPACE-1;
- }
- if(pole_gry[y][x-1]/1000>0)
- {
- SPACE = SPACE-1;
- }
- if(pole_gry[y][x-1]/10000>0)
- {
- SPACE = SPACE-1;
- }
- }
- else
- {
- SPACE = ODSTEP;
- }
- for(z=0; z<SPACE; z++)
- {
- printf(" ");
- }
- printf("%d", pole_gry[y][x]);
- }
- printf("\n");
- }
- }
- int kolizja(int warunek, int kposx, int kposy)//2, 4, 6, 8 - ruch , 5 - kolizja generuj_liczbe()
- {
- if(warunek == 8)
- {
- for(y=ROZMIAR_POLA_Y-1; y>0; y--)
- {
- for(x=0; x<ROZMIAR_POLA_X; x++)
- {
- if(pole_gry[y-1][x]==blank)
- {
- pole_gry[y-1][x]=pole_gry[y][x];
- pole_gry[y][x] = blank;
- }
- if(pole_gry[y-1][x]==pole_gry[y][x])
- {
- pole_gry[y-1][x]+=pole_gry[y][x];
- pole_gry[y][x]=blank;
- }
- }
- }
- }
- if(warunek == 2)
- {
- for(y=0; y<ROZMIAR_POLA_Y; y++)
- {
- for(x=0; x<ROZMIAR_POLA_X; x++)
- {
- if(pole_gry[y+1][x]==blank)
- {
- pole_gry[y+1][x]=pole_gry[y][x];
- pole_gry[y][x] = blank;
- }
- if(pole_gry[y+1][x]==pole_gry[y][x])
- {
- pole_gry[y+1][x]+=pole_gry[y][x];
- pole_gry[y][x]=blank;
- }
- }
- }
- }
- if(warunek == 4)
- {
- for(y=0; y<ROZMIAR_POLA_Y;y++)
- {
- for(x=ROZMIAR_POLA_X-1; x<0; x--)
- {
- if(pole_gry[y][x-1]==blank)
- {
- pole_gry[y][x-1]=pole_gry[y][x];
- pole_gry[y][x] = blank;
- }
- if(pole_gry[y][x-1]==pole_gry[y][x])
- {
- pole_gry[y][x-1]+=pole_gry[y][x];
- pole_gry[y][x]=blank;
- }
- }
- }
- }
- if(warunek == 6)
- {
- for(y=0; y<ROZMIAR_POLA_Y;y++)
- {
- for(x=0; x<ROZMIAR_POLA_X-2; x++)
- {
- if(pole_gry[y][x+1]==blank)
- {
- pole_gry[y][x+1]=pole_gry[y][x];
- pole_gry[y][x] = blank;
- }
- if(pole_gry[y][x+1]==pole_gry[y][x])
- {
- pole_gry[y][x+1]+=pole_gry[y][x];
- pole_gry[y][x]=blank;
- }
- }
- }
- }
- // ---------------
- if(warunek == 5)
- {
- if(pole_gry[kposy][kposx]!=blank)
- {
- return 5;
- }
- else
- return 0;
- }
- }
- int generuj_liczbe()
- {
- int posx;
- int posy;
- int prawdopodobienstwo;
- char liczba;
- do
- {
- posx = rand() % ROZMIAR_POLA_X;
- posy = rand() % ROZMIAR_POLA_Y;
- }while(kolizja(5, posx, posy)== 5);
- prawdopodobienstwo = (rand() % 4)+1;
- if(prawdopodobienstwo == 1)
- {
- liczba = 4;
- }
- else
- {
- liczba = 2;
- }
- pole_gry[posy][posx] = liczba;
- }
- int ruch()
- {
- char move;
- A:
- move = getch();
- fflush(stdin);
- switch(move)
- {
- case 'w': kolizja(8,0,0);
- break;
- case 's': kolizja(2,0,0);
- break;
- case 'a': kolizja(4,0,0);
- break;
- case 'd': kolizja(6,0,0);
- break;
- default: goto A;
- }
- }
- int main()
- {
- srand(time(0));
- generuj_pole();
- for(;;)
- {
- generuj_liczbe();
- rysuj_pole();
- ruch();
- }
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement