SHARE
TWEET

Mini-Twos

a guest Jun 27th, 2015 1,086 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
Top