Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  king.cpp
Language: C/C++
Code:
#include<iostream>
using namespace std;

void king(int);
int trans(char);
void LoadNewTable(int);
void Neprohodimi(int);
void KingStart(int);
void table(int);
char board[20][20], m;
int a, b, kx, ky;
int main()
{
     int n = 1, play = 1;
     do
     {
     cout << "Vyvedete razmera na dyskata(2-9):";
     while (n < 2 || n > 9)
     {     
          cin >> n;
     }
     cout << endl;
     LoadNewTable(n);
     table(n);
     KingStart(n);
     table(n);
     Neprohodimi(n);
     table(n);
     king(n);
     cout << "nIgray pak(1), izhod(0)?n";
     cin >> play;
     cout << endl;
     } while (play==1);
     system("Pause");
}

void king(int n)
{
     bool game = true;
     do
     {
          cout << "Igrach edno pravi hod:";
          do
          {
               cin >> m >> a;
               a = n - a;
               b = trans(m);
          } while (a < 0 || a >= n || b<1 || b>n || board[a][b] == '*' || board[a][b] == 'K' || a >= kx + 2 || a <= kx - 2 || b >= ky + 2 || b <= ky - 2);
          board[a][b] = 'K';
          board[kx][ky] = '*';
          kx = a;
          ky = b;
          cout << endl;
          table(n);
          if (board[a][b] != '0'&&board[a][b + 1] != '0'&&board[a][b - 1] != '0'&&board[a + 1][b] != '0'&&board[a + 1][b + 1] != '0'&&board[a + 1][b - 1] != '0'&&board[a - 1][b] != '0'&&board[a - 1][b + 1] != '0'&&board[a - 1][b - 1] != '0')
          {
               cout << "Igrach edno pecheli!!!n";
               game = false;
          }
          else
          {
               cout << "Igrach dve pravi hod:";
               do
               {
                    cin >> m >> a;
                    a = n - a;
                    b = trans(m);
               } while (a < 0 || a >= n || b<1 || b>n || board[a][b] == '*' || board[a][b] == 'K' || a >= kx + 2 || a <= kx - 2 || b >= ky + 2 || b <= ky - 2);
               board[a][b] = 'K';
               board[kx][ky] = '*';
               kx = a;
               ky = b;
               cout << endl;
               table(n);
               if (board[a][b] != '0'&&board[a][b + 1] != '0'&&board[a][b - 1] != '0'&&board[a + 1][b] != '0'&&board[a + 1][b + 1] != '0'&&board[a + 1][b - 1] != '0'&&board[a - 1][b] != '0'&&board[a - 1][b + 1] != '0'&&board[a - 1][b - 1] != '0')
               {
                    cout << "Igrach dve pecheli!!!n";
                    game = false;
               }
          }
     } while (game==true);
}

int trans(char a)
{
     int m = 1;
     for (char k = 'a'; k <= 't'; k++)
     {
          if (a == k)
               return m;
          m++;
     }
}
void LoadNewTable(int n)
{
     char red = '1', kolona = 'a';
     int a, b;
     for (int i = 0; i <= n - 1; i++)
          for (int j = 0; j <= n; j++)
               board[i][j] = '0';
     for (int i = n - 1; i >= 0; i--)
     {
          board[i][0] = red;
          red++;
     }
     for (int j = 1; j <= n; j++)
     {
          board[n][j] = kolona;
          kolona++;
     }
}
void KingStart(int n)
{
     cout << "Zadayte nachalni kordinati na carq (Primer: b2):";
     do
     {
          cin >> m >> a;
          a = n - a;
          b = trans(m);
     } while (a<0||a>=n||b<1||b>n);
     cout << endl;
     board[a][b] = 'K';
     kx = a;
     ky = b;
}
void Neprohodimi(int n)
{
     cout << "Zadayte kordinati za neprohodimi mesta (Primer: a1)nVyvedete ""x0"", ako ne jelaete poveche..nn";
     do
     {
          do
          {
               cin >> m >> a;
               a = n - a;
               b = trans(m);
          } while ((board[a][b] != '0') && (m!='x'));
          board[a][b] = '*';
     } while ((m != 'x') && (a != 0));
     cout << endl;
}
void table(int n)
{
     for (int i = 0; i <= n; i++)
     {
          int k = i;
          //cout << board[i][0];
          for (int j = 0; j <= n+1; j++)
               cout << board[i][j] << " ";
          //if (k == 0)
          //cout << endl;
          cout << endl;
     }
     cout << endl;
}
          
Comments: