2-APL UPC project.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

points are now given as stated by the rules of the game

fdesan 65eb9831 998f48b1

+42 -27
+31 -21
code/2apl_platform/briscola_chiamata/notary.2apl
··· 1 1 BeliefUpdates: 2 - { true } SetAssigned(POS, X) { assigned(POS, X) } 2 + { true } SetAssigned(POS, X) { assigned(POS, X) } /* Player X assigned at position POS */ 3 3 { true } RemoveAssigned(POS, X) { not assigned(POS, X) } 4 4 { true } SetDealer(X) { dealer(X) } 5 - { not currentturn(_) } UpdateTrun(X) { currentturn(X) } 5 + { not currentturn(_) } UpdateTurn(X) { currentturn(X) } 6 6 { currentturn(X) } RemoveTrun(X) { not currentturn(X) } 7 7 { true } PlayerPass(X) { playerpass(X) } 8 - { true } AddCardPlayed(S, R, X) { cardontable(S, R, X) } 9 - { true } AddBriscola(S, R) { briscola(S, R) } 8 + { true } AddCardPlayed(S, R, X) { cardontable(S, R, X) } /* Player X has played card of rank R and suit S */ 9 + { true } AddBriscola(S, R) { briscola(S, R) } /* Set the riscola to be a card of rank R and suit S */ 10 10 { true } RemoveCardPlayed(S, R, X) { not cardontable(S, R, X) } 11 11 12 12 { not points(P, X) } AddPoints(P, X) { points(P, X) } ··· 23 23 getpoints(three, X) :- X is 10. 24 24 getpoints(ace, X) :- X is 11. 25 25 getpoints(Y, X) :- X is 0. 26 + 27 + briscolaPlayed(X) :- cardontable(S, _, X), briscola(S, _). /* Keep track of who played a briscola */ 26 28 27 - //Get The Winner 28 - getwinner(Winner) :- cardontable(_, ace, Winner), !. 29 - getwinner(Winner) :- cardontable(_, three, Winner), !. 30 - getwinner(Winner) :- cardontable(_, king, Winner), !. 31 - getwinner(Winner) :- cardontable(_, queen, Winner), !. 32 - getwinner(Winner) :- cardontable(_, jack, Winner), !. 33 - getwinner(Winner) :- cardontable(_, seven, Winner), !. 34 - getwinner(Winner) :- cardontable(_, six, Winner), !. 35 - getwinner(Winner) :- cardontable(_, five, Winner), !. 36 - getwinner(Winner) :- cardontable(_, four, Winner), !. 37 - getwinner(Winner) :- cardontable(_, two, Winner), !. 29 + getwinner(Winner, Suit) :- cardontable(Suit, ace, Winner), !. 30 + getwinner(Winner, Suit) :- cardontable(Suit, three, Winner), !. 31 + getwinner(Winner, Suit) :- cardontable(Suit, king, Winner), !. 32 + getwinner(Winner, Suit) :- cardontable(Suit, queen, Winner), !. 33 + getwinner(Winner, Suit) :- cardontable(Suit, jack, Winner), !. 34 + getwinner(Winner, Suit) :- cardontable(Suit, seven, Winner), !. 35 + getwinner(Winner, Suit) :- cardontable(Suit, six, Winner), !. 36 + getwinner(Winner, Suit) :- cardontable(Suit, five, Winner), !. 37 + getwinner(Winner, Suit) :- cardontable(Suit, four, Winner), !. 38 + getwinner(Winner, Suit) :- cardontable(Suit, two, Winner), !. 38 39 39 40 major(X, Y) :- X >= Y. 40 41 win(X, P1, [X, P1]). ··· 158 159 if B( X = 5 ) then 159 160 { 160 161 RemoveTrun(X); 161 - UpdateTrun(0); 162 + UpdateTurn(0); 162 163 B( assigned(0, P)); 163 164 print("Round over!"); 164 165 countpoints() ··· 168 169 B( assigned(X, P)); 169 170 send(P, inform, yourturn(X)); 170 171 RemoveTrun(X); 171 - UpdateTrun(X + 1) 172 + UpdateTurn(X + 1) 172 173 } 173 174 } 174 175 ··· 179 180 selectturn() 180 181 } 181 182 183 + // P players, S suits, R ranks, X points, W winner 182 184 countpoints() <- true | 183 185 { 184 186 B( assigned(0, P0)); ··· 196 198 B( assigned(4, P4)); 197 199 B( cardontable(S4, R4, P4)); 198 200 B( getpoints(R4, X4)); 199 - 201 + 202 + if B( briscolaPlayed(_)) then 203 + { 204 + B( briscola(S,_) and getwinner(W, S)) 205 + } 206 + else 207 + { 208 + B( getwinner(W, S0)) 209 + }; 200 210 201 211 //Send point to the winner 202 - B( getwinner(W) ); 203 212 send(W, inform, yourpoints( X0 + X1 + X2 + X3 + X4)); 204 - @cardtable(updatePoints(W, X0 + X1 + X2 + X3 + X4)); 213 + //@cardtable(updatePoints(W, X0 + X1 + X2 + X3 + X4)); 205 214 B( points(W, POINTS) ); 206 215 RemovePoints(W, POINTS); 207 216 AddPoints(W, POINTS + X0 + X1 + X2 + X3 + X4); 217 + @cardtable(updatePoints(W, POINTS + X0 + X1 + X2 + X3 + X4)); 208 218 209 219 //Clean table 210 220 B( assigned(0, P0)); ··· 239 249 } 240 250 } 241 251 242 - 252 +
+11 -6
code/2apl_platform/briscola_chiamata/player.2apl
··· 11 11 { not points(X) } AddPoints(X) { points(X) } 12 12 { points(X) } RemovePoints(X) { not points(X) } 13 13 14 - { true } AddTeamMember(X) { team(X) } 14 + { true } SetPartner(X) { partner(X) } 15 15 16 16 { true } AddBriscola(X) { briscola(X) } 17 17 ··· 187 187 //chose a random card of the deck 188 188 send(d, inform, askforacard(0)) 189 189 } 190 + 190 191 message(d, inform, _, _, acard(X)) <- briscola(B) | 191 192 { 192 193 B(X = [S, R]); ··· 196 197 if B( iscard(H, [S, R]) ) then 197 198 { 198 199 print("I go alone!"); 199 - AddTeamMember(alone) // The player goes alone 200 + SetPartner(Me) // The player goes alone 200 201 } 201 202 } 202 203 203 - 204 204 message(X, inform, _, _, declarebriscola(Briscola, Y)) <- hand(H) | 205 205 { 206 206 // Update knowledge about the team 207 207 if B( iscard(H, Briscola) ) then 208 208 { 209 - print("I go with bid winner!"); 210 - AddTeamMember(Y) 209 + print("is the parter of the declarer"); 210 + SetPartner(Y) 211 211 } 212 212 } 213 213 ··· 216 216 */ 217 217 message(n, inform, _, _, yourturn(Y)) <- hand(H) and not H = [] | 218 218 { 219 + 219 220 print("My turn!"); 220 221 B( getcard(H, 0, X ) ); //TODO Get a ramdom card. 221 222 B( X = [S, R] ); ··· 235 236 236 237 message(n, inform, _, _, yourpoints(Y)) <- true | 237 238 { 239 + print("I received the points"); 238 240 B( points(P) ); 239 241 RemovePoints(P); 240 242 AddPoints(P + Y) ··· 248 250 send(n, inform, doiwin(P)) 249 251 } 250 252 253 + /** 254 + * updateScore() should be moved in the notary agent? 255 + */ 251 256 message(n, inform, _, _, youwin(Y)) <- briscola(_) | 252 257 { 253 258 B( assigned(Pos, Me) ); ··· 271 276 B( assigned(Pos, Me) ); 272 277 @cardtable(updateScore(Me, -1)) 273 278 } 274 - 279 +