Advertisement
wojcieszek

warcaby

Dec 1st, 2019
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 17.41 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int ruchy = 0, pionki_1 = 12, pionki_2 = 12;
  6.  
  7. void drukowanie_planszy(char tablica[8][8]);
  8.  
  9. int main()
  10. {
  11.     char nick1[11], nick2[11], array[8][8];
  12.     int check_nicks = 0, i, j, k, a;
  13.     while(1){
  14.         printf("Podaj nick pierwszego gracza:");
  15.         scanf("%10s", nick1);
  16.         while((a = getchar()) != '\n' && a != EOF){}
  17.         printf("Podaj nick drugiego gracza:");
  18.         scanf("%10s", nick2);
  19.         check_nicks = strcmp(nick1, nick2);
  20.         if(check_nicks != 0){
  21.             break;
  22.         }
  23.         else {
  24.             printf("Bledne dane\n");
  25.         }
  26.     }
  27.     for(i = 0; i < 8; i++){
  28.             if(i == 0 || i == 2){
  29.                 for(k = 0; k < 8; k+=2){
  30.                     array[i][k+1] = 'o';
  31.                     array[i][k] = ' ';
  32.                 }
  33.             }
  34.             if(i == 1){
  35.                 for(k = 0; k < 8; k+=2){
  36.                     array[i][k] = 'o';
  37.                     array[i][k+1] = ' ';
  38.                 }
  39.             }
  40.             if(i == 5 || i == 7){
  41.                 for(k = 0; k < 8; k+=2){
  42.                     array[i][k] = 'x';
  43.                     array[i][k+1] = ' ';
  44.                 }
  45.             }
  46.             if(i == 6){
  47.                 for(k = 0; k < 8; k+=2){
  48.                     array[i][k+1] = 'x';
  49.                     array[i][k] = ' ';
  50.                 }
  51.             }
  52.             if(i == 3 || i == 4){
  53.                 for(k = 0; k < 8; k++){
  54.                     array[i][k] = ' ';
  55.                 }
  56.             }
  57.     }
  58.     drukowanie_planszy(array);
  59.     char kolumna1, kolumna2;
  60.     char columns[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'};
  61.     int wiersz1, wiersz2, blad1 = 0, blad2 = 0;
  62.     while(1){
  63.         if(ruchy == 0){
  64.             printf("Teraz ruch bialych czyli %-10s\n", nick1);
  65.         }
  66.         if(ruchy == 1){
  67.             printf("Teraz ruch czarnych czyli %-10s\n", nick2);
  68.         }
  69.         printf("Podaj na jakie pole chcesz sie ruszyc (lewy dolny rog to a1):");
  70.         int check_field = scanf(" %c%d %c%d", &kolumna1, &wiersz1, &kolumna2, &wiersz2);
  71.         while((a = getchar()) != '\n' && a != EOF){}
  72.         for(i = 0; i < 8; i++){
  73.             if(kolumna1 == columns[i]){
  74.                 break;
  75.             }
  76.             if(i == 7){
  77.                 blad1++;
  78.             }
  79.         }
  80.         for(i = 0; i < 8; i++){
  81.             if(kolumna2 == columns[i]){
  82.                 break;
  83.             }
  84.             if(i == 7){
  85.                 blad2++;
  86.             }
  87.         }
  88.         if(wiersz1 > 8 || wiersz1 < 1 || wiersz2 > 8 || wiersz2 < 1 || blad1 == 1 || blad2 == 1 || check_field != 4){
  89.             printf("Podaj prawidlowe dane\n");
  90.             continue;
  91.         }
  92.         kolumna1 -= 'a';
  93.         kolumna2 -= 'a';
  94.         wiersz1 = 8 - wiersz1;
  95.         wiersz2 = 8 - wiersz2;
  96.         if(ruchy == 0){
  97.             if(array[wiersz1][kolumna1] == 'o'){
  98.                 if(array[wiersz2][kolumna2] == ' '){
  99.                     if(wiersz2 - wiersz1 == 1 && abs(kolumna1 - kolumna2) == 1){
  100.                         array[wiersz1][kolumna1] = ' ';
  101.                         array[wiersz2][kolumna2] = 'o';
  102.                         ruchy = !ruchy;
  103.                         if(wiersz2 == 7){
  104.                             array[wiersz2][kolumna2] = 'O';
  105.                         }
  106.                     }
  107.                     if(abs(wiersz1 - wiersz2) == 2 && abs(kolumna1 - kolumna2) == 2){
  108.                         if(array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'x' || array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'X'){
  109.                             array[wiersz1][kolumna1] = ' ';
  110.                             array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] = ' ';
  111.                             array[wiersz2][kolumna2] = 'o';
  112.                             ruchy = !ruchy;
  113.                             pionki_2--;
  114.                             if(wiersz2 == 7){
  115.                                 array[wiersz2][kolumna2] = 'O';
  116.                             }
  117.                         }
  118.                     }
  119.                 }
  120.             }
  121.             if(array[wiersz1][kolumna1] == 'O'){
  122.                 if(array[wiersz2][kolumna2] == ' '){
  123.                     if(abs(wiersz2 - wiersz1) == 1 && abs(kolumna1 - kolumna2) == 1){
  124.                         array[wiersz1][kolumna1] = ' ';
  125.                         array[wiersz2][kolumna2] = 'O';
  126.                         ruchy = !ruchy;
  127.                     }
  128.                     if(abs(wiersz1 - wiersz2) == 2 && abs(kolumna1 - kolumna2) == 2){
  129.                         if(array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'x' || array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'X'){
  130.                             array[wiersz1][kolumna1] = ' ';
  131.                             array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] = ' ';
  132.                             array[wiersz2][kolumna2] = 'O';
  133.                             ruchy = !ruchy;
  134.                             pionki_2--;
  135.                         }
  136.                     }
  137.                     if(abs(wiersz1 - wiersz2) > 2 && abs(kolumna1 - kolumna2) > 2 && abs(kolumna1 - kolumna2) == abs(wiersz1 - wiersz2)){
  138.                         int licznik_petli, licznik_pionkow = 0, kolumna_zbitego = 0, wiersz_zbitego = 0;
  139.                         if(wiersz1 - wiersz2 > 0 && kolumna1 - kolumna2 > 0){
  140.                             for(licznik_petli = 1; licznik_petli < wiersz1 - wiersz2; licznik_petli++){
  141.                                 if(array[wiersz1-licznik_petli][kolumna1-licznik_petli] == ' '){
  142.                                     continue;
  143.                                 }
  144.                                 else if(array[wiersz1-licznik_petli][kolumna1-licznik_petli] == 'x' || array[wiersz1-licznik_petli][kolumna1-licznik_petli] == 'X'){
  145.                                     licznik_pionkow++;
  146.                                     kolumna_zbitego = kolumna1-licznik_petli;
  147.                                     wiersz_zbitego = wiersz1-licznik_petli;
  148.                                 }
  149.                                 else{
  150.                                     licznik_pionkow=2;
  151.                                 }
  152.                             }
  153.                         }
  154.                         if(wiersz1 - wiersz2 > 0 && kolumna1 - kolumna2 < 0){
  155.                             for(licznik_petli = 1; licznik_petli < wiersz1 - wiersz2; licznik_petli++){
  156.                                 if(array[wiersz1-licznik_petli][kolumna1+licznik_petli] == ' '){
  157.                                     continue;
  158.                                 }
  159.                                 else if(array[wiersz1-licznik_petli][kolumna1+licznik_petli] == 'x' || array[wiersz1-licznik_petli][kolumna1+licznik_petli] == 'X'){
  160.                                     licznik_pionkow++;
  161.                                     kolumna_zbitego = kolumna1+licznik_petli;
  162.                                     wiersz_zbitego = wiersz1-licznik_petli;
  163.                                 }
  164.                                 else{
  165.                                     licznik_pionkow=2;
  166.                                 }
  167.                             }
  168.                         }
  169.                         if(wiersz1 - wiersz2 < 0 && kolumna1 - kolumna2 > 0){
  170.                             for(licznik_petli = 1; licznik_petli < kolumna1 - kolumna2; licznik_petli++){
  171.                                 if(array[wiersz1+licznik_petli][kolumna1-licznik_petli] == ' '){
  172.                                     continue;
  173.                                 }
  174.                                 else if(array[wiersz1+licznik_petli][kolumna1-licznik_petli] == 'x' || array[wiersz1+licznik_petli][kolumna1-licznik_petli] == 'X'){
  175.                                     licznik_pionkow++;
  176.                                     kolumna_zbitego = kolumna1-licznik_petli;
  177.                                     wiersz_zbitego = wiersz1+licznik_petli;
  178.                                 }
  179.                                 else{
  180.                                     licznik_pionkow=2;
  181.                                 }
  182.                             }
  183.                         }
  184.                         if(wiersz1 - wiersz2 < 0 && kolumna1 - kolumna2 < 0){
  185.                             for(licznik_petli = 1; licznik_petli < -1*(wiersz1 - wiersz2); licznik_petli++){
  186.                                 if(array[wiersz1+licznik_petli][kolumna1+licznik_petli] == ' '){
  187.                                     continue;
  188.                                 }
  189.                                 else if(array[wiersz1+licznik_petli][kolumna1+licznik_petli] == 'x' || array[wiersz1+licznik_petli][kolumna1+licznik_petli] == 'X'){
  190.                                     licznik_pionkow++;
  191.                                     kolumna_zbitego = kolumna1+licznik_petli;
  192.                                     wiersz_zbitego = wiersz1+licznik_petli;
  193.                                 }
  194.                                 else{
  195.                                     licznik_pionkow=2;
  196.                                 }
  197.                             }
  198.                         }
  199.                         if(licznik_pionkow == 0){
  200.                             array[wiersz2][kolumna2] = 'O';
  201.                             array[wiersz1][kolumna1] = ' ';
  202.                             ruchy = !ruchy;
  203.                         }
  204.                         if(licznik_pionkow == 1){
  205.                             array[wiersz2][kolumna2] = 'O';
  206.                             array[wiersz_zbitego][kolumna_zbitego] = ' ';
  207.                             pionki_2--;
  208.                             array[wiersz1][kolumna1] = ' ';
  209.                             ruchy = !ruchy;
  210.                         }
  211.                     }
  212.                 }
  213.             }
  214.         }
  215.         if(ruchy == 1){
  216.             if(array[wiersz1][kolumna1] == 'x'){
  217.                 if(array[wiersz2][kolumna2] == ' '){
  218.                     if(wiersz1 - wiersz2 == 1 && abs(kolumna1 - kolumna2) == 1){
  219.                         array[wiersz1][kolumna1] = ' ';
  220.                         array[wiersz2][kolumna2] = 'x';
  221.                         ruchy = !ruchy;
  222.                         if(wiersz2 == 0){
  223.                             array[wiersz2][kolumna2] = 'X';
  224.                         }
  225.                     }
  226.                     if(abs(wiersz1 - wiersz2) == 2 && abs(kolumna1 - kolumna2) == 2){
  227.                         if(array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'o' || array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'O'){
  228.                             array[wiersz1][kolumna1] = ' ';
  229.                             array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] = ' ';
  230.                             array[wiersz2][kolumna2] = 'x';
  231.                             ruchy = !ruchy;
  232.                             pionki_1--;
  233.                             if(wiersz2 == 0){
  234.                                 array[wiersz2][kolumna2] = 'X';
  235.                             }
  236.                         }
  237.                     }
  238.                 }
  239.             }
  240.             if(array[wiersz1][kolumna1] == 'X'){
  241.                 if(array[wiersz2][kolumna2] == ' '){
  242.                     if(abs(wiersz1 - wiersz2) == 1 && abs(kolumna1 - kolumna2) == 1){
  243.                         array[wiersz1][kolumna1] = ' ';
  244.                         array[wiersz2][kolumna2] = 'X';
  245.                         ruchy = !ruchy;
  246.                     }
  247.                     if(abs(wiersz1 - wiersz2) == 2 && abs(kolumna1 - kolumna2) == 2){
  248.                         if(array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'o' || array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] == 'O'){
  249.                             array[wiersz1][kolumna1] = ' ';
  250.                             array[(wiersz2+wiersz1)/2][(kolumna1+kolumna2)/2] = ' ';
  251.                             array[wiersz2][kolumna2] = 'X';
  252.                             ruchy = !ruchy;
  253.                             pionki_1--;
  254.                         }
  255.                         else{
  256.                             array[wiersz2][kolumna2] = 'X';
  257.                             ruchy = !ruchy;
  258.                         }
  259.                     }
  260.                     if(abs(wiersz1 - wiersz2) > 2 && abs(kolumna1 - kolumna2) > 2 && abs(kolumna1 - kolumna2) == abs(wiersz1 - wiersz2)){
  261.                         int licznik_petli, licznik_pionkow = 0, kolumna_zbitego = 0, wiersz_zbitego = 0;
  262.                         if(wiersz1 - wiersz2 > 0 && kolumna1 - kolumna2 > 0){
  263.                             for(licznik_petli = 1; licznik_petli < wiersz1 - wiersz2; licznik_petli++){
  264.                                 if(array[wiersz1-licznik_petli][kolumna1-licznik_petli] == ' '){
  265.                                     continue;
  266.                                 }
  267.                                 else if(array[wiersz1-licznik_petli][kolumna1-licznik_petli] == 'o' || array[wiersz1-licznik_petli][kolumna1-licznik_petli] == 'O'){
  268.                                     licznik_pionkow++;
  269.                                     kolumna_zbitego = kolumna1-licznik_petli;
  270.                                     wiersz_zbitego = wiersz1-licznik_petli;
  271.                                 }
  272.                                 else{
  273.                                     licznik_pionkow=2;
  274.                                 }
  275.                             }
  276.                         }
  277.                         if(wiersz1 - wiersz2 > 0 && kolumna1 - kolumna2 < 0){
  278.                             for(licznik_petli = 1; licznik_petli < wiersz1 - wiersz2; licznik_petli++){
  279.                                 if(array[wiersz1-licznik_petli][kolumna1+licznik_petli] == ' '){
  280.                                     continue;
  281.                                 }
  282.                                 else if(array[wiersz1-licznik_petli][kolumna1+licznik_petli] == 'o' || array[wiersz1-licznik_petli][kolumna1+licznik_petli] == 'O'){
  283.                                     licznik_pionkow++;
  284.                                     kolumna_zbitego = kolumna1+licznik_petli;
  285.                                     wiersz_zbitego = wiersz1-licznik_petli;
  286.                                 }
  287.                                 else{
  288.                                     licznik_pionkow=2;
  289.                                 }
  290.                             }
  291.                         }
  292.                         if(wiersz1 - wiersz2 < 0 && kolumna1 - kolumna2 > 0){
  293.                             for(licznik_petli = 1; licznik_petli < kolumna1 - kolumna2; licznik_petli++){
  294.                                 if(array[wiersz1+licznik_petli][kolumna1-licznik_petli] == ' '){
  295.                                     continue;
  296.                                 }
  297.                                 else if(array[wiersz1+licznik_petli][kolumna1-licznik_petli] == 'o' || array[wiersz1+licznik_petli][kolumna1-licznik_petli] == 'O'){
  298.                                     licznik_pionkow++;
  299.                                     kolumna_zbitego = kolumna1-licznik_petli;
  300.                                     wiersz_zbitego = wiersz1+licznik_petli;
  301.                                 }
  302.                                 else{
  303.                                     licznik_pionkow=2;
  304.                                 }
  305.                             }
  306.                         }
  307.                         if(wiersz1 - wiersz2 < 0 && kolumna1 - kolumna2 < 0){
  308.                             for(licznik_petli = 1; licznik_petli < -1*(wiersz1 - wiersz2); licznik_petli++){
  309.                                 if(array[wiersz1+licznik_petli][kolumna1+licznik_petli] == ' '){
  310.                                     continue;
  311.                                 }
  312.                                 if(array[wiersz1+licznik_petli][kolumna1+licznik_petli] == 'o' || array[wiersz1+licznik_petli][kolumna1+licznik_petli] == 'O'){
  313.                                     licznik_pionkow++;
  314.                                     kolumna_zbitego = kolumna1+licznik_petli;
  315.                                     wiersz_zbitego = wiersz1+licznik_petli;
  316.                                 }
  317.                                 else{
  318.                                     licznik_pionkow=2;
  319.                                 }
  320.                             }
  321.                         }
  322.                         if(licznik_pionkow == 0){
  323.                             array[wiersz2][kolumna2] = 'X';
  324.                             array[wiersz1][kolumna1] = ' ';
  325.                             ruchy = !ruchy;
  326.                         }
  327.                         if(licznik_pionkow == 1){
  328.                             array[wiersz2][kolumna2] = 'X';
  329.                             array[wiersz_zbitego][kolumna_zbitego] = ' ';
  330.                             pionki_1--;
  331.                             array[wiersz1][kolumna1] = ' ';
  332.                             ruchy = !ruchy;
  333.                         }
  334.                     }
  335.                 }
  336.             }
  337.         }
  338.         else{
  339.             printf("Nieprawidlowy ruch!\n");
  340.             continue;
  341.         }
  342.         if(pionki_1 == 0){
  343.             printf("%-10s jest zwyciezca tej gry!\nKoniec gry!", nick2);
  344.             break;
  345.         }
  346.         if(pionki_2 == 0){
  347.             printf("%-10s jest zwyciezca tej gry!\nKoniec gry!", nick1);
  348.             break;
  349.         }
  350.         drukowanie_planszy(array);
  351.     }
  352.     return 0;
  353. }
  354.  
  355. void drukowanie_planszy(char tablica[8][8]){
  356.     int i, j, k;
  357.     for(i = 0; i < 8; i++){
  358.         for(j = 0; j <= 7; j++){
  359.             printf("| %c ", tablica[i][j]);
  360.         }
  361.         printf("|\n");
  362.         for(k = 0; k <=32; k++){
  363.             printf("-");
  364.         }
  365.         printf("\n");
  366.     }
  367. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement