Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- using namespace std;
- const int LIM{ 8 };
- void show(char(*plansza)[LIM]);
- void show(int(*plansza)[LIM]);
- void choice(char(*plansza)[LIM], int pion[], int poziom[], int & x, int & y);
- void inicjuj(char(*plansza)[LIM], int(*dostep)[LIM], int & x, int & y);
- bool isAvailable(char(*plansza)[LIM], int x, int y);
- void checkAvaibility(char plansza[][LIM], int dostep[][LIM], int pion[], int poziom[]);
- int pickHardest(char plansza[][LIM], int dostep[][LIM], int pion[], int poziom[], int & x, int & y);
- int main() {
- srand(time(NULL));
- int x, y;
- char plansza[LIM][LIM];
- int dostep[LIM][LIM]{};
- int poziom[LIM] = { 2, 1, -1, -2, -2, -1, 1, 2 };
- int pion[LIM] = { -1, -2, -2, -1, 1, 2, 2, 1 };
- int move_, i;
- inicjuj(plansza, dostep, x, y);
- checkAvaibility(plansza, dostep, pion, poziom);
- for ( i = 0; i<64; i++) {
- show(plansza);
- cout << endl;
- plansza[x][y] = 'O';
- checkAvaibility(plansza, dostep, pion, poziom);
- move_ = pickHardest(plansza, dostep, pion, poziom, x, y);
- if (move_ == 9)
- break;
- else {
- x = x + pion[move_];
- y = y + poziom[move_];
- }
- plansza[x][y] = 'S';
- }
- cout << endl << "Wykonano " << i << " ruchow.";
- cin.sync();
- cin.get();
- return 0;
- }
- void inicjuj(char(*plansza)[LIM], int(*dostep)[LIM], int & x, int & y) {
- int i, j;
- for (i = 0; i<LIM; i++) {
- for (j = 0; j<LIM; j++)
- plansza[i][j] = 'x';
- }
- cout << "PODAJ POCZATKOWE POLE SKOCZKA\n";
- while (!(cin >> x && cin >> y && isAvailable(plansza, x, y))) {
- cout << "PODAJ POPRAWNE DANE: ";
- cin.clear();
- cin.sync();
- }
- plansza[x][y] = 'S';
- }
- void checkAvaibility(char plansza[][LIM], int dostep[][LIM], int pion[], int poziom[]) {
- int i, j, k;
- for (i = 0; i< LIM; i++){
- for (j = 0; j<LIM; j++){
- dostep[i][j] = 0;
- for (k = 0; k<LIM; k++) {
- if (isAvailable(plansza, i + pion[k], j + poziom[k]))
- dostep[i][j]++;
- }
- }
- }
- }
- void show(char (*plansza)[LIM]) {
- int i, j;
- cout << ">>STAN PLANSZY<<\n";
- for (i = 0; i<LIM; i++) {
- for (j = 0; j<LIM; j++)
- cout << plansza[i][j] << " ";
- cout << endl;
- }
- }
- void show(int (*plansza)[LIM]) {
- int i, j;
- cout << ">>STAN PLANSZY<<\n";
- for (i = 0; i<LIM; i++) {
- for (j = 0; j<LIM; j++)
- cout << plansza[i][j] << " ";
- cout << endl;
- }
- }
- void choice(char(*plansza)[LIM], int pion[], int poziom[], int & x, int & y) {
- for (int i{}; i<LIM; i++)
- cout << "Ruch " << i << ": " << "poziom " << poziom[i] << "; pion " << pion[i] << endl;
- int ch;
- cout << "Wybierz ruch: ";
- while (!(cin >> ch && isAvailable(plansza, x + pion[ch], y + poziom[ch]))) {
- cin.clear();
- cin.sync();
- }
- x += pion[ch];
- y += poziom[ch];
- }
- bool isAvailable(char(*plansza)[LIM], int x, int y) {
- if ((x<0 || x>7) || (y<0 || y>7) || plansza[x][y] == 'O' || plansza[x][y]=='S')
- return false;
- return true;
- }
- int pickHardest(char plansza[][LIM], int dostep[][LIM], int pion[], int poziom[], int & x, int & y) {
- int move_ = 9;
- int x1, y1;
- for (int i = 0; i<LIM; i++) {
- x1 = x + pion[i];
- y1 = y + poziom[i];
- if (isAvailable(plansza,x1,y1)){
- if (dostep[x1][y1] < move_)
- move_ = i;
- else if (dostep[x1][y1] == move_) {
- if (rand() % 2 == 0)
- move_ = i;
- }
- }
- }
- return move_;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement