Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.92 KB | None | 0 0
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <cstdlib>
  4. #include <conio.h>
  5. #include <string>
  6. #include <ctime>
  7.  
  8. using namespace std;
  9.  
  10. const int length = 4;
  11. int arr[length][length] = {{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
  12. bool lose = false;
  13. int setwidth = 1;
  14.  
  15. void print_game(){
  16.     system("cls");
  17.  
  18.     for (int i = 0; i < (5 + setwidth); i++)
  19.         cout << "###";
  20.  
  21.     cout << "\n";
  22.  
  23.     for (int i = 0; i < length; i++){
  24.         cout << "#";
  25.         for (int j = 0; j < length; j++){
  26.             for (int k = 0; k < setwidth - std::to_string(arr[i][j]).length(); k++)
  27.                 cout << " ";
  28.             cout << " " << arr[i][j] << "  ";
  29.         }
  30.         cout << "#";
  31.  
  32.         for (int j = 0; j < setwidth + 1; j++)
  33.             cout << "\n";
  34.     }
  35.     for (int i = 0; i < (5 + setwidth); i++)
  36.         cout << "###";
  37. }
  38.  
  39. void spawn_numbers(){
  40.     int a, b;
  41.  
  42.     bool flag = false;
  43.  
  44.     for (int i = 0; i < length; i++){
  45.         for (int j = 0; j < length; j++)
  46.             if (!arr[i][j]){
  47.                 flag = true;
  48.                 break;
  49.             }
  50.         if (flag)
  51.             break;
  52.     }
  53.  
  54.     if (flag)
  55.         while (true){
  56.             a = rand() % length;
  57.             b = rand() % length;
  58.             if (!arr[a][b]){
  59.                 arr[a][b] = 1;
  60.                 break;
  61.             }
  62.         }
  63. }
  64.  
  65. void move_numbers(){
  66.     char mov = _getch();
  67.  
  68.     if (mov == 'w'){
  69.         for (int i = 1; i < length; i++)
  70.             for (int j = 0; j < length; j++)
  71.                 if (arr[i][j] != 0)
  72.                     for (int k = 0; k < length - 1; k++)
  73.                         if (i - 1 - k == -1)
  74.                             break;
  75.                         else if (arr[i - 1 - k][j] == 0)
  76.                         {
  77.                             arr[i - 1 - k][j] = arr[i - k][j];
  78.                             arr[i - k][j] = 0;
  79.                         } else if (arr[i - 1 - k][j] == arr[i - k][j])
  80.                         {
  81.                             arr[i - 1 - k][j] = arr[i - k][j] * 2;
  82.                             arr[i - k][j] = 0;
  83.                         }
  84.     }
  85.  
  86.     else if (mov == 'd'){
  87.         for (int i = 0; i < length; i++)
  88.             for (int j = length - 2; j >-1; j--)
  89.                 if (arr[i][j] != 0)
  90.                     for (int k = 0; k < length - 1; k++)
  91.                         if (j + 1 + k == length)
  92.                             break;
  93.                         else if (arr[i][j + 1 + k] == 0)
  94.                         {
  95.                             arr[i][j + 1 + k] = arr[i][j + k];
  96.                             arr[i][j + k] = 0;
  97.                         } else if (arr[i][j + 1 + k] == arr[i][j + k])
  98.                         {
  99.                             arr[i][j + 1 + k] = arr[i][j + k] * 2;
  100.                             arr[i][j + k] = 0;
  101.                         }
  102.     }
  103.  
  104.     else if (mov == 's'){
  105.         for (int i = length - 2; i > -1; i--)
  106.             for (int j = 0; j < length; j++)
  107.                 if (arr[i][j] != 0)
  108.                     for (int k = 0; k < length - 1; k++)
  109.                         if (i + 1 + k == length)
  110.                             break;
  111.                         else if (arr[i + 1 + k][j] == 0)
  112.                         {
  113.                             arr[i + 1 + k][j] = arr[i + k][j];
  114.                             arr[i + k][j] = 0;
  115.                         } else if (arr[i + 1 + k][j] == arr[i + k][j]){
  116.                             arr[i + 1 + k][j] = arr[i + k][j] * 2;
  117.                             arr[i + k][j] = 0;
  118.                         }
  119.     }
  120.  
  121.     else if (mov == 'a'){
  122.         for (int i = 0; i < length; i++)
  123.             for (int j = 1; j < length; j++)
  124.                 if (arr[i][j] != 0)
  125.                     for (int k = 0; k < length - 1; k++)
  126.                         if (j - 1 - k == -1)
  127.                             break;
  128.                         else if (arr[i][j - 1 - k] == 0)
  129.                         {
  130.                             arr[i][j - 1 - k] = arr[i][j - k];
  131.                             arr[i][j - k] = 0;
  132.                         } else if (arr[i][j - 1 - k] == arr[i][j - k]){
  133.                             arr[i][j - 1 - k] = arr[i][j - k] * 2;
  134.                             arr[i][j - k] = 0;
  135.                         }
  136.     }
  137. }
  138.  
  139. void find_max(){
  140.     int max = -1;
  141.  
  142.     for (int i = 0; i < length; i++)
  143.         for (int j = 0; j < length; j++)
  144.             if (arr[i][j] > max)
  145.                 max = arr[i][j];
  146.     setwidth = std::to_string(max).length();
  147. }
  148.  
  149. void check_game(){
  150.     for (int i = 0; i < length; i++)
  151.         for (int j = 0; j < length; j++)
  152.             if (arr[i][j] == arr[i + 1][j] || arr[i][j] == arr[i][j + 1])
  153.                 return;
  154.  
  155.     lose = true;
  156. }
  157.  
  158. void main(){
  159.     srand(time(0));
  160.  
  161.     while (!lose){
  162.         spawn_numbers();
  163.         print_game();
  164.         move_numbers();
  165.         find_max();
  166.         check_game();
  167.     }
  168.  
  169.     system("pause");
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement