[Cruce-commit] SF.net SVN: cruce:[72] C/trunk
Status: Beta
Brought to you by:
caiusb
|
From: <ali...@us...> - 2010-03-23 16:26:28
|
Revision: 72
http://cruce.svn.sourceforge.net/cruce/?rev=72&view=rev
Author: alinposho
Date: 2010-03-23 16:26:21 +0000 (Tue, 23 Mar 2010)
Log Message:
-----------
Am adaugat functionalitatea de playHand() la ce facuse Caius anterior. Mai sunt erori, si trebui testat.
Modified Paths:
--------------
C/trunk/client/client.c
C/trunk/client/client_dummy.c
C/trunk/server/gameLogic.c
Modified: C/trunk/client/client.c
===================================================================
--- C/trunk/client/client.c 2010-03-23 15:33:10 UTC (rev 71)
+++ C/trunk/client/client.c 2010-03-23 16:26:21 UTC (rev 72)
@@ -294,6 +294,7 @@
do {
printf("Da carte! (index-ul cartii 0->5)\n");
+ fflush(stdin);
scanf("%d%*c", &card);
} while (card < 0 || card >= player.carti_ramase);
Modified: C/trunk/client/client_dummy.c
===================================================================
--- C/trunk/client/client_dummy.c 2010-03-23 15:33:10 UTC (rev 71)
+++ C/trunk/client/client_dummy.c 2010-03-23 16:26:21 UTC (rev 72)
@@ -224,7 +224,7 @@
else if (code == NACK) // odata cu neacceptarea refuzului jucatorului de a primi cartile, acesta este indreptat spre bid
return 1;
}
-
+//modifying dummy to bid whatever
int bidding() {
char message[MSG_SIZE];
@@ -239,11 +239,12 @@
printf("%s\n", message);
else if (code == BID) {
- int bid = 0;
+ int bid = 3;
+ /*
do {
printf("Cate faci? [0, 1, 2, 3, 4, 5, 6]\n");
scanf("%d%*c", &bid);
- } while (bid < 0 || bid > 6);
+ } while (bid < 0 || bid > 6);*/
memset(message, 0, MSG_SIZE);
sprintf(message, "%d %d", BID_RESP, bid);
@@ -284,7 +285,8 @@
do {
printf("Da carte! (index-ul cartii 0->5)\n");
- scanf("%d%*c", &card);
+ fflush(stdin);
+ scanf("%d", &card);
} while (card < 0 || card >= player.carti_ramase);
memset(message, 0, MSG_SIZE);
@@ -365,9 +367,11 @@
do
{
showCards();
- printf("Do you like your cards? y|n");
- fflush(stdin);
- scanf("%c", &opt);
+ //printf("Do you like your cards? y|n");
+ //fflush(stdin);
+ //scanf("%c", &opt);
+ //modifying dummy to accept ny cards
+ opt = 'y';
if (opt == 'y')
{
ok = accept_cards();
Modified: C/trunk/server/gameLogic.c
===================================================================
--- C/trunk/server/gameLogic.c 2010-03-23 15:33:10 UTC (rev 71)
+++ C/trunk/server/gameLogic.c 2010-03-23 16:26:21 UTC (rev 72)
@@ -229,6 +229,7 @@
string_carti[strlen(string_carti)] = '\0';
strcat(string_carti, " ");
}
+ echipe[i].jucatori[j].carti_ramase = 6;
printf("%s\n", string_carti);
sendMessage(echipe[i].jucatori[j].sfd, SEND_CARDS,
@@ -252,6 +253,8 @@
char buff[100];
sprintf(buff, "Jucatorul: %s a acceptat cartile\n",
echipe[i].jucatori[j].nume);
+ //Asociem cartile trimise jucatorului
+
displayInfoMessage(stdout, buff);
}
else
@@ -368,12 +371,9 @@
{
struct carte *carte = NULL;
-
- strtok(cardString, " ");
-
*anunt = 0;
- char *value = strtok(NULL, " ");
+ char *value = strtok(cardString, " ");
char *color = strtok(NULL, " ");
char *a = strtok(NULL, " ");
if (value != NULL && color != NULL)
@@ -389,6 +389,28 @@
}
/**
+ * Sterge o carte din lista de carti a jucatoruilui
+ */
+void deleteCard(struct jucator *jucator, struct carte carteDeSters)
+{
+ int i;
+ for(i=0;i<jucator->carti_ramase;i++)
+ {
+ if(jucator->carti[i].valoare == carteDeSters.valoare && jucator->carti[i].culoare == carteDeSters.culoare)
+ {
+ int j;
+ for(j = i; j < jucator->carti_ramase - 1;j++)
+ jucator->carti[j] = jucator->carti[j + 1];
+ jucator->carti_ramase--;
+ return;
+ }
+ }
+
+ //Somethig is wrong
+ displayInfoMessage(stdout, "Nu am gasit cartea cautata printre cele detinute de jucator!\n");
+}
+
+/**
* Functie care ii cere jucatorului care este la rand sa dea carte.
* Primeste cartea si eventual anuntul, le decodifica si verifica daca s-au respectat regulile.
* iasa din functie doar cand jucatorul a dat cartea care trebuie, iar anutul daca a existat este corect
@@ -427,6 +449,10 @@
cardOK = false;
continue;
}
+ else
+ { //elimina cartea din lista de carti ale jucatorului
+ deleteCard(&echipe[team].jucatori[player], *carte);
+ }
// vad daca am anunt
// TODO verific daca anuntul este corect...
@@ -447,6 +473,7 @@
}
}
}
+ //in cazul in care nu sunt primul pur si simplu se ignora anuntul
carti_luate[order] = *carte;
cardOK = 1;
@@ -500,7 +527,7 @@
int getTotalLuat()
{
int i;
- int t;
+ int t = 0;
for (i=0;i<4;i++)
t += carti_luate[i].valoare;
@@ -518,9 +545,35 @@
// cei 4 jucatori joaca mana
playCard(handWinner,handWinnerTeam,0);
+ //Setam tromful
+ tromf = carti_luate[0].culoare;
+
+ //anuntam ceilalti jucatori care este tromful
+ char buff[100];
+ sprintf(buff, "%s a dat cartea: %d %c care este si tromf.\n",
+ echipe[handWinnerTeam].jucatori[handWinner].nume, carti_luate[0].valoare, carti_luate[0].culoare);
+ sendMessageToAll(INFO_MSG, buff);
+
playCard(handWinner,!handWinnerTeam,1);
+ //anuntam ceilalti jucatori ce carte s-a dat
+ sprintf(buff, "%s a dat cartea: %d %c.\n",
+ echipe[!handWinnerTeam].jucatori[handWinner].nume,
+ carti_luate[1].valoare, carti_luate[1].culoare);
+ sendMessageToAll(INFO_MSG, buff);
+
playCard(!handWinner,handWinnerTeam,2);
+ //anuntam ceilalti jucatori ce carte s-a dat
+ sprintf(buff, "%s a dat cartea: %d %c.\n",
+ echipe[handWinnerTeam].jucatori[!handWinner].nume,
+ carti_luate[2].valoare, carti_luate[2].culoare);
+ sendMessageToAll(INFO_MSG, buff);
+
playCard(!handWinner,!handWinnerTeam,3);
+ //anuntam ceilalti jucatori ce carte s-a dat
+ sprintf(buff, "%s a dat cartea: %d %c.\n",
+ echipe[!handWinnerTeam].jucatori[!handWinner].nume,
+ carti_luate[3].valoare, carti_luate[3].culoare);
+ sendMessageToAll(INFO_MSG, buff);
//Verific cine a luat mana
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|