[Cruce-commit] SF.net SVN: cruce:[60] C/trunk
Status: Beta
Brought to you by:
caiusb
|
From: <ali...@us...> - 2010-03-23 01:47:02
|
Revision: 60
http://cruce.svn.sourceforge.net/cruce/?rev=60&view=rev
Author: alinposho
Date: 2010-03-23 01:46:55 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
La client nu ati tratat si cazul in care un jucator ce primeste carti dupa tine, cere refacerea cartilor.
Modified Paths:
--------------
C/trunk/client/client.c
C/trunk/server/gameLogic.c
Modified: C/trunk/client/client.c
===================================================================
--- C/trunk/client/client.c 2010-03-23 01:18:59 UTC (rev 59)
+++ C/trunk/client/client.c 2010-03-23 01:46:55 UTC (rev 60)
@@ -33,8 +33,10 @@
int join_game() {
char message[MSG_SIZE];
char answer = 'n';
- while (answer != 'y') {
+ while (answer != 'y')
+ {
fflush(stdin);
+ fflush(stdout);
printf("Join game? [y|n]");
fflush(stdin);
scanf("%c%*c", &answer);
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 01:18:59 UTC (rev 59)
+++ C/trunk/server/gameLogic.c 2010-03-23 01:46:55 UTC (rev 60)
@@ -168,8 +168,15 @@
carti[23].culoare = 'V';
}
+int checkNACK()
+{
+ return true;
+}
-//Genereaza si trimite cartile jucatorilor
+
+/**
+ * Genereaza si trimite cartile jucatorilor
+ */
void sendCards()
{
displayInfoMessage(stdout, "\n***Se impart cartile***\n");
@@ -185,66 +192,102 @@
srand(1);
memset(date,0,sizeof(int)*24);
- for (i = 0; i < NUMAR_ECHIPE; i++)
- for (j = 0; j < JUCATORI_PER_ECHIPA; j++)
+ int refaCartile;
+
+ do
+ {
+ refaCartile = false;
+
+ for (i = 0; i < NUMAR_ECHIPE; i++)
{
- int code = -1;
- do
+ if(refaCartile == true)
+ break;
+ for (j = 0; j < JUCATORI_PER_ECHIPA; j++)
{
- strcpy(string_carti, "");
- for (k = 0; k < CARTI_MANA; k++)
+ if(refaCartile == true)
+ break;
+ int code = -1;
+ do
{
- char valoare[3];
- while (date[(r = (random() % 24))])
- ;
- date[r] = 1;
- echipe[i].jucatori[j].carti[k] = carti[r];
- itoa(carti[r].valoare, valoare);
- strcat(string_carti, valoare);
- strcat(string_carti, " ");
- string_carti[strlen(string_carti) - 1] = carti[r].culoare;
- string_carti[strlen(string_carti)] = '\0';
- strcat(string_carti, " ");
- }
+ strcpy(string_carti, "");
+ 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];
+ itoa(carti[r].valoare, valoare);
+ strcat(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);
- //verificam daca jucatorul a acceptat cartile trimise
- int expecttedMessage[] = { ACK, NACK };
+ printf("%s\n", string_carti);
+ sendMessage(echipe[i].jucatori[j].sfd, SEND_CARDS,
+ string_carti);
- char info[MSG_SIZE];
- struct jucator expected_Sender[] = {echipe[i].jucatori[j]};
+ //verificam daca jucatorul a acceptat cartile trimise
+ int expecttedMessage[] =
+ { ACK, NACK };
- //Asteptam sa receptionam un mesaj OK de la jucatorul tinta
- while((code = getMSG(expected_Sender, expecttedMessage, info, NULL))== -1);
+ char info[MSG_SIZE];
+ struct jucator expected_Sender[] =
+ { echipe[i].jucatori[j] };
- if (ACK == code)
- {
- char buff[100];
- sprintf(buff, "Jucatorul: %s a acceptat cartile\n",
- echipe[i].jucatori[j].nume);
- displayInfoMessage(stdout, buff);
- }
- else
- {
- if (NACK == code)
+ //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];
- sprintf(buff, "Jucatorul: %s NU a acceptat cartile\n",
+ sprintf(buff, "Jucatorul: %s a acceptat cartile\n",
echipe[i].jucatori[j].nume);
displayInfoMessage(stdout, buff);
- //TO DO implemetarea acestei situatii adica verificarea refuzului
}
else
{
- displayInfoMessage(
- stdout,
- "Nu s-a recepionat niciun mesaj sau a fost receptionat un mesaj de la cine nu trebuia!\n");
+ 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
+ if (checkNACK() == true)
+ {
+ sendMessage(echipe[i].jucatori[j].sfd, ACK,
+ "S-a acceptat cererea de a reface cartile.");
+ displayInfoMessage(stdout, "S-a acceptat cererea de a reface cartile.\n");
+ refaCartile = true;
+ break;
+ }
+ else
+ {
+ displayInfoMessage(stdout, "NU s-a acceptat cererea de a reface cartile.\n");
+ sendMessage(echipe[i].jucatori[j].sfd, ACK, "Nu s-a acceptat cererea de a reface cartile.");
+ }
+
+ }
+ else
+ {
+ displayInfoMessage(
+ stdout,
+ "Nu s-a recepionat niciun mesaj sau a fost receptionat un mesaj de la cine nu trebuia!\n");
+ }
}
}
+ while (ACK != code);
}
- while (ACK != code);
}
+ }
+ while (refaCartile == true);
displayInfoMessage(stdout, "\n***Cartile au fost impartite.***\n");
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|