Advertisement
Garusek

Untitled

May 6th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.29 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. char board[8][8] =
  6. {
  7.     {' ', 'b', ' ', 'b', ' ', 'b', ' ', 'b'},
  8.     {'b', ' ', 'b', ' ', 'b', ' ', 'b', ' '},
  9.     {' ', 'b', ' ', 'b', ' ', 'b', ' ', 'b'},
  10.     {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
  11.     {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '},
  12.     {'r', ' ', 'r', ' ', 'r', ' ', 'r', ' '},
  13.     {' ', 'r', ' ', 'r', ' ', 'r', ' ', 'r'},
  14.     {'r', ' ', 'r', ' ', 'r', ' ', 'r', ' '},
  15. };
  16.  
  17. char turn = 'B';
  18. bool leap;
  19. bool game_running = true;
  20. int row1, row2, column1, column2;
  21.  
  22. void display_board();
  23. void input();
  24. bool check_move();
  25. void move();
  26. void do_leap();
  27. void king();
  28. void game_over();
  29.  
  30. int main()
  31. {
  32.     cout << "WARCABY\n";
  33.     cout << "Gracz 1 [b]\n";
  34.     cout << "Gracz 2 2 [r]\n\n";
  35.     cout << "Wielka litera oznacza krola.\n";
  36.     cout << "NOTE: Rzedy i kolumny liczymy od 0, nie 1.\n";
  37.     cout << "<------KOLUMNY------>\n";
  38.     cout << "^\n";
  39.     cout << "|\n";
  40.     cout << "|\n";
  41.     cout << "|\n";
  42.     cout << "RZEDY\n";
  43.     cout << "|\n";
  44.     cout << "|\n";
  45.     cout << "|\n";
  46.     cout << "v\n\n";
  47.     cout << "_____________________________________________________________________________________\n\n";
  48.     cout << "Nacisnij enter by zaczac";
  49.     cin.get();//powoduje czekanie poki ktos nie nacisnie przycisku
  50.  
  51.     while (game_running)
  52.     {
  53.         display_board();
  54.  
  55.         if (turn == 'B')
  56.         {
  57.             cout << "--Gracz 1 [B]--\n";
  58.         }
  59.         else if (turn == 'R')
  60.         {
  61.             cout << "--Gracz 2 [R]--\n";
  62.         }
  63.  
  64.         input();
  65.         move();
  66.         king();
  67.         game_over();
  68.     }
  69.  
  70.     if (turn == 'B')
  71.     {
  72.         cout << endl << endl << "Gracz 1 [Red] wygrywa!!!\n";
  73.     }
  74.     else if (turn == 'R')
  75.     {
  76.         cout << endl << endl << "Gracz 2 [Black] wygrywa!!!\n";
  77.     }
  78.  
  79.     cout << Koniec gry\n";
  80. }
  81.  
  82. void display_board()
  83. {
  84.    cout << "==================================================================================\n\n\n\n";
  85.    cout << "       0         1         2         3         4         5         6         7     \n";
  86.    cout << "  _________________________________________________________________________________\n";
  87.    cout << "  |         |         |         |         |         |         |         |         |\n";
  88.    cout << "  |         |         |         |         |         |         |         |         |\n";
  89.    cout << "0 |    " << board[0][0] << "    |    " << board[0][1] << "    |    " << board[0][2] << "    |    "  << board[0][3] << "    |    " << board[0][4] << "    |    " << board[0][5] << "    |    " << board[0][6] << "    |    " << board[0][7] << "    |\n";
  90.    cout << "  |         |         |         |         |         |         |         |         |\n";
  91.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  92.    cout << "  |         |         |         |         |         |         |         |         |\n";
  93.    cout << "  |         |         |         |         |         |         |         |         |\n";
  94.    cout << "1 |    " << board[1][0] << "    |    " << board[1][1] << "    |    " << board[1][2] << "    |    "  << board[1][3] << "    |    " << board[1][4] << "    |    " << board[1][5] << "    |    " << board[1][6] << "    |    " << board[1][7] << "    |\n";
  95.    cout << "  |         |         |         |         |         |         |         |         |\n";
  96.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  97.    cout << "  |         |         |         |         |         |         |         |         |\n";
  98.    cout << "  |         |         |         |         |         |         |         |         |\n";
  99.    cout << "2 |    " << board[2][0] << "    |    " << board[2][1] << "    |    " << board[2][2] << "    |    "  << board[2][3] << "    |    " << board[2][4] << "    |    " << board[2][5] << "    |    " << board[2][6] << "    |    " << board[2][7] << "    |\n";
  100.    cout << "  |         |         |         |         |         |         |         |         |\n";
  101.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  102.    cout << "  |         |         |         |         |         |         |         |         |\n";
  103.    cout << "  |         |         |         |         |         |         |         |         |\n";
  104.    cout << "3 |    " << board[3][0] << "    |    " << board[3][1] << "    |    " << board[3][2] << "    |    "  << board[3][3] << "    |    " << board[3][4] << "    |    " << board[3][5] << "    |    " << board[3][6] << "    |    " << board[3][7] << "    |\n";
  105.    cout << "  |         |         |         |         |         |         |         |         |\n";
  106.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  107.    cout << "  |         |         |         |         |         |         |         |         |\n";
  108.    cout << "  |         |         |         |         |         |         |         |         |\n";
  109.    cout << "4 |    " << board[4][0] << "    |    " << board[4][1] << "    |    " << board[4][2] << "    |    "  << board[4][3] << "    |    " << board[4][4] << "    |    " << board[4][5] << "    |    " << board[4][6] << "    |    " << board[4][7] << "    |\n";
  110.    cout << "  |         |         |         |         |         |         |         |         |\n";
  111.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  112.    cout << "  |         |         |         |         |         |         |         |         |\n";
  113.    cout << "  |         |         |         |         |         |         |         |         |\n";
  114.    cout << "5 |    " << board[5][0] << "    |    " << board[5][1] << "    |    " << board[5][2] << "    |    "  << board[5][3] << "    |    " << board[5][4] << "    |    " << board[5][5] << "    |    " << board[5][6] << "    |    " << board[5][7] << "    |\n";
  115.    cout << "  |         |         |         |         |         |         |         |         |\n";
  116.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  117.    cout << "  |         |         |         |         |         |         |         |         |\n";
  118.    cout << "  |         |         |         |         |         |         |         |         |\n";
  119.    cout << "6 |    " << board[6][0] << "    |    " << board[6][1] << "    |    " << board[6][2] << "    |    "  << board[6][3] << "    |    " << board[6][4] << "    |    " << board[6][5] << "    |    " << board[6][6] << "    |    " << board[6][7] << "    |\n";
  120.    cout << "  |         |         |         |         |         |         |         |         |\n";
  121.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  122.    cout << "  |         |         |         |         |         |         |         |         |\n";
  123.    cout << "  |         |         |         |         |         |         |         |         |\n";
  124.    cout << "7 |    " << board[7][0] << "    |    " << board[7][1] << "    |    " << board[7][2] << "    |    "  << board[7][3] << "    |    " << board[7][4] << "    |    " << board[7][5] << "    |    " << board[7][6] << "    |    " << board[7][7] << "    |\n";
  125.    cout << "  |         |         |         |         |         |         |         |         |\n";
  126.    cout << "  |_________|_________|_________|_________|_________|_________|_________|_________|\n";
  127. }
  128.  
  129. void input()
  130. {
  131.    cout << "Rusz pionek\n";
  132.    cout << "Rzad: ";
  133.    cin >> row1;
  134.    cout << "Kolumna: ";
  135.    cin >> column1;
  136.  
  137.    while (row1 < 0 || row1 > 7 || column1 < 0 || column1 > 7)
  138.    {
  139.        cout << "Nieprawidłowy wpis. Wpisz liczbe od 0 do 7.\n";
  140.        cout << "Rusz pionkiem na:\n";
  141.        cout << "Row: ";
  142.        cin >> row1;
  143.        cout << "Column: ";
  144.        cin >> column1;
  145.    }
  146.  
  147.    cout << "Na pole:\n";
  148.    cout << "Rzad: ";
  149.    cin >> row2;
  150.    cout << "Kolumna: ";
  151.    cin >> column2;
  152.  
  153.    while (row2 < 0 || row2 > 7 || column2 < 0 || column2 > 7)
  154.    {
  155.        cout << "Nieprawidłowy wpis. Wpisz liczbe od 0 do 7\n";
  156.        cout << "Na pole\n";
  157.        cout << "Rzad: ";
  158.        cin >> row2;
  159.        cout << "Kolumna: ";
  160.        cin >> column2;
  161.    }
  162.  
  163.    while (check_move() == false)
  164.    {
  165.        cout << "Niedozwolony ruch!!\n";
  166.        input();
  167.    }
  168. }
  169.  
  170. bool check_move()
  171. {
  172.    //sprawdza czy normalny pionek nie rusza sie w tyl
  173.    if (board[row1][column1] != 'B' && board[row1][column1] != 'R')
  174.    {
  175.        if ((turn == 'B' && row2 < row1) || (turn == 'R' && row2 > row1))
  176.        {
  177.            leap = false;
  178.            return false;
  179.        }
  180.    }
  181.  
  182.    //sprawdza czy czasem pole na ktore pionek nie chce sie przesunac jest zajete
  183.    if (board[row2][column2] != ' ')
  184.    {
  185.        leap = false;
  186.        return false;
  187.    }
  188.  
  189.    //sprawdza czy pole na ktore chcesz sie udac jest dostepne dla jakiegokolwiek pionka
  190.    if (board[row1][column1] == ' ')
  191.    {
  192.        leap = false;
  193.        return false;
  194.    }
  195.  
  196.    //sprawdczy czy pionek sie nie rusza po ukosie
  197.    if (column1 == column2 || row1 == row2)
  198.    {
  199.        leap = false;
  200.        return false;
  201.    }
  202.  
  203.    //sprawdcza czy pionek nie rusza sie dalej niz o jedna kolumne i jeden rzad
  204.    if ((column2 > column1 + 1 || column2 < column1 - 1) && (row2 == row1 +1 || row2 == row1 - 1))
  205.    {
  206.        leap = false;
  207.        return false;
  208.    }
  209.  
  210.    //sprawdcza czy pionek 'przeskakuje'
  211.    if (row2 > row1 + 1 || row2 < row1 - 1)
  212.    {
  213.        //sprawdza czy nie przeskoczyl za daleko
  214.        if (row2 > row1 + 2 || row2 < row1 - 2)
  215.        {
  216.            leap = false;
  217.            return false;
  218.        }
  219.  
  220.        //sprawdza czy pionek sie nie rusza o dokladnie 2 kolumny
  221.        if (column2 != column1 + 2 && column2 != column1 - 2)
  222.        {
  223.            leap = false;
  224.            return false;
  225.        }
  226.  
  227.        //sprawdza czy pionek przeskakuje nad innym pionkiem
  228.        if (row2 > row1 && column2 > column1)
  229.        {
  230.            if (board[row2 - 1][column2 - 1] == ' ')
  231.            {
  232.                leap = false;
  233.                return false;
  234.            }
  235.        }
  236.        else if (row2 > row1 && column2 < column1)
  237.        {
  238.            if (board[row2 - 1][column2 + 1] == ' ')
  239.            {
  240.                leap = false;
  241.                return false;
  242.            }
  243.        }
  244.        else if (row2 < row1 && column2 > column1)
  245.        {
  246.            if (board[row2 + 1][column2 - 1] == ' ')
  247.            {
  248.                leap = false;
  249.                return false;
  250.            }
  251.        }
  252.        else if (row2 < row1 && column2 < column1)
  253.        {
  254.            if (board[row2 + 1][column2 + 1] == ' ')
  255.            {
  256.                leap = false;
  257.                return false;
  258.            }
  259.        }
  260.  
  261.        leap = true;
  262.        return true;
  263.    }
  264.  
  265.    leap = false;
  266.    return true;
  267. }
  268.  
  269. void move()
  270. {
  271.    bool king_piece = false;
  272.  
  273.    if (board[row1][column1] == 'B' || board[row1][column1] == 'R')
  274.    {
  275.        king_piece = true;
  276.    }
  277.  
  278.    board[row1][column1] = ' ';
  279.  
  280.    if (turn == 'B')
  281.    {
  282.        if (king_piece == false)
  283.        {
  284.            board[row2][column2] = 'b';
  285.        }
  286.        else if (king_piece == true)
  287.        {
  288.            board[row2][column2] = 'B';
  289.        }
  290.  
  291.        turn = 'R';
  292.    }
  293.    else if (turn == 'R')
  294.    {
  295.        if (king_piece == false)
  296.        {
  297.            board[row2][column2] = 'r';
  298.        }
  299.        else if (king_piece == true)
  300.        {
  301.            board[row2][column2] = 'R';
  302.        }
  303.  
  304.        turn = 'B';
  305.    }
  306.  
  307.    if (leap == true)
  308.    {
  309.        do_leap();
  310.    }
  311. }
  312.  
  313. void do_leap()
  314. {
  315.    char answer;
  316.  
  317.    //zabiera pionka po przeskoczeniu przez niego innym pionkiem
  318.    if (row2 > row1 && column2 > column1)
  319.    {
  320.        board[row2 - 1][column2 - 1] = ' ';
  321.    }
  322.    else if (row2 > row1 && column2 < column1)
  323.    {
  324.        board[row2 - 1][column2 + 1] = ' ';
  325.    }
  326.    else if (row2 < row1 && column2 > column1)
  327.    {
  328.        board[row2 + 1][column2 - 1] = ' ';
  329.    }
  330.    else if (row2 < row1 && column2 < column1)
  331.    {
  332.        board[row2 + 1][column2 + 1] = ' ';
  333.    }
  334.  
  335.    display_board();//wyswietlenie tablicy po zmianach
  336.  
  337.    //pyta gracza czy chce nadal 'skakac'
  338.    do
  339.    {
  340.        cout << "Skoczyles tylko raz. Chcesz skoczyc jeszcze raz, jezeli mozesz?? (y/n): ";
  341.        cin >> answer;
  342.    }
  343.    while (answer != 'Y' && answer != 'y' && answer != 'N' && answer != 'n');
  344.  
  345.    if (answer == 'y' || answer == 'Y')
  346.    {
  347.        row1 = row2;
  348.        column1 = column2;
  349.        cout << "Skacz pionkiem: row: " << row1 << ", column: " << column1 << endl;
  350.        cout << "Do pola\n";
  351.        cout << "rzad: ";
  352.        cin >> row2;
  353.        cout << "kolumna: ";
  354.        cin >> column2;
  355.  
  356.        while (row2 < 0 || row2 > 7 || column2 < 0 || column2 > 7)
  357.        {
  358.            cout << "Nieprawidłowy wpis. Wpisz liczbe od 0 do 7.\n";
  359.            cout << "Na pole\n";
  360.            cout << "Rzad: ";
  361.            cin >> row2;
  362.            cout << "Kolumna: ";
  363.            cin >> column2;
  364.        }
  365.  
  366.        if (turn == 'B')
  367.        {
  368.            turn = 'R';
  369.        }
  370.        else if (turn == 'R')
  371.        {
  372.            turn = 'B';
  373.        }
  374.  
  375.        check_move();
  376.  
  377.        if (leap == false)
  378.        {
  379.            cout << "Niedozwolony skok!!\n";
  380.  
  381.            if (turn == 'B')
  382.            {
  383.                turn = 'R';
  384.            }
  385.            else if (turn == 'R')
  386.            {
  387.                turn = 'B';
  388.            }
  389.        }
  390.        else if (leap == true)
  391.        {
  392.            move();
  393.        }
  394.    }
  395. }
  396.  
  397. void king()
  398. {
  399.    for (int i = 0; i < 8; i++)
  400.    {
  401.        if (board[0][i] == 'r')
  402.        {
  403.            board[0][i] = 'R';
  404.        }
  405.  
  406.        if (board[7][i] == 'b')
  407.        {
  408.            board[7][i] = 'B';
  409.        }
  410.    }
  411. }
  412.  
  413. void game_over()
  414. {
  415.    int counter = 0;
  416.  
  417.    for (int i = 0; i < 8; i++)
  418.    {
  419.        for (int j = 0; j < 8; j++)
  420.        {
  421.            if (board[i][j] != ' ')
  422.            {
  423.                counter++;
  424.            }
  425.        }
  426.    }
  427.  
  428.    if (counter > 1)
  429.    {
  430.        game_running = true;
  431.    }
  432.    else if (counter == 1)
  433.    {
  434.        game_running = false;
  435.    }
  436. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement