From 882aac1a0e1d273e6a622683e1120c666e319a02 Mon Sep 17 00:00:00 2001
From: Terence Denning <t.denning@student.unimelb.edu.au>
Date: Thu, 25 Apr 2019 18:33:01 +1000
Subject: [PATCH] progress toward displaying wordlist

---
 http-server.c |  64 ++++++++++++++++++++++++++++++++++++--------------
 image_tagger  | Bin 22984 -> 23064 bytes
 2 files changed, 46 insertions(+), 18 deletions(-)

diff --git a/http-server.c b/http-server.c
index 2a55c86..58c05c0 100644
--- a/http-server.c
+++ b/http-server.c
@@ -30,6 +30,7 @@ void reset_user(int sockfd);
 void set_user(int sockfd);
 void user_ready(int sockfd);
 void print_details();
+void check_win(int user, char *keyword);
 
 // constants
 static char const * const HTTP_200_FORMAT = "HTTP/1.1 200 OK\r\n\
@@ -230,16 +231,7 @@ static bool handle_http_request(int sockfd)
                         webpage = "html/4_accepted.html";
                         strcpy(user1_guesses[user1_guess_number], keyword);
                         user1_guess_number++;
-
-                        /* Check if other play has made the same guess */
-                        for(int i=0; i<user2_guess_number; i++)
-                        {
-                            if(strcmp(user2_guesses[i], keyword) == 0){
-                                reset_game();
-                                webpage = "html/6_endgame.html";
-                            }
-                        }
-                        
+                        check_win(1, keyword);            
                     } else if( gameover == 1 ){
                         webpage = "html/6_endgame.html"; 
                     } else {
@@ -250,14 +242,7 @@ static bool handle_http_request(int sockfd)
                         webpage = "html/4_accepted.html";
                         strcpy(user2_guesses[user2_guess_number], keyword);
                         user2_guess_number++;
-
-                        for(int i=0; i<user1_guess_number; i++)
-                        {
-                            if(strcmp(user1_guesses[i], keyword) == 0){
-                                reset_game(); 
-                                webpage = "html/6_endgame.html";
-                            }
-                        }
+                        check_win(2, keyword);
                     } else if( gameover == 1){
                         webpage = "html/6_endgame.html"; 
                     } else {
@@ -300,6 +285,31 @@ static bool handle_http_request(int sockfd)
             }
             close(filefd);
 
+            if( strcmp(webpage, "html/4_accepted.html") == 0 ){
+                
+                char *user1_current_guesses;
+                char *user2_current_guesses;
+
+                if(sockfd == user1){
+                    for(int i=0; i<100; i++){
+                        if( strlen(user1_guesses[i]) > 0 ){
+                            //strncat(user1_current_guesses, user1_guesses[i], strlen(user1_guesses[i]));
+                        }
+                    }
+                } else if(sockfd == user2){
+                    for(int i=0; i<100; i++){
+                        if( strlen(user2_guesses[i]) > 0 ){
+                            //strncat(user2_current_guesses, user2_guesses[i], strlen(user2_guesses[i]));
+                        }
+                    }
+                }
+                
+                printf("User1 guesses: %s, User2 guesses: %s\n", user1_current_guesses, user2_current_guesses);
+   
+
+                
+            }
+
             if((strlen(username) > 0) && (strstr(buff, "user=") != NULL) ){
                 // move the trailing part backward
                 int p1, p2;
@@ -499,6 +509,24 @@ void user_ready(int sockfd){
     }
 }
 
+void check_win(int user, char *keyword){
+    if(user == 1){
+        for(int i=0; i<user2_guess_number; i++){
+            if(strcmp(user2_guesses[i], keyword) == 0){
+                reset_game(); 
+                webpage = "html/6_endgame.html";
+            }
+        }
+    } else if( user == 2){
+        for(int i=0; i<user1_guess_number; i++){
+            if(strcmp(user1_guesses[i], keyword) == 0){
+                reset_game(); 
+                webpage = "html/6_endgame.html";
+            }
+        }
+    }
+}
+
 void print_details(){
     printf("User1: %d, User2: %d, User1_start: %d, User2_start: %d\n\n", user1, user2, user1_start, user2_start);
 }
diff --git a/image_tagger b/image_tagger
index 5f3d42ef6698303f7771d7659733bd68e3bd6503..e0265fcbde3ae78a35ec70556318ccfdd04dfe5a 100755
GIT binary patch
delta 7835
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
LXKb6iFj5@=P|qCu

delta 7097
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

-- 
GitLab