kokusz19

ConnectFour.client.c

Dec 14th, 2017
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.42 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #include <sys/types.h>
  6. #include <sys/socket.h>
  7.  
  8. #include <netinet/in.h>
  9.  
  10. /*
  11.  
  12.  
  13. ---------------------------------------------------------
  14. |   1   |   2   |   3   |   4   |   5   |   6   |   7   |
  15. ---------------------------------------------------------
  16. ---------------------------------------------------------
  17. ---------------------------------------------------------
  18. ---------------------------------------------------------
  19. |   0   |   1   |   2   |   3   |   4   |   5   |   6   |
  20. ---------------------------------------------------------
  21. |   7   |   8   |   9   |   10  |   11  |   12  |   13  |
  22. ---------------------------------------------------------
  23. |   14  |   15  |   16  |   17  |   18  |   19  |   20  |
  24. ---------------------------------------------------------
  25. |   21  |   22  |   23  |   24  |   25  |   26  |   27  |
  26. ---------------------------------------------------------
  27. |   28  |   29  |   30  |   31  |   32  |   33  |   34  |
  28. ---------------------------------------------------------
  29. |   35  |   36  |   37  |   38  |   39  |   40  |   41  |
  30. ---------------------------------------------------------
  31.  
  32.  
  33. */
  34.  
  35.  
  36.  
  37.  
  38. char tabla[42];
  39.  
  40. int megfelel(char *szo) // vizsgálja hogy a megadott szting összes karaktere eleme a kisbetűs abc-nek
  41. {
  42.     if(!strcmp(szo, "feladom") || atoi(szo) > 7 || atoi(szo) < 1)   return 0;
  43.         return 1;
  44. }
  45.  
  46. int checkbelefer(char *tomb, int szam){
  47.     int i;
  48.     if(tomb[szam-1] != '-')
  49.         return -1;
  50.     return 1;
  51. }
  52.  
  53. void kiir(char kiirat[42]){
  54.     int i, j;
  55.     printf("\n\n");
  56.     printf("1 2 3 4 5 6 7\n");
  57.     printf("*************\n");
  58.  
  59.     for(i = 0; i < 42; i++){
  60.         printf("%c ", kiirat[i]);
  61.         if(i%7 == 6)    printf("\n");
  62.     }
  63.     printf("*************\n");
  64.     printf("*************\n");
  65. }
  66.  
  67. int main(){
  68. //**********************************************************************//
  69.     // Socket deklaráció, kapcsolódás
  70.     int networksocket;
  71.     networksocket = socket(AF_INET, SOCK_STREAM, 0);
  72.    
  73.     struct sockaddr_in serveraddress;
  74.     serveraddress.sin_family = AF_INET;
  75.     serveraddress.sin_port = htons(52369);
  76.     serveraddress.sin_addr.s_addr = INADDR_ANY;
  77.     int ellenor;
  78.     ellenor = connect(networksocket, (struct sockaddr *) &serveraddress, sizeof(serveraddress));
  79.     if(ellenor == -1){
  80.         printf("Connect error, a kliens leáll!\n");
  81.         exit(0);
  82.         }
  83. //********************************************************************//
  84.     //A kliens megkapja hanyadikkánt csatlakozott ás nyugtáz
  85.     char uzenet[1000];
  86.     char szo[1000];
  87.     ellenor = recv(networksocket, &uzenet, sizeof(uzenet), 0);
  88.     if(ellenor == -1){
  89.         printf("Recive error, a kliens leáll!\n");
  90.         exit(0);
  91.         }
  92.     //sleep(1);
  93.     int sorszam = atoi(uzenet);
  94.     printf("Te vagy a(z) %d. számĂş játákos\n", atoi(uzenet));
  95.    
  96.     ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  97.     if(ellenor == -1){
  98.         printf("Send error, a kliens leáll!\n%d\n", ellenor);
  99.         exit(0);
  100.         }
  101. //*******************************************************************//
  102.     //A játák megkezdáse    
  103.     int status;
  104.     while(1){
  105.         ellenor = recv(networksocket, &uzenet, sizeof(uzenet), 0);
  106.         if(ellenor == -1){
  107.             printf("Recive error, a kliens leáll!\n");
  108.             exit(0);
  109.         }
  110.         /*      Ide kerül a játák klienshez tartozó rásze      */
  111.        
  112.        
  113.         if(!strcmp(uzenet,"aaa")){                                  // Enemy leaves the match fully
  114.  
  115.             printf("\n!!!! The enemy left the match! The connection will close !!!!\n");
  116.        
  117.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  118.             continue;
  119.         }
  120.        
  121.         if(!strcmp(uzenet,"asd")){                                  // IF P1 Wins
  122.             //recv(networksocket, &uzenet, sizeof(uzenet), 0);
  123.             //kiir(uzenet);
  124.             printf("\n!!!! Player 1 WINS!\nDo you want a rematch? (ujra/vege): !!!!");
  125.             scanf("%s", &uzenet);
  126.        
  127.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  128.             continue;
  129.         }
  130.        
  131.         if(!strcmp(uzenet,"dsa")){                                  // IF P2 Wins
  132.             //recv(networksocket, &uzenet, sizeof(uzenet), 0);
  133.             //kiir(uzenet);
  134.             printf("\n!!!! Player 2 WINS!\nDo you want a rematch? (ujra/vege):  ");
  135.             scanf("%s", &uzenet);
  136.        
  137.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  138.             continue;
  139.         }
  140.        
  141.         if(!strcmp(uzenet,"tele")){                                 // IF TELE
  142.             //recv(networksocket, &uzenet, sizeof(uzenet), 0);
  143.             //kiir(uzenet);
  144.             printf("\n!!!   TIE   !!!\nDo you want a rematch? (ujra/vege):\n");
  145.             scanf("%s", &uzenet);
  146.        
  147.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  148.             continue;
  149.         }
  150.        
  151.         if(!strcmp(uzenet, "sda")){                                 // IF surrendered
  152.             printf("\n!!!! A meccs fel lett adva!\n");
  153.            
  154.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  155.             continue;
  156.         }
  157.        
  158.         if(!strcmp(uzenet, "vege")){
  159.             printf("Someone didn't want to play a rematch, therefore closing connection!\n");
  160.            
  161.             send(networksocket, uzenet, sizeof(uzenet), 0);
  162.             recv(networksocket, &uzenet, sizeof(uzenet), 0);
  163.             kiir(uzenet);
  164.             send(networksocket, uzenet, sizeof(uzenet), 0);
  165.            
  166.             exit(0);
  167.         }
  168.        
  169.         if(!strcmp(uzenet,"?") && strcmp(uzenet, "asd") && strcmp(uzenet, "das") && strcmp(uzenet, "sda") /* strcmp(uzenet, "tele")*/){
  170.             printf("\nInvalid move: Chose another column (1-7): ");
  171.             scanf("%s", &uzenet);
  172.        
  173.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  174.             continue;
  175.         }
  176.        
  177.        
  178.         if(strcmp(uzenet, "asd") && strcmp(uzenet, "dsa") && strcmp(uzenet, "-"))
  179.             kiir(uzenet);
  180.  
  181.  
  182.    
  183.    
  184.    
  185.    
  186.    
  187.        
  188.         if(1==1){                       //      Client side: add to chosen column
  189.             printf("P%d: Chose a column: ", sorszam);
  190.             strcpy(tabla, uzenet);
  191.             scanf("%s", &uzenet);
  192.             int j;
  193.             if(atoi(uzenet) < 8 || atoi(uzenet) > 0 ){
  194.                 if(sorszam == 1){
  195.                     for(j = 41; j >= 0; j--){                                      
  196.                         if(j%7 == (atoi(uzenet)-1) && tabla[j] == '-'){
  197.                             tabla[j] = 'X';
  198.                             kiir(tabla);
  199.                             break;
  200.                         }
  201.                     }
  202.                 }
  203.                 if(sorszam == 2){
  204.                     for(j = 41; j >= 0; j--){                                      
  205.                         if(j%7 == (atoi(uzenet)-1) && tabla[j] == '-'){
  206.                             tabla[j] = 'O';
  207.                             kiir(tabla);
  208.                             break;
  209.                         }
  210.                     }
  211.                 }
  212.             }
  213.             ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  214.             if(ellenor == -1){
  215.                 printf("Send error, a kliens leáll!\n");
  216.                 exit(0);
  217.             }
  218.         }
  219.  
  220.     }
  221. //*********************************************************************************//
  222.     //A játák befejezáse
  223.     ellenor = recv(networksocket, &uzenet, sizeof(uzenet), 0);
  224.     if(ellenor == -1){
  225.         printf("Recive error, a kliens leáll!\n");
  226.         exit(0);
  227.         }
  228.     printf("A(z) %d. számĂş játákos nyert\n", atoi(uzenet));  
  229.     ellenor = send(networksocket, uzenet, sizeof(uzenet), 0);
  230.     if(ellenor == -1){
  231.         printf("Send error, a kliens leáll!\n");
  232.         exit(0);
  233.         }
  234.     return 0;
  235.     }
Add Comment
Please, Sign In to add comment