Advertisement
Guest User

Mini-Twos

a guest
Jun 27th, 2015
1,223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include<iostream>
  2. #include<ctime>
  3. #include<cstdlib>
  4. #include<array>
  5. #include<iomanip>
  6. #include<conio.h>
  7. using namespace std;
  8. array<int,16> b,c;
  9. int r(){return rand()%3;}
  10. void main(){
  11.     srand(time(NULL));
  12.     int ch = 0;
  13.     int dx=0,dy=0; 
  14.     b[9] = 1; b[10] = 2;
  15.     do {           
  16.         system("cls");
  17.         if (ch==72) dy=1; if (ch==80) dy=-1;
  18.         if (ch==75) dx=-1; if (ch==77) dx=1;   
  19.         bool g = dx!=0 || dy!=0;
  20.         bool m = !g || (ch==0);
  21.         while(g){
  22.             g = false;
  23.             int d = (dx==1 || dy==-1);
  24.             for(int i=0;i<16;i++){
  25.                 int ii = (dx==-1 || dy==-1)?15-i:i;
  26.                 int j=ii/4;
  27.                 int ni = (dx==1)?(ii+1):((dx==-1)?(ii-1):((dy==1)?(ii-4):(ii+4)));
  28.                 bool go = b[ii] && ((dx==1 && ii%4!=3) || (dx==-1 && ii%4!=0) || (dy==1 && j%4!=0) || (dy==-1 && j%4!=3));             
  29.                 if (go){
  30.                     if (b[ii]==b[ni]){
  31.                         b[ii]=0;
  32.                         b[ni]*=2;
  33.                         g = true;      
  34.                         m = true;
  35.                     }
  36.                     else if (b[ni]==0){
  37.                         b[ni] = b[ii];
  38.                         b[ii] = 0;
  39.                         g = true;
  40.                         m = true;
  41.                     }
  42.                 }  
  43.             }
  44.         }
  45.         for(int i=0;i<16;i++){
  46.             int j=i/4;
  47.             bool go = (b[i]==0) && ((dx==1 && i%4==0) || (dx==-1 && i%4==3) || (dy==1 && j%4==3) || (dy==-1 && j%4==0));           
  48.             if (go) b[i] = r();
  49.         }  
  50.         for(int i=0;i<16;i++){
  51.             cout << setw(3) << setfill(' ') << b[i] << ' ' << (i%4==3?"\n":"");
  52.         }      
  53.         cout << "\n";      
  54.                
  55.         if (!m){
  56.             int score = 0;
  57.             for(auto i: b) score+=i;
  58.             cout << "Score: " << score;
  59.             return;
  60.         }
  61.         dx = dy = 0;           
  62.     }  
  63.     while((ch = _getch()) != 27);
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement