Вопрос Нужна помощь по программированию. Язык с++

Регистрация
31 Авг 2012
Сообщения
89
Репутация
0
Спасибо
0
Монет
0
Я пытаюсь сделать игру "пятнашки" и мне надо эти числа при каждом заходе в игру расставить их рандомно (то есть перемешать).
int a[4][4]{
{'01','02','03','04'},
{'05','06','07','08'},
{'09','10','11','12'},
{'13','14','15',' '}
};

Какой коммандой я могу это сделать?
 
x = rand() % 4; // теперь x содержит случайное число от 0 до 3, включительно Чтобы переставить два элемента используя std:swap соответственно : #include ... std::swap(x,y); Теперь чтобы поменять местами: Делаем в цикле чтобы помешать достаточно хорошо: for(i=0; i<количество_итераций_чтобы_хорошо_перемешалось) std::swap(a[rand() % 4][rand() % 4], a[rand() % 4][rand() % 4]);
 
Например, так: #include < iostream> #include < windows.h> #include < time.h> #include < conio.h> using namespace std; HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); void sw(int k,int &r,int* &p) { switch(k) { case 72: if(r > 3) p[r]^=p[r-4],p[r-4]^=p[r],p[r]^=p[r-4],r-=4; break; case 80: if(r < 12) p[r]^=p[r+4],p[r+4]^=p[r],p[r]^=p[r+4],r+=4; break; case 77: if(r % 4!=3) p[r]^=p[r+1],p[r+1]^=p[r],p[r]^=p[r+1],r++; break; case 75: if(r % 4) p[r]^=p[r-1],p[r-1]^=p[r],p[r]^=p[r-1],r--; break; } } int main() { system("cls"); COORD cor; int r,j,k; int* p=new int[16](); int** m=new int*[4](); srand(time(0)); for(j=0;j < 4;) m[j++]=p+j*4; for(j=16;--j;p[j-1]=j); for(r=15,j=0;j < 1000;j++) sw((k=rand() % 4,k=72+!!k+2*k+((1<<!(k-3))-1)),r,p); for(;;) { for(j=0;j < 4;j++, cout << endl) for(k=0;k < 4;k++) cor.X=j*4,cor.Y=k*2,SetConsoleCursorPosition(h,cor),cout.width(2),(m[k][j]?cout<< m[k][j] << " ":cout<< " "); switch(getch()) { case 224: if(!kbhit()) break; case 0: sw(getch(),r,p); break; case 27: exit(0); } } delete [] p; delete [] m; return 0; }
 
если честно можно просто одномерный массив на 16 элментов создать заполнить числами 1, по -16 = сделать = ' пустым потом перемещать данный массив через индексы и заполнить ваш массив 4 на 4 заначениям массива созданного выше
 
Назад
Сверху