Thread: [Cruce-commit] SF.net SVN: cruce:[19] C/trunk/server
Status: Beta
Brought to you by:
caiusb
|
From: <ca...@us...> - 2010-03-10 12:07:21
|
Revision: 19
http://cruce.svn.sourceforge.net/cruce/?rev=19&view=rev
Author: caiusb
Date: 2010-03-10 12:07:15 +0000 (Wed, 10 Mar 2010)
Log Message:
-----------
Am modificat un pic Makefile-ul si am modificat si includ-urile sa compileze
cum trebuie.
Modified Paths:
--------------
C/trunk/server/Makefile
C/trunk/server/server.c
C/trunk/server/server_dummy.c
Modified: C/trunk/server/Makefile
===================================================================
--- C/trunk/server/Makefile 2010-03-10 11:54:31 UTC (rev 18)
+++ C/trunk/server/Makefile 2010-03-10 12:07:15 UTC (rev 19)
@@ -1,4 +1,4 @@
-objects = server.o protocol.o
+objects = server.o protocol.o
server: $(objects)
cc -o server $(objects)
@@ -20,4 +20,5 @@
clean:
rm -f $(objects)
rm -f server
+ rm -f server_dummy.o
rm -f dummy
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-10 11:54:31 UTC (rev 18)
+++ C/trunk/server/server.c 2010-03-10 12:07:15 UTC (rev 19)
@@ -6,12 +6,10 @@
//Our libraries
#include "server.h"
-#include "protocol.h"
+#include "../protocol/protocol.h"
-
#define NUMAR_ECHIPE 2
-
//Server related fields
struct echipa echipe[NUMAR_ECHIPE];
struct sockaddr_in serverSocketAddress;
Modified: C/trunk/server/server_dummy.c
===================================================================
--- C/trunk/server/server_dummy.c 2010-03-10 11:54:31 UTC (rev 18)
+++ C/trunk/server/server_dummy.c 2010-03-10 12:07:15 UTC (rev 19)
@@ -5,24 +5,9 @@
#include <sys/socket.h>
#include <netinet/in.h>
-#include "../server.h"
-#include "../protocol.h"
+#include "server.h"
+#include "../protocol/protocol.h"
-int decode_message(char *message) {
- int code;
- if (message[1] <= '9' && message[1] >= '0') {
- code = atoi(message);
- strcpy(message, message + 3);
- }
- code = atoi(message);
- strcpy(message, message + 2);
- printf("Decoded this message:\n");
- printf("code: %d\n", code);
- printf("message: %s\n", message);
- printf("---end---\n");
- return code;
-}
-
/** address, port **/
int main(int argc, char *argv[]) {
char ip[16];
@@ -72,7 +57,6 @@
//printf("Received connection from: %s\n",inet_ntoa(remoteSocket.sin_addr));
char message[1024];
- while(players < 4) {
memset(message, 0, 1024);
read(connectionFD, &message, 1024);
printf("%s\n", message);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ali...@us...> - 2010-03-12 22:23:51
|
Revision: 23
http://cruce.svn.sourceforge.net/cruce/?rev=23&view=rev
Author: alinposho
Date: 2010-03-12 22:23:37 +0000 (Fri, 12 Mar 2010)
Log Message:
-----------
Modified Paths:
--------------
C/trunk/server/server.c
Added Paths:
-----------
C/trunk/server/CaiusMakefile
C/trunk/server/Object/
C/trunk/server/Object/server
C/trunk/server/makefile
Copied: C/trunk/server/CaiusMakefile (from rev 21, C/trunk/server/Makefile)
===================================================================
--- C/trunk/server/CaiusMakefile (rev 0)
+++ C/trunk/server/CaiusMakefile 2010-03-12 22:23:37 UTC (rev 23)
@@ -0,0 +1,24 @@
+objects = server.o protocol.o
+
+server: $(objects)
+ cc -o server $(objects)
+
+client.o: server.c ../protocol/protocol.h
+ cc -c server.c
+
+protocol.o: ../protocol/protocol.h ../protocol/protocol.c
+ cc -c ../protocol/protocol.c
+
+#dummy server
+dummy: dummy.o
+ cc -o dummy server_dummy.o protocol.o
+
+
+dummy.o: server_dummy.c ../protocol/protocol.h
+ cc -c server_dummy.c
+
+clean:
+ rm -f $(objects)
+ rm -f server
+ rm -f server_dummy.o
+ rm -f dummy
Added: C/trunk/server/Object/server
===================================================================
(Binary files differ)
Property changes on: C/trunk/server/Object/server
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
Added: C/trunk/server/makefile
===================================================================
--- C/trunk/server/makefile (rev 0)
+++ C/trunk/server/makefile 2010-03-12 22:23:37 UTC (rev 23)
@@ -0,0 +1,36 @@
+target = server
+
+#Defining the protocol folder path
+protocolFolder = ../protocol/
+
+#Defining Server objects folder
+serverObjectFolder = ./Object/
+
+#Sources to be compiled
+serverSource = server.c
+
+execName = server
+
+serverObj = $(serverObjectFolder)server.o
+
+protocolObj = $(protocolFolder)protocol.o
+
+$(serverObjectFolder)$(execName) : $(protocolObj) $(serverObj)
+ cc -o $(serverObjectFolder)$(execName) $(protocolObj) $(serverObj)
+
+#Creating the server object file
+$(serverObj): $(serverSource) $(protocolFolder)protocol.h
+ gcc -c $(serverSource) -o $(serverObj)
+
+#making sure the protocol is compiled
+$(protocolObj): $(protocolFolder)/protocol.h $(protocolFolder)/protocol.c
+ cc -c $(protocolFolder)/protocol.c
+
+
+clean:
+ rm -f $(serverObj)
+ rm -f $(serverObjectFolder)server
+ rm -f $(protocolObj)
+
+
+
Property changes on: C/trunk/server/makefile
___________________________________________________________________
Added: svn:executable
+ *
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-12 20:20:35 UTC (rev 22)
+++ C/trunk/server/server.c 2010-03-12 22:23:37 UTC (rev 23)
@@ -73,7 +73,6 @@
/* TODO aici se poate face ca sa nu se blocheze la accept, folosind select */
int acceptConn(int sfd)
{
- printf("\n\nServer started!\n\n");
struct sockaddr_in in_conn;
socklen_t socksize = sizeof(struct sockaddr_in);
int fd = 0;
@@ -217,15 +216,22 @@
int main(int argc, char *argv[])
{
+ fflush(stdout);
+ printf("Server started!");
+
int noPlayers = 0;
init();
+
+
readConfig();
sfd = makeSocket();
bindAndListen();
+ printf("\nServer up and running");
+
while (noPlayers != MAX_JUCATORI)
{
int fd = acceptConn(sfd);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ali...@us...> - 2010-03-13 09:11:11
|
Revision: 24
http://cruce.svn.sourceforge.net/cruce/?rev=24&view=rev
Author: alinposho
Date: 2010-03-13 09:11:05 +0000 (Sat, 13 Mar 2010)
Log Message:
-----------
Modified Paths:
--------------
C/trunk/server/server.c
Removed Paths:
-------------
C/trunk/server/Makefile
Deleted: C/trunk/server/Makefile
===================================================================
--- C/trunk/server/Makefile 2010-03-12 22:23:37 UTC (rev 23)
+++ C/trunk/server/Makefile 2010-03-13 09:11:05 UTC (rev 24)
@@ -1,24 +0,0 @@
-objects = server.o protocol.o
-
-server: $(objects)
- cc -o server $(objects)
-
-client.o: server.c ../protocol/protocol.h
- cc -c server.c
-
-protocol.o: ../protocol/protocol.h ../protocol/protocol.c
- cc -c ../protocol/protocol.c
-
-#dummy server
-dummy: dummy.o
- cc -o dummy server_dummy.o protocol.o
-
-
-dummy.o: server_dummy.c ../protocol/protocol.h
- cc -c server_dummy.c
-
-clean:
- rm -f $(objects)
- rm -f server
- rm -f server_dummy.o
- rm -f dummy
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-12 22:23:37 UTC (rev 23)
+++ C/trunk/server/server.c 2010-03-13 09:11:05 UTC (rev 24)
@@ -214,11 +214,17 @@
}
}
+void displayInfoMessage(FILE* infoMessageOutput, char message[])
+{
+ fprintf(infoMessageOutput, "%s", message);
+ fflush(infoMessageOutput);
+}
+
int main(int argc, char *argv[])
{
- fflush(stdout);
- printf("Server started!");
+ displayInfoMessage(stdout, "Server started!\n");
+
int noPlayers = 0;
init();
@@ -230,7 +236,8 @@
sfd = makeSocket();
bindAndListen();
- printf("\nServer up and running");
+ char infoMessage[] = {"\nServer up and running!\n"};
+ displayInfoMessage(stdout, infoMessage);
while (noPlayers != MAX_JUCATORI)
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ali...@us...> - 2010-03-13 10:23:12
|
Revision: 31
http://cruce.svn.sourceforge.net/cruce/?rev=31&view=rev
Author: alinposho
Date: 2010-03-13 10:23:06 +0000 (Sat, 13 Mar 2010)
Log Message:
-----------
Removed Paths:
-------------
C/trunk/server/Object/server
C/trunk/server/makefile
Deleted: C/trunk/server/Object/server
===================================================================
(Binary files differ)
Deleted: C/trunk/server/makefile
===================================================================
--- C/trunk/server/makefile 2010-03-13 10:22:29 UTC (rev 30)
+++ C/trunk/server/makefile 2010-03-13 10:23:06 UTC (rev 31)
@@ -1,32 +0,0 @@
-target = server
-
-#Defining the protocol folder path
-protocolFolder = ../protocol/
-
-#Defining Server objects folder
-serverObjectFolder = ./Object/
-
-#Sources to be compiled
-serverSource = server.c
-
-execName = server
-
-serverObj = $(serverObjectFolder)server.o
-
-protocolObj = $(protocolFolder)Object/protocol.o
-
-$(serverObjectFolder)$(execName) : $(protocolObj) $(serverObj)
- cc -o $(serverObjectFolder)$(execName) $(protocolObj) $(serverObj)
-
-#Creating the server object file
-$(serverObj): $(serverSource) $(protocolFolder)protocol.h
- gcc -c $(serverSource) -o $(serverObj)
-
-
-clean:
- rm -f $(serverObj)
- rm -f $(serverObjectFolder)server
- rm -f $(protocolObj)
-
-
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ali...@us...> - 2010-03-22 18:33:35
|
Revision: 50
http://cruce.svn.sourceforge.net/cruce/?rev=50&view=rev
Author: alinposho
Date: 2010-03-22 18:33:28 +0000 (Mon, 22 Mar 2010)
Log Message:
-----------
Am impartit functiile din Server pe 2 fisier ca erau fisierul server.c era deja prea mare. Am facur update la Makefile-ul server-ului deci este Ok ana acum. Nu cred ca mai este necesar sa detaliez ce contine fisierul gameLogic.c.
Modified Paths:
--------------
C/trunk/server/Makefile
C/trunk/server/server.c
C/trunk/server/server.h
Added Paths:
-----------
C/trunk/server/gameLogic.c
Modified: C/trunk/server/Makefile
===================================================================
--- C/trunk/server/Makefile 2010-03-22 17:48:08 UTC (rev 49)
+++ C/trunk/server/Makefile 2010-03-22 18:33:28 UTC (rev 50)
@@ -14,9 +14,17 @@
serverObj = $(serverObjectFolder)server.o
protocolObj = $(protocolFolder)Object/protocol.o
+
+gameLogicObj = $(serverObjectFolder)gameLogic.o
+
+gameLogicSource = $(serverFolder)gameLogic.c
-$(serverObjectFolder)$(execName) : $(protocolObj) $(serverObj)
- cc -o $(serverObjectFolder)$(execName) $(protocolObj) $(serverObj)
+$(serverObjectFolder)$(execName) : $(protocolObj) $(serverObj) $(gameLogicObj)
+ cc -o $(serverObjectFolder)$(execName) $(protocolObj) $(serverObj) $(gameLogicObj)
+
+#Creating gameLogic object file
+$(gameLogicObj) : $(gameLogicSource) $(protocolFolder)protocol.h
+ gcc -c $(gameLogicSource) -o $(gameLogicObj)
#Creating the server object file
$(serverObj): $(serverSource) $(protocolFolder)protocol.h
Added: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c (rev 0)
+++ C/trunk/server/gameLogic.c 2010-03-22 18:33:28 UTC (rev 50)
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "server.h"
+#include "../protocol/protocol.h"
+
+int bidAmount = -1;
+int noOfTeamWhoBidded = -1;
+
+
+
+//functia pentru o mana
+
+int playHand()
+{
+ bid();
+ echipe[0].scor++;
+
+}
+
+//functiacare se ocupa de tot bid-ul de la inceput de joc
+//returneaza
+int bid()
+{
+
+}
+
+//Functie care returneaza true cand s-a sfarsit jocul sfarsitul jocului
+int endOfGame()
+{
+ int i;
+ for(i = 0; i < NUMAR_ECHIPE; i++)
+ {
+ if(echipe[i].scor >= MAX_SCOR)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void inforAllAboutEndOfGame()
+{
+ displayInfoMessage(stdout, "Informam toti jucatorii despre cum s-a sfarsit jocul!\n");
+}
+
+
+
+void playGame()
+{
+
+ while(false == endOfGame())
+ {
+ displayInfoMessage(stdout, "***\nJucam o noua mana!\n***");
+ playHand();
+ }
+
+ //s-a sfarsit jocul ii informam pe toti
+ inforAllAboutEndOfGame();
+
+}
Property changes on: C/trunk/server/gameLogic.c
___________________________________________________________________
Added: svn:executable
+ *
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-22 17:48:08 UTC (rev 49)
+++ C/trunk/server/server.c 2010-03-22 18:33:28 UTC (rev 50)
@@ -13,12 +13,7 @@
#include "server.h"
#include "../protocol/protocol.h"
-#define NUMAR_ECHIPE 2
-#define true 1
-#define false 0
-struct echipa echipe[NUMAR_ECHIPE];
-
struct sockaddr_in addr;
char ip[16];
@@ -292,11 +287,13 @@
displayInfoMessage(stdout, buffer);
player->active = true;
}
- else//inform the others who joined the game
- {
- sprintf(resp, "%d %s wants to start the game.", INFO_MSG, player->nume);
- sendInfoMessage(player->sfd, resp);
- }
+ else //inform the others who pressed start game
+ if (true == player->active)
+ {
+ sprintf(resp, "%d %s wants to start the game.", INFO_MSG,
+ player->nume);
+ sendInfoMessage(player->sfd, resp);
+ }
}
break;
}
@@ -487,6 +484,8 @@
}
+
+
int main(int argc, char *argv[])
{
displayInfoMessage(stdout, "Server started!\n");
@@ -579,10 +578,11 @@
sprintf(infoMessage, "\n\n*************************Game has started********************\n\n");
displayInfoMessage(stdout, infoMessage);
+ //functia pentru un joc
+ playGame();
+
displayInfoMessage(stdout, "Press any key to close server\n" );
-
-
getchar();
return 1;
Modified: C/trunk/server/server.h
===================================================================
--- C/trunk/server/server.h 2010-03-22 17:48:08 UTC (rev 49)
+++ C/trunk/server/server.h 2010-03-22 18:33:28 UTC (rev 50)
@@ -6,6 +6,11 @@
#define CARTI_MANA 6
#define JUCATORI_PER_ECHIPA 2
+#define MAX_SCOR 21
+#define NUMAR_ECHIPE 2
+#define true 1
+#define false 0
+
/**
Structura pentru o carte
valoare - valoare cartii (0,2,3,4,10,11)
@@ -38,4 +43,15 @@
struct carte carti_luate[MAX_CARTI];
};
+//cele 2 echipe care joaca
+struct echipa echipe[NUMAR_ECHIPE];
+
+//logica pentru tot jocul
+void playGame();
+
+/**
+ * Prints the message to the output file making sure to flush the buffer
+ */
+void displayInfoMessage(FILE* infoMessageOutput, char *messag);
+
#endif /* __SERVER_H__ */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ali...@us...> - 2010-03-22 19:19:13
|
Revision: 51
http://cruce.svn.sourceforge.net/cruce/?rev=51&view=rev
Author: alinposho
Date: 2010-03-22 19:19:08 +0000 (Mon, 22 Mar 2010)
Log Message:
-----------
Variata cu getMSG()- modificata si doar scheletul pentru metodele de game logic.
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.c
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-22 18:33:28 UTC (rev 50)
+++ C/trunk/server/gameLogic.c 2010-03-22 19:19:08 UTC (rev 51)
@@ -7,8 +7,20 @@
int bidAmount = -1;
int noOfTeamWhoBidded = -1;
+//functiacare se ocupa de tot bid-ul de la inceput de joc
+//returneaza
+int bid()
+{
+}
+//Genereaza si trimite cartile jucatorilor
+int sendCards()
+{
+
+}
+
+
//functia pentru o mana
int playHand()
@@ -18,12 +30,7 @@
}
-//functiacare se ocupa de tot bid-ul de la inceput de joc
-//returneaza
-int bid()
-{
-}
//Functie care returneaza true cand s-a sfarsit jocul sfarsitul jocului
int endOfGame()
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-22 18:33:28 UTC (rev 50)
+++ C/trunk/server/server.c 2010-03-22 19:19:08 UTC (rev 51)
@@ -311,12 +311,15 @@
/* TODO */
/** Ia un mesaj din retea si vede ce e cu el **/
/* expected reprezinta un vector de int care specifica ce mesaje se
- * se asteapta sa vina. Este terminat cu un 0. Daca nu vine un mesaj
- * "expected" atunci se returneaza 0.
+ * se asteapta sa vina. Daca nu vine un mesaj
+ * "expected" atunci se returneaza -1.
* In cazul in care nu se receptioneaza niciun mesaj se returneaza -1
- * Daca vine un mesaj expected se returneaza 1
- * Daca expected este NULL atunci se iau in considerare toate mesajele */
-void getMSG(struct jucator *jucator, int *expected)
+ * Daca vine un mesaj expected se returneaza codul mesajului
+ * Daca expected este NULL atunci se iau in considerare toate mesajele
+ *
+ *
+*/
+int getMSG(struct jucator *jucator, int *expected, char* restOfMessage, int *sender_sfd)
{
fd_set set;
int i, j, max = 0;
@@ -344,6 +347,7 @@
select(max+1,&set,NULL,NULL,&t);
if (jucator != NULL)
+ {
if (!FD_ISSET(jucator->sfd,&set))
{
//trimitem NACK pentru mesajul ilegal
@@ -355,6 +359,9 @@
fd = jucator->sfd;
break;
}
+ //am receptionat doar mesaje de la cine nu ne asteptam deci returnam -1
+ return -1;
+ }
else
{
int bla = 0;
@@ -369,7 +376,7 @@
printf("Message from player %d of team %d ready\n",j,i);
}
if (!bla)
- return; /* daca nu a venit mesaj ies din functie */
+ return -1; /* daca nu a venit mesaj ies din functie */
else
break; /* daca a venit il tratez */
}
@@ -393,10 +400,7 @@
{
displayInfoMessage(stdout, "Warning: too few bytes read\n");
}
-
-
-
int code = decode_message(msg);
//verificam daca mesajul receptionat este intre cele care erau astepate
@@ -404,8 +408,10 @@
{
if(*expected == code)
{
- dispatchMSG(code, msg ,fd);
- return;
+ //dispatchMSG(code, msg ,fd);
+ strcpy(restOfMessage, msg);
+ *sender_sfd = fd;
+ return code;
}
expected++;
}
@@ -502,6 +508,9 @@
char infoMessage[] = {"\nServer up and running!\n"};
displayInfoMessage(stdout, infoMessage);
+ char restOfMesssage[MSG_SIZE];
+ int sender_sfd;
+
while (noPlayers != MAX_JUCATORI)
{
int fd = acceptConn(sfd);
@@ -512,7 +521,12 @@
echipe[noPlayers / NUMAR_ECHIPE].jucatori[noPlayers % JUCATORI_PER_ECHIPA].sfd = fd;
noPlayers ++;
}
- getMSG(NULL,ex_msg);
+ int code = getMSG(NULL,ex_msg, restOfMesssage, &sender_sfd);
+ if(-1 != code)
+ {//am receptionat un mesaj OK
+ dispatchMSG(code, restOfMesssage, sender_sfd);
+
+ }
}
sprintf(infoMessage, "\n\n****************All players are connected***********************\n\n");
@@ -529,7 +543,13 @@
expectedMessages[0] = JOIN_GAME;
while(!joinGame())
- getMSG(NULL,expectedMessages);
+ {
+ int code = getMSG(NULL, expectedMessages, restOfMesssage, &sender_sfd);
+ if (-1 != code)
+ {//am receptionat un mesaj OK
+ dispatchMSG(code, restOfMesssage, sender_sfd);
+ }
+ }
int i;
int j;
@@ -551,16 +571,22 @@
free(expectedMessages);
- if((expectedMessages = (int *)malloc(sizeof(int))) == NULL)
- {
- displayInfoMessage(stdout, "Eroare la alocarea memoriei\n");
- exit(EXIT_FAILURE);
- }
+ if ((expectedMessages = (int *) malloc(sizeof(int))) == NULL)
+ {
+ displayInfoMessage(stdout, "Eroare la alocarea memoriei\n");
+ exit(EXIT_FAILURE);
+ }
- expectedMessages[0] = START_GAME;
+ expectedMessages[0] = START_GAME;
- while(!startGame())
- getMSG(NULL,expectedMessages);
+ while (!startGame())
+ {
+ int code = getMSG(NULL, expectedMessages, restOfMesssage, &sender_sfd);
+ if (-1 != code)
+ {//am receptionat un mesaj OK
+ dispatchMSG(code, restOfMesssage, sender_sfd);
+ }
+ }
//Informam toti jucatorii ca pot incepe jocul
for (i = 0; i < NUMAR_ECHIPE; i++)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ca...@us...> - 2010-03-22 19:57:01
|
Revision: 52
http://cruce.svn.sourceforge.net/cruce/?rev=52&view=rev
Author: caiusb
Date: 2010-03-22 19:56:55 +0000 (Mon, 22 Mar 2010)
Log Message:
-----------
Am modificat un pic pe server.c
Am facut functia de bid(), dar nu stiu ce sa returnez?? handWinner este setat
pe castigator-ul bid-ul pt ca sa poata da el prima mana. Asta ar trebui sa
simplifice playHand(), ca nu mai trebe sa tratam diferit prima mana.
Modified Paths:
--------------
C/trunk/server/Makefile
C/trunk/server/gameLogic.c
C/trunk/server/server.c
C/trunk/server/server.h
Modified: C/trunk/server/Makefile
===================================================================
--- C/trunk/server/Makefile 2010-03-22 19:19:08 UTC (rev 51)
+++ C/trunk/server/Makefile 2010-03-22 19:56:55 UTC (rev 52)
@@ -24,11 +24,11 @@
#Creating gameLogic object file
$(gameLogicObj) : $(gameLogicSource) $(protocolFolder)protocol.h
- gcc -c $(gameLogicSource) -o $(gameLogicObj)
+ cc -c $(gameLogicSource) -o $(gameLogicObj)
#Creating the server object file
$(serverObj): $(serverSource) $(protocolFolder)protocol.h
- gcc -c $(serverSource) -o $(serverObj)
+ cc -c $(serverSource) -o $(serverObj)
clean:
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-22 19:19:08 UTC (rev 51)
+++ C/trunk/server/gameLogic.c 2010-03-22 19:56:55 UTC (rev 52)
@@ -6,12 +6,41 @@
int bidAmount = -1;
int noOfTeamWhoBidded = -1;
+int handWinner = -1;
+int handWinnerTeam = -1;
+int maxBid = 0;
+int maxBidTeam = 0;
+
//functiacare se ocupa de tot bid-ul de la inceput de joc
//returneaza
int bid()
{
-
+ int i, j;
+ int expected[] = {BID_RESP,0};
+ char bid_ammt[2];
+
+ for (i=0; i<NUMAR_ECHIPE; i++)
+ for (j=0; j<JUCATORI_PER_ECHIPA; j++)
+ sendMessage(echipe[i].jucatori[j].sfd,BEGIN_BID,"");
+
+ for (i=0; i<NUMAR_ECHIPE; i++)
+ for (j=0; j<JUCATORI_PER_ECHIPA; j++)
+ {
+ int c_bid;
+ sendMessage(echipe[i].jucatori[j].sfd,BID,"");
+ getMSG(&echipe[i].jucatori[j],expected,bid_ammt,NULL);
+ c_bid = atoi(bid_ammt);
+ if (c_bid > maxBid)
+ {
+ maxBid = c_bid;
+ maxBidTeam = i;
+ handWinner = j;
+ handWinnerTeam = i;
+ }
+ }
+
+ return 0; //TODO ce returnez?
}
//Genereaza si trimite cartile jucatorilor
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-22 19:19:08 UTC (rev 51)
+++ C/trunk/server/server.c 2010-03-22 19:56:55 UTC (rev 52)
@@ -26,6 +26,9 @@
int i, j;
for (i=0;i<NUMAR_ECHIPE;i++)
+ {
+ echipe[i].scor = 0;
+ echipe[i].anunturi = 0;
for (j=0;j<JUCATORI_PER_ECHIPA;j++)
{
echipe[i].jucatori[j].joined = false;
@@ -33,6 +36,7 @@
echipe[i].jucatori[j].sfd = 0;
strcpy(echipe[i].jucatori[j].nume,"");
}
+ }
}
/**
@@ -288,7 +292,8 @@
player->active = true;
}
else //inform the others who pressed start game
- if (true == player->active)
+ if (true == player->active) //TODO is it neccesary... ca am putea informa pe toti, by default
+ // sa se simta si sa dea si ei
{
sprintf(resp, "%d %s wants to start the game.", INFO_MSG,
player->nume);
@@ -409,8 +414,10 @@
if(*expected == code)
{
//dispatchMSG(code, msg ,fd);
- strcpy(restOfMessage, msg);
- *sender_sfd = fd;
+ if (restOfMessage != NULL)
+ strcpy(restOfMessage, msg);
+ if (sender_sfd != NULL)
+ *sender_sfd = fd;
return code;
}
expected++;
Modified: C/trunk/server/server.h
===================================================================
--- C/trunk/server/server.h 2010-03-22 19:19:08 UTC (rev 51)
+++ C/trunk/server/server.h 2010-03-22 19:56:55 UTC (rev 52)
@@ -52,6 +52,9 @@
/**
* Prints the message to the output file making sure to flush the buffer
*/
-void displayInfoMessage(FILE* infoMessageOutput, char *messag);
+void displayInfoMessage(FILE* infoMessageOutput, char *messag);
+
+int getMSG(struct jucator *jucator, int *expected, char* restOfMessage, int *sender_sfd);
+int sendMessage(int receiver_sfd, int code, char info[]);
#endif /* __SERVER_H__ */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ca...@us...> - 2010-03-22 21:50:27
|
Revision: 53
http://cruce.svn.sourceforge.net/cruce/?rev=53&view=rev
Author: caiusb
Date: 2010-03-22 21:50:21 +0000 (Mon, 22 Mar 2010)
Log Message:
-----------
Am facut sendCards(), dar are bug la compusul mesajului pe care il va trimite
catre client. In rest este ok.
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.c
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-22 19:56:55 UTC (rev 52)
+++ C/trunk/server/gameLogic.c 2010-03-22 21:50:21 UTC (rev 53)
@@ -12,6 +12,24 @@
int maxBid = 0;
int maxBidTeam = 0;
+static void itoa(int n, char a[])
+{
+ int i, c;
+
+ if (n == 0)
+ strcpy(a,"0");
+
+ a[0] = '\0';
+ for (; n != 0; n = n/10)
+ {
+ char temp[10];
+ c = n%10;
+ strcpy(temp,a);
+ a[0] = c + '0';
+ strcpy(a+1,temp);
+ }
+}
+
//functiacare se ocupa de tot bid-ul de la inceput de joc
//returneaza
int bid()
@@ -43,18 +61,121 @@
return 0; //TODO ce returnez?
}
+void initCarti(struct carte carti[24])
+{
+ carti[0].valoare = 0;
+ carti[0].culoare = 'D';
+
+ carti[1].valoare = 2;
+ carti[1].culoare = 'D';
+
+ carti[2].valoare = 3;
+ carti[2].culoare = 'D';
+
+ carti[3].valoare = 4;
+ carti[3].culoare = 'D';
+
+ carti[4].valoare = 10;
+ carti[4].culoare = 'D';
+
+ carti[5].valoare = 11;
+ carti[5].culoare = 'D';
+
+ carti[6].valoare = 0;
+ carti[6].culoare = 'M';
+
+ carti[7].valoare = 2;
+ carti[7].culoare = 'M';
+
+ carti[8].valoare = 3;
+ carti[8].culoare = 'M';
+
+ carti[9].valoare = 4;
+ carti[9].culoare = 'M';
+
+ carti[10].valoare = 10;
+ carti[10].culoare = 'M';
+
+ carti[11].valoare = 11;
+ carti[11].culoare = 'M';
+
+ carti[12].valoare = 0;
+ carti[12].culoare = 'R';
+
+ carti[13].valoare = 2;
+ carti[13].culoare = 'R';
+
+ carti[14].valoare = 3;
+ carti[14].culoare = 'R';
+
+ carti[15].valoare = 4;
+ carti[15].culoare = 'R';
+
+ carti[16].valoare = 10;
+ carti[16].culoare = 'R';
+
+ carti[17].valoare = 11;
+ carti[17].culoare = 'R';
+
+ carti[18].valoare = 0;
+ carti[18].culoare = 'V';
+
+ carti[19].valoare = 2;
+ carti[19].culoare = 'V';
+
+ carti[20].valoare = 3;
+ carti[20].culoare = 'V';
+
+ carti[21].valoare = 4;
+ carti[21].culoare = 'V';
+
+ carti[22].valoare = 10;
+ carti[22].culoare = 'V';
+
+ carti[23].valoare = 11;
+ carti[23].culoare = 'V';
+}
+
//Genereaza si trimite cartile jucatorilor
int sendCards()
{
-
+ int r;
+ int date[24];
+ int i, j, k;
+ char string_carti[100];
+
+ struct carte carti[24];
+ initCarti(carti);
+
+ srand(1);
+ memset(date,0,sizeof(int)*24);
+
+ for (i = 0; i < NUMAR_ECHIPE; i++)
+ for (j = 0; j < JUCATORI_PER_ECHIPA; j++)
+ {
+ for (k = 0; k < CARTI_MANA; k++)
+ {
+ char valoare[3];
+ while(date[(r=(random()%24))]);
+ date[r] = 1;
+ echipe[i].jucatori[j].carti[k] = carti[r];
+ // TODO fix thix
+ itoa(carti[r].valoare,valoare);
+ strcpy(string_carti,valoare);
+ strcat(string_carti," ");
+ string_carti[strlen(string_carti)-1] = carti[r].culoare;
+ string_carti[strlen(string_carti)] = '\0';
+ strcat(string_carti," ");
+ }
+ printf("%s\n",string_carti);
+ sendMessage(echipe[i].jucatori[j].sfd,SEND_CARDS,string_carti);
+ }
}
//functia pentru o mana
-
int playHand()
{
- bid();
echipe[0].scor++;
}
@@ -85,6 +206,26 @@
void playGame()
{
+ int i, j, k;
+
+ printf("Se dau cartile\n");
+ sendCards();
+
+ printf("Cartile date sunt:\n");
+ for (i = 0; i < NUMAR_ECHIPE; i++)
+ {
+ printf("Echipa %d\n",i);
+ for (j = 0; j < JUCATORI_PER_ECHIPA; j++)
+ {
+ printf("Jucatorul %d: ",j);
+ for (k = 0; k < CARTI_MANA; k++)
+ printf("[%c %d] ",echipe[i].jucatori[j].carti[k].culoare,echipe[i].jucatori[j].carti[k].valoare);
+ printf("\n");
+ }
+ }
+
+
+ bid();
while(false == endOfGame())
{
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-22 19:56:55 UTC (rev 52)
+++ C/trunk/server/server.c 2010-03-22 21:50:21 UTC (rev 53)
@@ -613,6 +613,8 @@
//functia pentru un joc
playGame();
+
+ getchar();
displayInfoMessage(stdout, "Press any key to close server\n" );
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ali...@us...> - 2010-03-23 01:19:05
|
Revision: 59
http://cruce.svn.sourceforge.net/cruce/?rev=59&view=rev
Author: alinposho
Date: 2010-03-23 01:18:59 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
Functioneaza partea de accept cards si bid atat pentru server cat si pentru
client.
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.c
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 00:42:10 UTC (rev 58)
+++ C/trunk/server/gameLogic.c 2010-03-23 01:18:59 UTC (rev 59)
@@ -206,15 +206,18 @@
string_carti[strlen(string_carti)] = '\0';
strcat(string_carti, " ");
}
+
printf("%s\n", string_carti);
sendMessage(echipe[i].jucatori[j].sfd, SEND_CARDS, string_carti);
//verificam daca jucatorul a acceptat cartile trimise
- int expecttedMessage[] =
- { ACK, NACK };
+ int expecttedMessage[] = { ACK, NACK };
+
char info[MSG_SIZE];
struct jucator expected_Sender[] = {echipe[i].jucatori[j]};
- code = getMSG(expected_Sender, expecttedMessage, info,
- NULL);
+
+ //Asteptam sa receptionam un mesaj OK de la jucatorul tinta
+ while((code = getMSG(expected_Sender, expecttedMessage, info, NULL))== -1);
+
if (ACK == code)
{
char buff[100];
@@ -230,7 +233,7 @@
sprintf(buff, "Jucatorul: %s NU a acceptat cartile\n",
echipe[i].jucatori[j].nume);
displayInfoMessage(stdout, buff);
- //TO DO implemetarea acestei situatii
+ //TO DO implemetarea acestei situatii adica verificarea refuzului
}
else
{
@@ -239,7 +242,8 @@
"Nu s-a recepionat niciun mesaj sau a fost receptionat un mesaj de la cine nu trebuia!\n");
}
}
- } while (ACK != code);
+ }
+ while (ACK != code);
}
displayInfoMessage(stdout, "\n***Cartile au fost impartite.***\n");
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-23 00:42:10 UTC (rev 58)
+++ C/trunk/server/server.c 2010-03-23 01:18:59 UTC (rev 59)
@@ -266,10 +266,17 @@
/* TODO */
/** Ia un mesaj din retea si vede ce e cu el **/
-/* expected reprezinta un vector de int care specifica ce mesaje se
- * se asteapta sa vina. Daca nu vine un mesaj
- * "expected" atunci se returneaza -1.
- * In cazul in care nu se receptioneaza niciun mesaj se returneaza -1
+/* **expected reprezinta un vector de int care specifica ce mesaje se
+ * se asteapta sa vina.
+ * **Jucator este un pointer dar NU este un array. El poate reprezenta un singur jucator daca are valoare sau
+ * toti jucatorii daca este NULL
+ *
+ * **Daca se receptioneza mesaje de la mai multi jucatori printre care si de la jucatorul tinta celelalte sunt ignorate
+ * **Daca nu se receptioneaza mesaje de la jucatorul tinta, atunci toate celelalte mesaje sunt interceptate(se trimite NACK)
+ * iar la final se returneaza -1
+ *
+ * **In cazul in care se receptioneaza mai multe mesaje
+ * **In cazul in care nu se receptioneaza niciun mesaj se returneaza -1
* Daca vine un mesaj expected se returneaza codul mesajului
* Daca expected este NULL atunci se iau in considerare toate mesajele
*
@@ -308,7 +315,12 @@
{
//trimitem NACK pentru mesajul ilegal
int fileDescriptor = getFirst_fd_set(set);
- sendMessage(fileDescriptor, NACK, "Ai trimis un mesaj ilegal!\n");
+ while(fileDescriptor != -1)
+ {
+ sendMessage(fileDescriptor, NACK, "Ai trimis un mesaj ilegal!\n");
+ }
+ //Am receptionat mesaje de la cine nu trebuia
+ return -1;
}
else
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ca...@us...> - 2010-03-23 13:14:42
|
Revision: 69
http://cruce.svn.sourceforge.net/cruce/?rev=69&view=rev
Author: caiusb
Date: 2010-03-23 13:14:34 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
Am implementat playHand() in care se joaca jocul efectiv. Nu merge OK, in
sensul ca sunt ceva probleme cu decodificatul cartilor primite de la clienti.
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.c
C/trunk/server/server.h
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 10:59:21 UTC (rev 68)
+++ C/trunk/server/gameLogic.c 2010-03-23 13:14:34 UTC (rev 69)
@@ -12,6 +12,9 @@
int maxBid = 0;
int maxBidTeam = 0;
+char tromf = 0;
+struct carte carti_luate[4];
+
static void itoa(int n, char a[])
{
int c;
@@ -233,14 +236,12 @@
//verificam daca jucatorul a acceptat cartile trimise
int expecttedMessage[] =
- { ACK, NACK };
+ { ACK, NACK, 0 };
char info[MSG_SIZE];
- struct jucator expected_Sender[] =
- { echipe[i].jucatori[j] };
//Asteptam sa receptionam un mesaj OK de la jucatorul tinta
- while ((code = getMSG(expected_Sender, expecttedMessage,
+ while ((code = getMSG(&echipe[i].jucatori[j], expecttedMessage,
info, NULL)) == -1)
;
@@ -253,14 +254,14 @@
}
else
{
- if (NACK == code)//se cere refacerea cartilor
+ if (NACK == code) //se cere refacerea cartilor
{
char buff[100];
sprintf(buff,
"Jucatorul: %s NU a acceptat cartile\n",
echipe[i].jucatori[j].nume);
displayInfoMessage(stdout, buff);
- //TO DO implemetarea acestei situatii adica verificarea refuzului
+ // TODO implemetarea acestei situatii adica verificarea refuzului
if (checkNACK() == true)
{
sendMessage(echipe[i].jucatori[j].sfd, ACK,
@@ -305,20 +306,162 @@
int j;
for (i = 0; i < NUMAR_ECHIPE; i++)
{
+ echipe[i].nr_carti_luate = 0;
for(j = 0; j < MAX_CARTI; j++)
+ echipe[i].carti_luate[j].valoare = 0;
+ }
+}
+
+struct carte *getCardSiAnunt(char *cardString, int *anunt) {
+ struct carte *c = NULL;
+
+ int i;
+ strtok(cardString, " ");
+
+ *anunt = 0;
+
+ char *value = strtok(NULL, " ");
+ char *color = strtok(NULL, " ");
+ char *a = strtok(NULL, " ");
+ if (value != NULL && color != NULL)
+ {
+ c = (struct carte *) malloc(sizeof(struct carte));
+ c->culoare = color[0];
+ c->valoare = atoi(value);
+ }
+ if (a != NULL)
+ *anunt = atoi(a);
+
+ return c;
+}
+
+void playCard(int player, int team, int order)
+{
+ struct carte *c;
+ int cardOK = 0;
+
+ int expected[] = {CARD_ANUNT,0};
+ char carte_s[3];
+ int anunt;
+
+ while(!cardOK)
+ {
+ sendMessage(echipe[team].jucatori[player].sfd,HIT,"");
+ getMSG(&echipe[team].jucatori[player],expected,carte_s,NULL);
+
+ //decodific cartea
+ c = getCardSiAnunt(carte_s,&anunt);
+ if (c == NULL)
{
- echipe[i].carti_luate[j].valoare = 0;
+ printf("Eroare decodificare carte!\n");
+ sendMessage(echipe[team].jucatori[player].sfd,NACK,"Eroare la decodficare carti\n");
+ continue;
}
+
+ // vad daca am anunt
+ // TODO verific daca anuntul este corect...
+ if (order == 0)
+ if (anunt != 0)
+ if (c->culoare == tromf && anunt == 40)
+ echipe[team].scor += anunt;
+ else
+ if (c->culoare != tromf && anunt == 20)
+ echipe[team].scor += anunt;
+ else
+ {
+ printf("Anunt incorect!\n");
+ sendMessage(echipe[team].jucatori[player].sfd,NACK,"Valoarea anuntului nu este corecta\n");
+ continue;
+ }
+
+ carti_luate[order] = *c;
+ cardOK = 1;
}
+
+ sendMessage(echipe[team].jucatori[player].sfd,ACK,"");
}
+int getMaxCard()
+{
+ struct carte max;
+ int max_index = 0;
+ int i;
+
+ max.culoare = carti_luate[0].culoare;
+ max.valoare = carti_luate[0].valoare;
+
+ for (i=1; i<3; i++)
+ if (carti_luate[i].culoare == tromf)
+ if (max.culoare == tromf)
+ if (carti_luate[i].valoare > max.valoare)
+ {
+ max.valoare = carti_luate[i].valoare;
+ max.culoare = carti_luate[i].culoare;
+ max_index = i;
+ }
+ else
+ {
+ max.valoare = carti_luate[i].valoare;
+ max.culoare = carti_luate[i].culoare;
+ max_index = i;
+ }
+ else
+ if (carti_luate[i].culoare == max.culoare)
+ if (carti_luate[i].valoare > max.valoare)
+ {
+ max.valoare = carti_luate[i].valoare;
+ max.culoare = carti_luate[i].culoare;
+ max_index = i;
+ }
+
+ return max_index;
+}
+
+int getTotalLuat()
+{
+ int i;
+ int t;
+
+ for (i=0;i<4;i++)
+ t += carti_luate[i].valoare;
+
+ return t;
+}
+
//functia pentru o mana
void playHand()
{
-
-
+ int max_card;
+ int total;
+
displayInfoMessage(stdout, "\nJucam o noua mana!\n");
- //echipe[0].scor++;
+
+ // cei 4 jucatori joaca mana
+ playCard(handWinner,handWinnerTeam,0);
+ playCard(handWinner,!handWinnerTeam,1);
+ playCard(!handWinner,handWinnerTeam,2);
+ playCard(!handWinner,!handWinnerTeam,3);
+
+ max_card = getMaxCard();
+ total = getTotalLuat();
+
+ switch(max_card)
+ {
+ case 0:
+ break;
+ case 1:
+ handWinnerTeam = !handWinnerTeam;
+ break;
+ case 2:
+ handWinner = !handWinner;
+ break;
+ case 3:
+ handWinnerTeam = !handWinnerTeam;
+ handWinner = !handWinner;
+ break;
+ }
+
+ echipe[handWinnerTeam].scor += total;
}
@@ -359,11 +502,9 @@
bid();
- //spunem jcatorului care a castigat bid-ul sa incepa mana
+ //spunem jucatorului care a castigat bid-ul sa incepa mana
for(i = 0; i < CARTI_MANA; i++)
- {
playHand();
- }
//Informam jucatorii ca s-a terminat runda si cine cate a facut fiecare echipa
char message[MSG_SIZE];
@@ -373,12 +514,8 @@
int puncte = puncteFacute(echipe[i]);
//Verificam daca nu cumva echipa care a castigat bid-ul a facut minus
if(i == maxBidTeam)
- {
if(puncte < maxBid)
- {
puncte = -maxBid;
- }
- }
//Adunam cat a facut echipa runda aceasta la scorul general
echipe[i].scor += puncte;
@@ -386,21 +523,15 @@
sprintf(message, "Ati facut %d", puncte);
//trimitem mesajul jucatorilor;
for (j = 0; j < JUCATORI_PER_ECHIPA; j++)
- {
- sendMessage(echipe[i].jucatori[j].sfd, END_ROUND,message);
- }
+ sendMessage(echipe[i].jucatori[j].sfd, END_ROUND, message);
}
//Informam toti jucatorii despre starea scorului
char buff[200];
if(echipe[0].scor > echipe[1].scor)
- {
i = 0;
- }
else
- {
i = 1;
- }
sprintf(buff, "Scorul este: %d la %d pentru echipa %s-%s",echipe[i].scor, echipe[i + 1 % 2].scor, echipe[i].jucatori[0].nume, echipe[i].jucatori[1].nume);
sendMessageToAll(INFO_MSG, buff);
@@ -415,13 +546,11 @@
{
int i;
for(i = 0; i < NUMAR_ECHIPE; i++)
- {
if(echipe[i].scor >= MAX_SCOR)
{
displayInfoMessage(stdout, "\n\n*********************S-a terminat jocul*********************\n\n");
return true;
}
- }
return false;
}
@@ -441,9 +570,7 @@
displayInfoMessage(stdout, "***Se incepe jocul***\n");
while(false == endOfGame())
- {
playRound();
- }
//s-a sfarsit jocul ii informam pe toti
inforAllAboutEndOfGame();
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-23 10:59:21 UTC (rev 68)
+++ C/trunk/server/server.c 2010-03-23 13:14:34 UTC (rev 69)
@@ -267,7 +267,7 @@
/* TODO */
/** Ia un mesaj din retea si vede ce e cu el **/
/* **expected reprezinta un vector de int care specifica ce mesaje se
- * se asteapta sa vina.
+ * se asteapta sa vina, ultimul element trebuie sa fie 0.
* **Jucator este un pointer dar NU este un array. El poate reprezenta un singur jucator daca are valoare sau
* toti jucatorii daca este NULL
*
Modified: C/trunk/server/server.h
===================================================================
--- C/trunk/server/server.h 2010-03-23 10:59:21 UTC (rev 68)
+++ C/trunk/server/server.h 2010-03-23 13:14:34 UTC (rev 69)
@@ -39,7 +39,8 @@
struct echipa {
struct jucator jucatori[JUCATORI_PER_ECHIPA];
int anunturi;
- int scor;
+ int scor;
+ int nr_carti_luate;
struct carte carti_luate[MAX_CARTI];
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hor...@us...> - 2010-03-23 16:49:07
|
Revision: 75
http://cruce.svn.sourceforge.net/cruce/?rev=75&view=rev
Author: horiaradu
Date: 2010-03-23 16:49:00 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
checkNack() implementat
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.h
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 16:42:36 UTC (rev 74)
+++ C/trunk/server/gameLogic.c 2010-03-23 16:49:00 UTC (rev 75)
@@ -169,9 +169,21 @@
carti[23].culoare = 'V';
}
-int checkNACK()
+int checkNACK(struct carte *carti)
{
- return true;
+ int total = 0, nines = 0;
+ int i;
+ for (i = 0; i < CARTI_MANA; i++) {
+ total += carti[i].valoare;
+ if (carti[i].valoare == 0)
+ nines++;
+ }
+
+ if (total < MIN_PCT)
+ return true;
+ else if (nines == 4)
+ return true;
+ return false;
}
@@ -267,7 +279,7 @@
echipe[i].jucatori[j].nume);
displayInfoMessage(stdout, buff);
//TO DO implemetarea acestei situatii adica verificarea refuzului
- if (checkNACK() == true)
+ if (checkNACK(echipe[i].jucatori[j].carti) == true)
{
sendMessage(echipe[i].jucatori[j].sfd, ACK,
"S-a acceptat cererea de a reface cartile.");
Modified: C/trunk/server/server.h
===================================================================
--- C/trunk/server/server.h 2010-03-23 16:42:36 UTC (rev 74)
+++ C/trunk/server/server.h 2010-03-23 16:49:00 UTC (rev 75)
@@ -11,6 +11,8 @@
#define true 1
#define false 0
+#define MIN_PCT 10
+
/**
Structura pentru o carte
valoare - valoare cartii (0,2,3,4,10,11)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ca...@us...> - 2010-03-23 21:34:11
|
Revision: 80
http://cruce.svn.sourceforge.net/cruce/?rev=80&view=rev
Author: caiusb
Date: 2010-03-23 21:34:05 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
Am adaugat un mesaj de info, care anunta clientii cine anume a castigat mana.
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.c
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 21:13:53 UTC (rev 79)
+++ C/trunk/server/gameLogic.c 2010-03-23 21:34:05 UTC (rev 80)
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+
#include "server.h"
#include "../protocol/protocol.h"
@@ -36,7 +37,7 @@
}
}
-//functiacare se ocupa de tot bid-ul de la inceput de joc
+//functia care se ocupa de tot bid-ul de la inceput de joc
//returneaza
void bid()
{
@@ -629,6 +630,10 @@
{
echipe[handWinnerTeam].carti_luate[echipe[handWinnerTeam].nr_carti_luate++] = carti_luate[i];
}
+
+ //anunt ceilalti jucatori cine a castigat mana
+ sprintf(buff,"%s a castigat mana\n",echipe[handWinnerTeam].jucatori[handWinner].nume);
+ sendMessageToAll(INFO_MSG,buff);
}
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-23 21:13:53 UTC (rev 79)
+++ C/trunk/server/server.c 2010-03-23 21:34:05 UTC (rev 80)
@@ -315,9 +315,8 @@
//trimitem NACK pentru mesajul ilegal
int fileDescriptor = getFirst_fd_set(set);
while(fileDescriptor != -1)
- {
sendMessage(fileDescriptor, NACK, "Ai trimis un mesaj ilegal!\n");
- }
+
//Am receptionat mesaje de la cine nu trebuia
return -1;
}
@@ -353,7 +352,7 @@
/* a venit mesajul de la cine trebe */
int messageLength = -1;
- messageLength = read(fd,msg,MSG_SIZE);
+ messageLength = read(fd, msg, MSG_SIZE);
char infoMSG[1024];
sprintf(infoMSG, "Message read. It has %d bytes\n",messageLength);
//displayInfoMessage(stdout, infoMSG);
@@ -364,15 +363,12 @@
leave_game();
}
if (messageLength != MSG_SIZE)
- {
displayInfoMessage(stdout, "Warning: too few bytes read\n");
- }
int code = decode_message(msg);
//verificam daca mesajul receptionat este intre cele care erau astepate
- for (i=0;expected[i];i++)
- {
+ for (i=0; expected[i]; i++)
if(expected[i] == code)
{
//dispatchMSG(code, msg ,fd);
@@ -382,7 +378,6 @@
*sender_sfd = fd;
return code;
}
- }
displayInfoMessage(stdout, "Am receptionat mesajul gresit!\n");
return -1;
@@ -396,12 +391,9 @@
int j;
for(i = 0; i < NUMAR_ECHIPE; i++)
- {
for(j = 0; j<JUCATORI_PER_ECHIPA;j++)
- {
close(echipe[i].jucatori[j].sfd);
- }
- }
+
exit(EXIT_SUCCESS);
}
@@ -448,14 +440,9 @@
//trimitem mesajul pe socket
if (write(receiver_sfd, &buffer, MSG_SIZE) != MSG_SIZE)
- {
return false;
- }
else
- {
- //succes
- return true;
- }
+ return true; //succes
}
/**
@@ -474,12 +461,8 @@
int j;
for (i = 0; i < NUMAR_ECHIPE; i++)
for (j = 0; j < MAX_JUCATORI; j++)
- {
if (write(echipe[i].jucatori[j].sfd, &buffer, MSG_SIZE) != MSG_SIZE)
- {
return false;
- }
- }
return true;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ca...@us...> - 2010-03-23 22:14:16
|
Revision: 82
http://cruce.svn.sourceforge.net/cruce/?rev=82&view=rev
Author: caiusb
Date: 2010-03-23 22:14:10 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
Corectat un bug la sendMessageToAll. More cosmetic stuff.
Modified Paths:
--------------
C/trunk/server/gameLogic.c
C/trunk/server/server.c
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 21:48:57 UTC (rev 81)
+++ C/trunk/server/gameLogic.c 2010-03-23 22:14:10 UTC (rev 82)
@@ -77,10 +77,6 @@
displayInfoMessage(stdout, "\n***S-a terminat bid-ul***\n");
}
-
-
-
-
//calculeaza cate puncte a facut echipa in functie de cartile pe care le-a luat
int puncteFacute(struct echipa team)
{
@@ -184,7 +180,6 @@
return false;
}
-
/**
* Genereaza si trimite cartile jucatorilor
*/
@@ -313,7 +308,6 @@
displayInfoMessage(stdout, "\n***Cartile au fost impartite.***\n");
}
-
//initializam toate cartile la valoarea 0 prentu a nu influienta scorul rundei
void initCartiLuate()
{
@@ -510,25 +504,20 @@
for (i=1; i<3; i++)
if (carti_luate[i].culoare == tromf)
- {
if (max.culoare == tromf)
- {
if (carti_luate[i].valoare > max.valoare)
{
max.valoare = carti_luate[i].valoare;
max.culoare = carti_luate[i].culoare;
max_index = i;
}
- }
else
{
max.valoare = carti_luate[i].valoare;
max.culoare = carti_luate[i].culoare;
max_index = i;
}
- }
else
- {
if (carti_luate[i].culoare == max.culoare)
if (carti_luate[i].valoare > max.valoare)
{
@@ -536,7 +525,6 @@
max.culoare = carti_luate[i].culoare;
max_index = i;
}
- }
return max_index;
}
@@ -671,9 +659,7 @@
//spunem jucatorului care a castigat bid-ul sa incepa mana
for(i = 0; i < CARTI_MANA; i++)
- {
playHand();
- }
//Informam jucatorii ca s-a terminat runda si cine cate a facut fiecare echipa
char message[MSG_SIZE];
@@ -683,12 +669,8 @@
int puncte = puncteFacute(echipe[i]);
//Verificam daca nu cumva echipa care a castigat bid-ul a facut minus
if(i == maxBidTeam)
- {
if(puncte < maxBid)
- {
puncte = -maxBid;
- }
- }
//Adunam cat a facut echipa runda aceasta la scorul general
echipe[i].scor += puncte;
@@ -719,13 +701,11 @@
{
int i;
for(i = 0; i < NUMAR_ECHIPE; i++)
- {
if(echipe[i].scor >= MAX_SCOR)
{
displayInfoMessage(stdout, "\n\n*********************S-a terminat jocul*********************\n\n");
return true;
}
- }
return false;
}
@@ -735,8 +715,6 @@
displayInfoMessage(stdout, "Informam toti jucatorii despre cum s-a sfarsit jocul!\n");
}
-
-
void playGame()
{
echipe[0].scor = 0;
Modified: C/trunk/server/server.c
===================================================================
--- C/trunk/server/server.c 2010-03-23 21:48:57 UTC (rev 81)
+++ C/trunk/server/server.c 2010-03-23 22:14:10 UTC (rev 82)
@@ -450,7 +450,7 @@
* Returneaza 1 in caz de succes si -1 in caz de eroare
*/
int sendMessageToAll(int code, char info[])
-{
+{
//adaugam header
char buffer[MSG_SIZE];
sprintf(buffer, "%d %s", code, info);
@@ -460,7 +460,7 @@
int i;
int j;
for (i = 0; i < NUMAR_ECHIPE; i++)
- for (j = 0; j < MAX_JUCATORI; j++)
+ for (j = 0; j < JUCATORI_PER_ECHIPA; j++)
if (write(echipe[i].jucatori[j].sfd, &buffer, MSG_SIZE) != MSG_SIZE)
return false;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|