From 28360090b6aefa521c208b258631f442748ee801 Mon Sep 17 00:00:00 2001 From: Stuart Kyawmyint Date: Sun, 6 Oct 2019 10:19:38 -0700 Subject: [PATCH 1/6] added the ONID folder --- projects/kyawmyis/README.md | 1 + projects/kyawmyis/dominion/Makefile | 31 + projects/kyawmyis/dominion/READM.md | 2 + projects/kyawmyis/dominion/dominion.c | 1373 +++++++++++++++++ projects/kyawmyis/dominion/dominion.h | 131 ++ projects/kyawmyis/dominion/dominion_helpers.h | 15 + projects/kyawmyis/dominion/interface.c | 425 +++++ projects/kyawmyis/dominion/interface.h | 128 ++ projects/kyawmyis/dominion/playdom.c | 135 ++ projects/kyawmyis/dominion/player.c | 205 +++ projects/kyawmyis/dominion/rngs.c | 183 +++ projects/kyawmyis/dominion/rngs.h | 19 + projects/kyawmyis/dominion/rt.c | 27 + projects/kyawmyis/dominion/testdrawcard.c | 74 + 14 files changed, 2749 insertions(+) create mode 100644 projects/kyawmyis/README.md create mode 100644 projects/kyawmyis/dominion/Makefile create mode 100644 projects/kyawmyis/dominion/READM.md create mode 100644 projects/kyawmyis/dominion/dominion.c create mode 100644 projects/kyawmyis/dominion/dominion.h create mode 100644 projects/kyawmyis/dominion/dominion_helpers.h create mode 100644 projects/kyawmyis/dominion/interface.c create mode 100644 projects/kyawmyis/dominion/interface.h create mode 100644 projects/kyawmyis/dominion/playdom.c create mode 100644 projects/kyawmyis/dominion/player.c create mode 100644 projects/kyawmyis/dominion/rngs.c create mode 100644 projects/kyawmyis/dominion/rngs.h create mode 100644 projects/kyawmyis/dominion/rt.c create mode 100644 projects/kyawmyis/dominion/testdrawcard.c diff --git a/projects/kyawmyis/README.md b/projects/kyawmyis/README.md new file mode 100644 index 000000000..e0ef4c115 --- /dev/null +++ b/projects/kyawmyis/README.md @@ -0,0 +1 @@ +#Wendy Roberts, roberwen diff --git a/projects/kyawmyis/dominion/Makefile b/projects/kyawmyis/dominion/Makefile new file mode 100644 index 000000000..5541801f3 --- /dev/null +++ b/projects/kyawmyis/dominion/Makefile @@ -0,0 +1,31 @@ +CFLAGS= -Wall -fpic -coverage -lm -std=c99 + +rngs.o: rngs.h rngs.c + gcc -c rngs.c -g $(CFLAGS) + +dominion.o: dominion.h dominion.c rngs.o + gcc -c dominion.c -g $(CFLAGS) + +playdom: dominion.o playdom.c + gcc -o playdom playdom.c -g dominion.o rngs.o $(CFLAGS) +#To run playdom you need to entere: ./playdom like ./playdom 10*/ + +testDrawCard: testDrawCard.c dominion.o rngs.o + gcc -o testDrawCard -g testDrawCard.c dominion.o rngs.o $(CFLAGS) + +interface.o: interface.h interface.c + gcc -c interface.c -g $(CFLAGS) + +runtests: testDrawCard + ./testDrawCard &> unittestresult.out + gcov dominion.c >> unittestresult.out + cat dominion.c.gcov >> unittestresult.out + + +player: player.c interface.o + gcc -o player player.c -g dominion.o rngs.o interface.o $(CFLAGS) + +all: playdom player + +clean: + rm -f *.o playdom.exe playdom player player.exe *.gcov *.gcda *.gcno *.so *.out testDrawCard testDrawCard.exe diff --git a/projects/kyawmyis/dominion/READM.md b/projects/kyawmyis/dominion/READM.md new file mode 100644 index 000000000..c3599f6ad --- /dev/null +++ b/projects/kyawmyis/dominion/READM.md @@ -0,0 +1,2 @@ +run make all #To compile the dominion code +run ./playdom 30 # to run playdom code diff --git a/projects/kyawmyis/dominion/dominion.c b/projects/kyawmyis/dominion/dominion.c new file mode 100644 index 000000000..c94e2edb9 --- /dev/null +++ b/projects/kyawmyis/dominion/dominion.c @@ -0,0 +1,1373 @@ +#include "dominion.h" +#include "dominion_helpers.h" +#include "rngs.h" +#include +#include +#include + +int compare(const void* a, const void* b) { + if (*(int*)a > *(int*)b) + return 1; + if (*(int*)a < *(int*)b) + return -1; + return 0; +} + +struct gameState* newGame() { + struct gameState* g = malloc(sizeof(struct gameState)); + return g; +} + +int* kingdomCards(int k1, int k2, int k3, int k4, int k5, int k6, int k7, + int k8, int k9, int k10) { + int* k = malloc(10 * sizeof(int)); + k[0] = k1; + k[1] = k2; + k[2] = k3; + k[3] = k4; + k[4] = k5; + k[5] = k6; + k[6] = k7; + k[7] = k8; + k[8] = k9; + k[9] = k10; + return k; +} + +int initializeGame(int numPlayers, int kingdomCards[10], int randomSeed, + struct gameState *state) { + int i; + int j; + int it; + + //set up random number generator + SelectStream(1); + PutSeed((long)randomSeed); + + //check number of players + if (numPlayers > MAX_PLAYERS || numPlayers < 2) + { + return -1; + } + + //set number of players + state->numPlayers = numPlayers; + + //check selected kingdom cards are different + for (i = 0; i < 10; i++) + { + for (j = 0; j < 10; j++) + { + if (j != i && kingdomCards[j] == kingdomCards[i]) + { + return -1; + } + } + } + + + //initialize supply + /////////////////////////////// + + //set number of Curse cards + if (numPlayers == 2) + { + state->supplyCount[curse] = 10; + } + else if (numPlayers == 3) + { + state->supplyCount[curse] = 20; + } + else + { + state->supplyCount[curse] = 30; + } + + //set number of Victory cards + if (numPlayers == 2) + { + state->supplyCount[estate] = 8; + state->supplyCount[duchy] = 8; + state->supplyCount[province] = 8; + } + else + { + state->supplyCount[estate] = 12; + state->supplyCount[duchy] = 12; + state->supplyCount[province] = 12; + } + + //set number of Treasure cards + state->supplyCount[copper] = 60 - (7 * numPlayers); + state->supplyCount[silver] = 40; + state->supplyCount[gold] = 30; + + //set number of Kingdom cards + for (i = adventurer; i <= treasure_map; i++) //loop all cards + { + for (j = 0; j < 10; j++) //loop chosen cards + { + if (kingdomCards[j] == i) + { + //check if card is a 'Victory' Kingdom card + if (kingdomCards[j] == great_hall || kingdomCards[j] == gardens) + { + if (numPlayers == 2) { + state->supplyCount[i] = 8; + } + else { + state->supplyCount[i] = 12; + } + } + else + { + state->supplyCount[i] = 10; + } + break; + } + else //card is not in the set choosen for the game + { + state->supplyCount[i] = -1; + } + } + + } + + //////////////////////// + //supply intilization complete + + //set player decks + for (i = 0; i < numPlayers; i++) + { + state->deckCount[i] = 0; + for (j = 0; j < 3; j++) + { + state->deck[i][j] = estate; + state->deckCount[i]++; + } + for (j = 3; j < 10; j++) + { + state->deck[i][j] = copper; + state->deckCount[i]++; + } + } + + //shuffle player decks + for (i = 0; i < numPlayers; i++) + { + if ( shuffle(i, state) < 0 ) + { + return -1; + } + } + + //draw player hands + for (i = 0; i < numPlayers; i++) + { + //initialize hand size to zero + state->handCount[i] = 0; + state->discardCount[i] = 0; + //draw 5 cards + // for (j = 0; j < 5; j++) + // { + // drawCard(i, state); + // } + } + + //set embargo tokens to 0 for all supply piles + for (i = 0; i <= treasure_map; i++) + { + state->embargoTokens[i] = 0; + } + + //initialize first player's turn + state->outpostPlayed = 0; + state->phase = 0; + state->numActions = 1; + state->numBuys = 1; + state->playedCardCount = 0; + state->whoseTurn = 0; + state->handCount[state->whoseTurn] = 0; + //int it; move to top + + //Moved draw cards to here, only drawing at the start of a turn + for (it = 0; it < 5; it++) { + drawCard(state->whoseTurn, state); + } + + updateCoins(state->whoseTurn, state, 0); + + return 0; +} + +int shuffle(int player, struct gameState *state) { + + + int newDeck[MAX_DECK]; + int newDeckPos = 0; + int card; + int i; + + if (state->deckCount[player] < 1) + return -1; + qsort ((void*)(state->deck[player]), state->deckCount[player], sizeof(int), compare); + /* SORT CARDS IN DECK TO ENSURE DETERMINISM! */ + + while (state->deckCount[player] > 0) { + card = floor(Random() * state->deckCount[player]); + newDeck[newDeckPos] = state->deck[player][card]; + newDeckPos++; + for (i = card; i < state->deckCount[player]-1; i++) { + state->deck[player][i] = state->deck[player][i+1]; + } + state->deckCount[player]--; + } + for (i = 0; i < newDeckPos; i++) { + state->deck[player][i] = newDeck[i]; + state->deckCount[player]++; + } + + return 0; +} + +int playCard(int handPos, int choice1, int choice2, int choice3, struct gameState *state) +{ + int card; + int coin_bonus = 0; //tracks coins gain from actions + + //check if it is the right phase + if (state->phase != 0) + { + return -1; + } + + //check if player has enough actions + if ( state->numActions < 1 ) + { + return -1; + } + + //get card played + card = handCard(handPos, state); + + //check if selected card is an action + if ( card < adventurer || card > treasure_map ) + { + return -1; + } + + //play card + if ( cardEffect(card, choice1, choice2, choice3, state, handPos, &coin_bonus) < 0 ) + { + return -1; + } + + //reduce number of actions + state->numActions--; + + //update coins (Treasure cards may be added with card draws) + updateCoins(state->whoseTurn, state, coin_bonus); + + return 0; +} + +int buyCard(int supplyPos, struct gameState *state) { + int who; + if (DEBUG) { + printf("Entering buyCard...\n"); + } + + // I don't know what to do about the phase thing. + + who = state->whoseTurn; + + if (state->numBuys < 1) { + if (DEBUG) + printf("You do not have any buys left\n"); + return -1; + } else if (supplyCount(supplyPos, state) <1) { + if (DEBUG) + printf("There are not any of that type of card left\n"); + return -1; + } else if (state->coins < getCost(supplyPos)) { + if (DEBUG) + printf("You do not have enough money to buy that. You have %d coins.\n", state->coins); + return -1; + } else { + state->phase=1; + //state->supplyCount[supplyPos]--; + gainCard(supplyPos, state, 0, who); //card goes in discard, this might be wrong.. (2 means goes into hand, 0 goes into discard) + + state->coins = (state->coins) - (getCost(supplyPos)); + state->numBuys--; + if (DEBUG) + printf("You bought card number %d for %d coins. You now have %d buys and %d coins.\n", supplyPos, getCost(supplyPos), state->numBuys, state->coins); + } + + //state->discard[who][state->discardCount[who]] = supplyPos; + //state->discardCount[who]++; + + return 0; +} + +int numHandCards(struct gameState *state) { + return state->handCount[ whoseTurn(state) ]; +} + +int handCard(int handPos, struct gameState *state) { + int currentPlayer = whoseTurn(state); + return state->hand[currentPlayer][handPos]; +} + +int supplyCount(int card, struct gameState *state) { + return state->supplyCount[card]; +} + +int fullDeckCount(int player, int card, struct gameState *state) { + int i; + int count = 0; + + for (i = 0; i < state->deckCount[player]; i++) + { + if (state->deck[player][i] == card) count++; + } + + for (i = 0; i < state->handCount[player]; i++) + { + if (state->hand[player][i] == card) count++; + } + + for (i = 0; i < state->discardCount[player]; i++) + { + if (state->discard[player][i] == card) count++; + } + + return count; +} + +int whoseTurn(struct gameState *state) { + return state->whoseTurn; +} + +int endTurn(struct gameState *state) { + int k; + int i; + int currentPlayer = whoseTurn(state); + + //Discard hand + for (i = 0; i < state->handCount[currentPlayer]; i++) { + state->discard[currentPlayer][state->discardCount[currentPlayer]++] = state->hand[currentPlayer][i];//Discard + state->hand[currentPlayer][i] = -1;//Set card to -1 + } + state->handCount[currentPlayer] = 0;//Reset hand count + + //Code for determining the player + if (currentPlayer < (state->numPlayers - 1)) { + state->whoseTurn = currentPlayer + 1;//Still safe to increment + } + else { + state->whoseTurn = 0;//Max player has been reached, loop back around to player 1 + } + + state->outpostPlayed = 0; + state->phase = 0; + state->numActions = 1; + state->coins = 0; + state->numBuys = 1; + state->playedCardCount = 0; + state->handCount[state->whoseTurn] = 0; + + //int k; move to top + //Next player draws hand + for (k = 0; k < 5; k++) { + drawCard(state->whoseTurn, state);//Draw a card + } + + //Update money + updateCoins(state->whoseTurn, state, 0); + + return 0; +} + +int isGameOver(struct gameState *state) { + int i; + int j; + + //if stack of Province cards is empty, the game ends + if (state->supplyCount[province] == 0) + { + return 1; + } + + //if three supply pile are at 0, the game ends + j = 0; + for (i = 0; i < 25; i++) + { + if (state->supplyCount[i] == 0) + { + j++; + } + } + if ( j >= 3) + { + return 1; + } + + return 0; +} + +int scoreFor (int player, struct gameState *state) { + + int i; + int score = 0; + //score from hand + for (i = 0; i < state->handCount[player]; i++) + { + if (state->hand[player][i] == curse) { + score = score - 1; + }; + if (state->hand[player][i] == estate) { + score = score + 1; + }; + if (state->hand[player][i] == duchy) { + score = score + 3; + }; + if (state->hand[player][i] == province) { + score = score + 6; + }; + if (state->hand[player][i] == great_hall) { + score = score + 1; + }; + if (state->hand[player][i] == gardens) { + score = score + ( fullDeckCount(player, 0, state) / 10 ); + }; + } + + //score from discard + for (i = 0; i < state->discardCount[player]; i++) + { + if (state->discard[player][i] == curse) { + score = score - 1; + }; + if (state->discard[player][i] == estate) { + score = score + 1; + }; + if (state->discard[player][i] == duchy) { + score = score + 3; + }; + if (state->discard[player][i] == province) { + score = score + 6; + }; + if (state->discard[player][i] == great_hall) { + score = score + 1; + }; + if (state->discard[player][i] == gardens) { + score = score + ( fullDeckCount(player, 0, state) / 10 ); + }; + } + + //score from deck + for (i = 0; i < state->discardCount[player]; i++) + { + if (state->deck[player][i] == curse) { + score = score - 1; + }; + if (state->deck[player][i] == estate) { + score = score + 1; + }; + if (state->deck[player][i] == duchy) { + score = score + 3; + }; + if (state->deck[player][i] == province) { + score = score + 6; + }; + if (state->deck[player][i] == great_hall) { + score = score + 1; + }; + if (state->deck[player][i] == gardens) { + score = score + ( fullDeckCount(player, 0, state) / 10 ); + }; + } + + return score; +} + +int getWinners(int players[MAX_PLAYERS], struct gameState *state) { + int i; + int j; + int highScore; + int currentPlayer; + + //get score for each player + for (i = 0; i < MAX_PLAYERS; i++) + { + //set unused player scores to -9999 + if (i >= state->numPlayers) + { + players[i] = -9999; + } + else + { + players[i] = scoreFor (i, state); + } + } + + //find highest score + j = 0; + for (i = 0; i < MAX_PLAYERS; i++) + { + if (players[i] > players[j]) + { + j = i; + } + } + highScore = players[j]; + + //add 1 to players who had less turns + currentPlayer = whoseTurn(state); + for (i = 0; i < MAX_PLAYERS; i++) + { + if ( players[i] == highScore && i > currentPlayer ) + { + players[i]++; + } + } + + //find new highest score + j = 0; + for (i = 0; i < MAX_PLAYERS; i++) + { + if ( players[i] > players[j] ) + { + j = i; + } + } + highScore = players[j]; + + //set winners in array to 1 and rest to 0 + for (i = 0; i < MAX_PLAYERS; i++) + { + if ( players[i] == highScore ) + { + players[i] = 1; + } + else + { + players[i] = 0; + } + } + + return 0; +} + +int drawCard(int player, struct gameState *state) +{ int count; + int deckCounter; + if (state->deckCount[player] <= 0) { //Deck is empty + + //Step 1 Shuffle the discard pile back into a deck + int i; + //Move discard to deck + for (i = 0; i < state->discardCount[player]; i++) { + state->deck[player][i] = state->discard[player][i]; + state->discard[player][i] = -1; + } + + state->deckCount[player] = state->discardCount[player]; + state->discardCount[player] = 0;//Reset discard + + //Shufffle the deck + shuffle(player, state);//Shuffle the deck up and make it so that we can draw + + if (DEBUG) { //Debug statements + printf("Deck count now: %d\n", state->deckCount[player]); + } + + state->discardCount[player] = 0; + + //Step 2 Draw Card + count = state->handCount[player];//Get current player's hand count + + if (DEBUG) { //Debug statements + printf("Current hand count: %d\n", count); + } + + deckCounter = state->deckCount[player];//Create a holder for the deck count + + if (deckCounter == 0) + return -1; + + state->hand[player][count] = state->deck[player][deckCounter - 1];//Add card to hand + state->deckCount[player]--; + state->handCount[player]++;//Increment hand count + } + + else { + int count = state->handCount[player];//Get current hand count for player + int deckCounter; + if (DEBUG) { //Debug statements + printf("Current hand count: %d\n", count); + } + + deckCounter = state->deckCount[player];//Create holder for the deck count + state->hand[player][count] = state->deck[player][deckCounter - 1];//Add card to the hand + state->deckCount[player]--; + state->handCount[player]++;//Increment hand count + } + + return 0; +} + +int getCost(int cardNumber) +{ + switch( cardNumber ) + { + case curse: + return 0; + case estate: + return 2; + case duchy: + return 5; + case province: + return 8; + case copper: + return 0; + case silver: + return 3; + case gold: + return 6; + case adventurer: + return 6; + case council_room: + return 5; + case feast: + return 4; + case gardens: + return 4; + case mine: + return 5; + case remodel: + return 4; + case smithy: + return 4; + case village: + return 3; + case baron: + return 4; + case great_hall: + return 3; + case minion: + return 5; + case steward: + return 3; + case tribute: + return 5; + case ambassador: + return 3; + case cutpurse: + return 4; + case embargo: + return 2; + case outpost: + return 5; + case salvager: + return 4; + case sea_hag: + return 4; + case treasure_map: + return 4; + } + + return -1; +} + +int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState *state, int handPos, int *bonus) +{ + int i; + int j; + int k; + int x; + int index; + int currentPlayer = whoseTurn(state); + int nextPlayer = currentPlayer + 1; + + int tributeRevealedCards[2] = {-1, -1}; + int temphand[MAX_HAND];// moved above the if statement + int drawntreasure=0; + int cardDrawn; + int z = 0;// this is the counter for the temp hand + if (nextPlayer > (state->numPlayers - 1)) { + nextPlayer = 0; + } + + + //uses switch to select card and perform actions + switch( card ) + { + case adventurer: + while(drawntreasure<2) { + if (state->deckCount[currentPlayer] <1) { //if the deck is empty we need to shuffle discard and add to deck + shuffle(currentPlayer, state); + } + drawCard(currentPlayer, state); + cardDrawn = state->hand[currentPlayer][state->handCount[currentPlayer]-1];//top card of hand is most recently drawn card. + if (cardDrawn == copper || cardDrawn == silver || cardDrawn == gold) + drawntreasure++; + else { + temphand[z]=cardDrawn; + state->handCount[currentPlayer]--; //this should just remove the top card (the most recently drawn one). + z++; + } + } + while(z-1>=0) { + state->discard[currentPlayer][state->discardCount[currentPlayer]++]=temphand[z-1]; // discard all cards in play that have been drawn + z=z-1; + } + return 0; + + case council_room: + //+4 Cards + for (i = 0; i < 4; i++) + { + drawCard(currentPlayer, state); + } + + //+1 Buy + state->numBuys++; + + //Each other player draws a card + for (i = 0; i < state->numPlayers; i++) + { + if ( i != currentPlayer ) + { + drawCard(i, state); + } + } + + //put played card in played card pile + discardCard(handPos, currentPlayer, state, 0); + + return 0; + + case feast: + //gain card with cost up to 5 + //Backup hand + for (i = 0; i <= state->handCount[currentPlayer]; i++) { + temphand[i] = state->hand[currentPlayer][i];//Backup card + state->hand[currentPlayer][i] = -1;//Set to nothing + } + //Backup hand + + //Update Coins for Buy + updateCoins(currentPlayer, state, 5); + x = 1;//Condition to loop on + while( x == 1) {//Buy one card + if (supplyCount(choice1, state) <= 0) { + if (DEBUG) + printf("None of that card left, sorry!\n"); + + if (DEBUG) { + printf("Cards Left: %d\n", supplyCount(choice1, state)); + } + } + else if (state->coins < getCost(choice1)) { + printf("That card is too expensive!\n"); + + if (DEBUG) { + printf("Coins: %d < %d\n", state->coins, getCost(choice1)); + } + } + else { + + if (DEBUG) { + printf("Deck Count: %d\n", state->handCount[currentPlayer] + state->deckCount[currentPlayer] + state->discardCount[currentPlayer]); + } + + gainCard(choice1, state, 0, currentPlayer);//Gain the card + x = 0;//No more buying cards + + if (DEBUG) { + printf("Deck Count: %d\n", state->handCount[currentPlayer] + state->deckCount[currentPlayer] + state->discardCount[currentPlayer]); + } + + } + } + + //Reset Hand + for (i = 0; i <= state->handCount[currentPlayer]; i++) { + state->hand[currentPlayer][i] = temphand[i]; + temphand[i] = -1; + } + //Reset Hand + + return 0; + + case gardens: + return -1; + + case mine: + j = state->hand[currentPlayer][choice1]; //store card we will trash + + if (state->hand[currentPlayer][choice1] < copper || state->hand[currentPlayer][choice1] > gold) + { + return -1; + } + + if (choice2 > treasure_map || choice2 < curse) + { + return -1; + } + + if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) + { + return -1; + } + + gainCard(choice2, state, 2, currentPlayer); + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + //discard trashed card + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == j) + { + discardCard(i, currentPlayer, state, 0); + break; + } + } + + return 0; + + case remodel: + j = state->hand[currentPlayer][choice1]; //store card we will trash + + if ( (getCost(state->hand[currentPlayer][choice1]) + 2) > getCost(choice2) ) + { + return -1; + } + + gainCard(choice2, state, 0, currentPlayer); + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + //discard trashed card + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == j) + { + discardCard(i, currentPlayer, state, 0); + break; + } + } + + + return 0; + + case smithy: + //+3 Cards + for (i = 0; i < 3; i++) + { + drawCard(currentPlayer, state); + } + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + return 0; + + case village: + //+1 Card + drawCard(currentPlayer, state); + + //+2 Actions + state->numActions = state->numActions + 2; + + //discard played card from hand + discardCard(handPos, currentPlayer, state, 0); + return 0; + + case baron: + state->numBuys++;//Increase buys by 1! + if (choice1 > 0) { //Boolean true or going to discard an estate + int p = 0;//Iterator for hand! + int card_not_discarded = 1;//Flag for discard set! + while(card_not_discarded) { + if (state->hand[currentPlayer][p] == estate) { //Found an estate card! + state->coins += 4;//Add 4 coins to the amount of coins + state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; + state->discardCount[currentPlayer]++; + for (; p < state->handCount[currentPlayer]; p++) { + state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; + } + state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; + state->handCount[currentPlayer]--; + card_not_discarded = 0;//Exit the loop + } + else if (p > state->handCount[currentPlayer]) { + if(DEBUG) { + printf("No estate cards in your hand, invalid choice\n"); + printf("Must gain an estate if there are any\n"); + } + if (supplyCount(estate, state) > 0) { + gainCard(estate, state, 0, currentPlayer); + + state->supplyCount[estate]--;//Decrement estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + card_not_discarded = 0;//Exit the loop + } + + else { + p++;//Next card + } + } + } + + else { + if (supplyCount(estate, state) > 0) { + gainCard(estate, state, 0, currentPlayer);//Gain an estate + + state->supplyCount[estate]--;//Decrement Estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + } + + + return 0; + + case great_hall: + //+1 Card + drawCard(currentPlayer, state); + + //+1 Actions + state->numActions++; + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + return 0; + + case minion: + //+1 action + state->numActions++; + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + if (choice1) + { + state->coins = state->coins + 2; + } + else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 + { + //discard hand + while(numHandCards(state) > 0) + { + discardCard(handPos, currentPlayer, state, 0); + } + + //draw 4 + for (i = 0; i < 4; i++) + { + drawCard(currentPlayer, state); + } + + //other players discard hand and redraw if hand size > 4 + for (i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + if ( state->handCount[i] > 4 ) + { + //discard hand + while( state->handCount[i] > 0 ) + { + discardCard(handPos, i, state, 0); + } + + //draw 4 + for (j = 0; j < 4; j++) + { + drawCard(i, state); + } + } + } + } + + } + return 0; + + case steward: + if (choice1 == 1) + { + //+2 cards + drawCard(currentPlayer, state); + drawCard(currentPlayer, state); + } + else if (choice1 == 2) + { + //+2 coins + state->coins = state->coins + 2; + } + else + { + //trash 2 cards in hand + discardCard(choice2, currentPlayer, state, 1); + discardCard(choice3, currentPlayer, state, 1); + } + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + return 0; + + case tribute: + if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { + if (state->deckCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deckCount[nextPlayer]--; + } + else if (state->discardCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; + state->discardCount[nextPlayer]--; + } + else { + //No Card to Reveal + if (DEBUG) { + printf("No cards to reveal\n"); + } + } + } + + else { + if (state->deckCount[nextPlayer] == 0) { + for (i = 0; i < state->discardCount[nextPlayer]; i++) { + state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck + state->deckCount[nextPlayer]++; + state->discard[nextPlayer][i] = -1; + state->discardCount[nextPlayer]--; + } + + shuffle(nextPlayer,state);//Shuffle the deck + } + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + } + + if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one + state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; + state->playedCardCount++; + tributeRevealedCards[1] = -1; + } + + for (i = 0; i <= 2; i ++) { + if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards + state->coins += 2; + } + + else if (tributeRevealedCards[i] == estate || tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found + drawCard(currentPlayer, state); + drawCard(currentPlayer, state); + } + else { //Action Card + state->numActions = state->numActions + 2; + } + } + + return 0; + + case ambassador: + j = 0; //used to check if player has enough cards to discard + + if (choice2 > 2 || choice2 < 0) + { + return -1; + } + + if (choice1 == handPos) + { + return -1; + } + + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) + { + j++; + } + } + if (j < choice2) + { + return -1; + } + + if (DEBUG) + printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); + + //increase supply count for choosen card by amount being discarded + state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; + + //each other player gains a copy of revealed card + for (i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + gainCard(state->hand[currentPlayer][choice1], state, 0, i); + } + } + + //discard played card from hand + discardCard(handPos, currentPlayer, state, 0); + + //trash copies of cards returned to supply + for (j = 0; j < choice2; j++) + { + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) + { + discardCard(i, currentPlayer, state, 1); + break; + } + } + } + + return 0; + + case cutpurse: + + updateCoins(currentPlayer, state, 2); + for (i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + for (j = 0; j < state->handCount[i]; j++) + { + if (state->hand[i][j] == copper) + { + discardCard(j, i, state, 0); + break; + } + if (j == state->handCount[i]) + { + for (k = 0; k < state->handCount[i]; k++) + { + if (DEBUG) + printf("Player %d reveals card number %d\n", i, state->hand[i][k]); + } + break; + } + } + + } + + } + + //discard played card from hand + discardCard(handPos, currentPlayer, state, 0); + + return 0; + + + case embargo: + //+2 Coins + state->coins = state->coins + 2; + + //see if selected pile is in play + if ( state->supplyCount[choice1] == -1 ) + { + return -1; + } + + //add embargo token to selected supply pile + state->embargoTokens[choice1]++; + + //trash card + discardCard(handPos, currentPlayer, state, 1); + return 0; + + case outpost: + //set outpost flag + state->outpostPlayed++; + + //discard card + discardCard(handPos, currentPlayer, state, 0); + return 0; + + case salvager: + //+1 buy + state->numBuys++; + + if (choice1) + { + //gain coins equal to trashed card + state->coins = state->coins + getCost( handCard(choice1, state) ); + //trash card + discardCard(choice1, currentPlayer, state, 1); + } + + //discard card + discardCard(handPos, currentPlayer, state, 0); + return 0; + + case sea_hag: + for (i = 0; i < state->numPlayers; i++) { + if (i != currentPlayer) { + state->discard[i][state->discardCount[i]] = state->deck[i][state->deckCount[i]--]; + state->deckCount[i]--; + state->discardCount[i]++; + state->deck[i][state->deckCount[i]--] = curse;//Top card now a curse + } + } + return 0; + + case treasure_map: + //search hand for another treasure_map + index = -1; + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == treasure_map && i != handPos) + { + index = i; + break; + } + } + if (index > -1) + { + //trash both treasure cards + discardCard(handPos, currentPlayer, state, 1); + discardCard(index, currentPlayer, state, 1); + + //gain 4 Gold cards + for (i = 0; i < 4; i++) + { + gainCard(gold, state, 1, currentPlayer); + } + + //return success + return 1; + } + + //no second treasure_map found in hand + return -1; + } + + return -1; +} + +int discardCard(int handPos, int currentPlayer, struct gameState *state, int trashFlag) +{ + + //if card is not trashed, added to Played pile + if (trashFlag < 1) + { + //add card to played pile + state->playedCards[state->playedCardCount] = state->hand[currentPlayer][handPos]; + state->playedCardCount++; + } + + //set played card to -1 + state->hand[currentPlayer][handPos] = -1; + + //remove card from player's hand + if ( handPos == (state->handCount[currentPlayer] - 1) ) //last card in hand array is played + { + //reduce number of cards in hand + state->handCount[currentPlayer]--; + } + else if ( state->handCount[currentPlayer] == 1 ) //only one card in hand + { + //reduce number of cards in hand + state->handCount[currentPlayer]--; + } + else + { + //replace discarded card with last card in hand + state->hand[currentPlayer][handPos] = state->hand[currentPlayer][ (state->handCount[currentPlayer] - 1)]; + //set last card to -1 + state->hand[currentPlayer][state->handCount[currentPlayer] - 1] = -1; + //reduce number of cards in hand + state->handCount[currentPlayer]--; + } + + return 0; +} + +int gainCard(int supplyPos, struct gameState *state, int toFlag, int player) +{ + //Note: supplyPos is enum of choosen card + + //check if supply pile is empty (0) or card is not used in game (-1) + if ( supplyCount(supplyPos, state) < 1 ) + { + return -1; + } + + //added card for [whoseTurn] current player: + // toFlag = 0 : add to discard + // toFlag = 1 : add to deck + // toFlag = 2 : add to hand + + if (toFlag == 1) + { + state->deck[ player ][ state->deckCount[player] ] = supplyPos; + state->deckCount[player]++; + } + else if (toFlag == 2) + { + state->hand[ player ][ state->handCount[player] ] = supplyPos; + state->handCount[player]++; + } + else + { + state->discard[player][ state->discardCount[player] ] = supplyPos; + state->discardCount[player]++; + } + + //decrease number in supply pile + state->supplyCount[supplyPos]--; + + return 0; +} + +int updateCoins(int player, struct gameState *state, int bonus) +{ + int i; + + //reset coin count + state->coins = 0; + + //add coins for each Treasure card in player's hand + for (i = 0; i < state->handCount[player]; i++) + { + if (state->hand[player][i] == copper) + { + state->coins += 1; + } + else if (state->hand[player][i] == silver) + { + state->coins += 2; + } + else if (state->hand[player][i] == gold) + { + state->coins += 3; + } + } + + //add bonus + state->coins += bonus; + + return 0; +} + + +//end of dominion.c + diff --git a/projects/kyawmyis/dominion/dominion.h b/projects/kyawmyis/dominion/dominion.h new file mode 100644 index 000000000..f9d9039b8 --- /dev/null +++ b/projects/kyawmyis/dominion/dominion.h @@ -0,0 +1,131 @@ +#ifndef _DOMINION_H +#define _DOMINION_H + +// Code from various sources, baseline from Kristen Bartosz + +#define MAX_HAND 500 +#define MAX_DECK 500 + +#define MAX_PLAYERS 4 + +#define DEBUG 0 + +/* http://dominion.diehrstraits.com has card texts */ +/* http://dominion.isotropic.org has other stuff */ + +/* hand# means index of a card in current active player's hand */ + +enum CARD +{ curse = 0, + estate, + duchy, + province, + + copper, + silver, + gold, + + adventurer, + /* If no/only 1 treasure found, stop when full deck seen */ + council_room, + feast, /* choice1 is supply # of card gained) */ + gardens, + mine, /* choice1 is hand# of money to trash, choice2 is supply# of + money to put in hand */ + remodel, /* choice1 is hand# of card to remodel, choice2 is supply# */ + smithy, + village, + + baron, /* choice1: boolean for discard of estate */ + /* Discard is always of first (lowest index) estate */ + great_hall, + minion, /* choice1: 1 = +2 coin, 2 = redraw */ + steward, /* choice1: 1 = +2 card, 2 = +2 coin, 3 = trash 2 (choice2,3) */ + tribute, + + ambassador, /* choice1 = hand#, choice2 = number to return to supply */ + cutpurse, + embargo, /* choice1 = supply# */ + outpost, + salvager, /* choice1 = hand# to trash */ + sea_hag, + treasure_map +}; + +struct gameState { + int numPlayers; //number of players + int supplyCount[treasure_map+1]; //this is the amount of a specific type of card given a specific number. + int embargoTokens[treasure_map+1]; + int outpostPlayed; + int outpostTurn; + int whoseTurn; + int phase; + int numActions; /* Starts at 1 each turn */ + int coins; /* Use as you see fit! */ + int numBuys; /* Starts at 1 each turn */ + int hand[MAX_PLAYERS][MAX_HAND]; + int handCount[MAX_PLAYERS]; + int deck[MAX_PLAYERS][MAX_DECK]; + int deckCount[MAX_PLAYERS]; + int discard[MAX_PLAYERS][MAX_DECK]; + int discardCount[MAX_PLAYERS]; + int playedCards[MAX_DECK]; + int playedCardCount; +}; + +/* All functions return -1 on failure, and DO NOT CHANGE GAME STATE; + unless specified for other return, return 0 on success */ + +struct gameState* newGame(); + +int* kingdomCards(int k1, int k2, int k3, int k4, int k5, int k6, int k7, + int k8, int k9, int k10); + +int initializeGame(int numPlayers, int kingdomCards[10], int randomSeed, + struct gameState *state); +/* Responsible for initializing all supplies, and shuffling deck and + drawing starting hands for all players. Check that 10 cards selected + are in fact (different) kingdom cards, and that numPlayers is valid. + +Cards not in game should initialize supply position to -1 */ + +int shuffle(int player, struct gameState *state); +/* Assumes all cards are now in deck array (or hand/played): discard is + empty */ + +int playCard(int handPos, int choice1, int choice2, int choice3, + struct gameState *state); +/* Play card with index handPos from current player's hand */ + +int buyCard(int supplyPos, struct gameState *state); +/* Buy card with supply index supplyPos */ + +int numHandCards(struct gameState *state); +/* How many cards current player has in hand */ + +int handCard(int handNum, struct gameState *state); +/* enum value of indexed card in player's hand */ + +int supplyCount(int card, struct gameState *state); +/* How many of given card are left in supply */ + +int fullDeckCount(int player, int card, struct gameState *state); +/* Here deck = hand + discard + deck */ + +int whoseTurn(struct gameState *state); + +int endTurn(struct gameState *state); +/* Must do phase C and advance to next player; do not advance whose turn + if game is over */ + +int isGameOver(struct gameState *state); + +int scoreFor(int player, struct gameState *state); +/* Negative here does not mean invalid; scores may be negative, + -9999 means invalid input */ + +int getWinners(int players[MAX_PLAYERS], struct gameState *state); +/* Set array position of each player who won (remember ties!) to + 1, others to 0 */ + +#endif diff --git a/projects/kyawmyis/dominion/dominion_helpers.h b/projects/kyawmyis/dominion/dominion_helpers.h new file mode 100644 index 000000000..0887fda15 --- /dev/null +++ b/projects/kyawmyis/dominion/dominion_helpers.h @@ -0,0 +1,15 @@ +#ifndef _DOMINION_HELPERS_H +#define _DOMINION_HELPERS_H + +#include "dominion.h" + +int drawCard(int player, struct gameState *state); +int updateCoins(int player, struct gameState *state, int bonus); +int discardCard(int handPos, int currentPlayer, struct gameState *state, + int trashFlag); +int gainCard(int supplyPos, struct gameState *state, int toFlag, int player); +int getCost(int cardNumber); +int cardEffect(int card, int choice1, int choice2, int choice3, + struct gameState *state, int handPos, int *bonus); + +#endif diff --git a/projects/kyawmyis/dominion/interface.c b/projects/kyawmyis/dominion/interface.c new file mode 100644 index 000000000..58cc5ba58 --- /dev/null +++ b/projects/kyawmyis/dominion/interface.c @@ -0,0 +1,425 @@ +/* Interactive Dominion Interface + +Sam Heinith CS362 +1/26/2010 +*/ + +#include +#include +#include +#include +#include "rngs.h" +#include "interface.h" +#include "dominion.h" + + +void cardNumToName(int card, char *name) { + switch(card) { + case curse: + strcpy(name,"Curse"); + break; + case estate: + strcpy(name,"Estate"); + break; + case duchy: + strcpy(name,"Duchy"); + break; + case province: + strcpy(name,"Province"); + break; + case copper: + strcpy(name,"Copper"); + break; + case silver: + strcpy(name,"Silver"); + break; + case gold: + strcpy(name,"Gold"); + break; + case adventurer: + strcpy(name,"Adventurer"); + break; + case council_room: + strcpy(name,"Council Room"); + break; + case feast: + strcpy(name,"Feast"); + break; + case gardens: + strcpy(name,"Gardens"); + break; + case mine: + strcpy(name,"Mine"); + break; + case remodel: + strcpy(name,"Remodel"); + break; + case smithy: + strcpy(name,"Smithy"); + break; + case village: + strcpy(name,"Village"); + break; + case baron: + strcpy(name,"Baron"); + break; + case great_hall: + strcpy(name,"Great Hall"); + break; + case minion: + strcpy(name,"Minion"); + break; + case steward: + strcpy(name,"Steward"); + break; + case tribute: + strcpy(name,"Tribute"); + break; + case ambassador: + strcpy(name,"Ambassador"); + break; + case cutpurse: + strcpy(name,"Cutpurse"); + break; + case embargo: + strcpy(name,"Embargo"); + break; + case outpost: + strcpy(name,"Outpost"); + break; + case salvager: + strcpy(name,"Salvager"); + break; + case sea_hag: + strcpy(name,"Sea Hag"); + break; + case treasure_map: + strcpy(name,"Treasure Map"); + break; + + default: + strcpy(name,"?"); + } + +} + + + +int getCardCost(int card) { + int cost; + switch(card) { + case curse: + cost = CURSE_COST; + break; + case estate: + cost = ESTATE_COST; + break; + case duchy: + cost = DUCHY_COST; + break; + case province: + cost = PROVINCE_COST; + break; + case copper: + cost = COPPER_COST; + break; + case silver: + cost = SILVER_COST; + break; + case gold: + cost = GOLD_COST; + break; + case adventurer: + cost = ADVENTURER_COST; + break; + case council_room: + cost = COUNCIL_ROOM_COST; + break; + case feast: + cost = FEAST_COST; + break; + case gardens: + cost = GARDEN_COST; + break; + case mine: + cost = MINE_COST; + break; + case remodel: + cost = REMODEL_COST; + break; + case smithy: + cost = SMITHY_COST; + break; + case village: + cost = VILLAGE_COST; + break; + case baron: + cost = BARON_COST; + break; + case great_hall: + cost = GREAT_HALL_COST; + break; + case minion: + cost = MINION_COST; + break; + case steward: + cost = STEWARD_COST; + break; + case tribute: + cost = TRIBUTE_COST; + break; + case ambassador: + cost = AMBASSADOR_COST; + break; + case cutpurse: + cost = CUTPURSE_COST; + break; + case embargo: + cost = EMBARGO_COST; + break; + case outpost: + cost = OUTPOST_COST; + break; + case salvager: + cost = SALVAGER_COST; + break; + case sea_hag: + cost = SEA_HAG_COST; + break; + case treasure_map: + cost = TREASURE_MAP_COST; + break; + default: + cost = ONETHOUSAND; + } + return cost; +} + + + + + + +void printHand(int player, struct gameState *game) { + int handCount = game->handCount[player]; + int handIndex; + printf("Player %d's hand:\n", player); + if(handCount > 0) printf("# Card\n"); + for(handIndex = 0; handIndex < handCount; handIndex++) { + int card = game->hand[player][handIndex]; + char name[MAX_STRING_LENGTH]; + cardNumToName(card, name); + printf("%-2d %-13s\n", handIndex, name); + } + printf("\n"); +} + + + +void printDeck(int player, struct gameState *game) { + int deckCount = game->deckCount[player]; + int deckIndex; + printf("Player %d's deck: \n", player); + if(deckCount > 0) printf("# Card\n"); + for(deckIndex = 0; deckIndex < deckCount; deckIndex++) { + int card = game->deck[player][deckIndex]; + char name[MAX_STRING_LENGTH]; + cardNumToName(card, name); + printf("%-2d %-13s\n", deckIndex, name); + } + printf("\n"); +} + +void printPlayed(int player, struct gameState *game) { + int playedCount = game->playedCardCount; + int playedIndex; + printf("Player %d's played cards: \n", player); + if(playedCount > 0) printf("# Card\n"); + for(playedIndex = 0; playedIndex < playedCount; playedIndex++) { + int card = game->playedCards[playedIndex]; + char name[MAX_STRING_LENGTH]; + cardNumToName(card, name); + printf("%-2d %-13s \n", playedIndex, name); + } + printf("\n"); +} + + + +void printDiscard(int player, struct gameState *game) { + int discardCount = game->discardCount[player]; + int discardIndex; + printf("Player %d's discard: \n", player); + if(discardCount > 0) printf("# Card\n"); + for(discardIndex = 0; discardIndex < discardCount; discardIndex++) { + int card = game->discard[player][discardIndex]; + char name[MAX_STRING_LENGTH]; + cardNumToName(card, name); + printf("%-2d %-13s \n", discardIndex, name); + } + printf("\n"); +} + + + + +void printSupply(struct gameState *game) { + int cardNum, cardCost, cardCount; + char name[MAX_STRING_LENGTH]; + printf("# Card Cost Copies\n"); + for(cardNum = 0; cardNum < NUM_TOTAL_K_CARDS; cardNum++) { + cardCount = game->supplyCount[cardNum]; + if(cardCount == -1) continue; + cardNumToName(cardNum, name); + cardCost = getCardCost(cardNum); + printf("%-2d %-13s %-5d %-5d", cardNum, name, cardCost, cardCount); + printf("\n"); + } + printf("\n"); +} + + +void printState(struct gameState *game) { + int numActions = game->numActions; + int numCoins = game->coins; + int numBuys = game->numBuys; + int currentPlayer = game->whoseTurn; + int phase = game->phase; + char phaseName[MAX_STRING_LENGTH]; + phaseNumToName(phase,phaseName); + printf("Player %d:\n%s phase\n%d actions\n%d coins\n%d buys\n\n", currentPlayer, phaseName, numActions, numCoins, numBuys); +} + +void printScores(struct gameState *game) { + int playerNum, score[MAX_PLAYERS]; + int numPlayers = game->numPlayers; + for(playerNum = 0; playerNum < numPlayers; playerNum++) { + score[playerNum] = scoreFor(playerNum,game); + printf("Player %d has a score of %d\n", playerNum, score[playerNum]); + } +} + + +void printHelp(void) { + printf("Commands are: \n\ + add [Supply Card Number] - add any card to your hand (teh hacks)\n\ + buy [Supply Card Number] - buy a card at supply position\n\ + end - end your turn\n\ + init [Number of Players] [Number of Bots] - initialize the game\n\ + num - print number of cards in your hand\n\ + play [Hand Index] [Choice] [Choice] [Choice] - play a card from your hand\n\ + resign - end the game showing the current scores\n\ + show - show your current hand\n\ + stat - show your turn's status\n\ + supp - show the supply\n\ + whos - whos turn\n\ + exit - exit the interface"); + printf("\n\n"); + +} + + +void phaseNumToName(int phase, char *name) { + switch(phase) { + case ACTION_PHASE: + strcpy(name,"Action"); + break; + case BUY_PHASE: + strcpy(name,"Buy"); + break; + case CLEANUP_PHASE: + strcpy(name,"Cleanup"); + break; + } +} + + +int addCardToHand(int player, int card, struct gameState *game) { + if(card >= adventurer && card < NUM_TOTAL_K_CARDS) { + int handTop = game->handCount[player]; + game->hand[player][handTop] = card; + game->handCount[player]++; + return SUCCESS; + } else { + return FAILURE; + } + +} + +void selectKingdomCards(int randomSeed, int kingCards[NUM_K_CARDS]) { + int i, used, card, numSelected = 0; + SelectStream(1); + PutSeed((long)randomSeed); + + + while(numSelected < NUM_K_CARDS) { + used = FALSE; + card = floor(Random() * NUM_TOTAL_K_CARDS); + if(card < adventurer) continue; + for(i = 0; i < numSelected; i++) { + if(kingCards[i] == card) { + used = TRUE; + break; + } + } + if(used == TRUE) continue; + kingCards[numSelected] = card; + numSelected++; + } +} + + +int countHandCoins(int player, struct gameState *game) { + int card, index, coinage = 0; + + for(index = 0; index < game->handCount[player]; index++) { + card = game->hand[player][index]; + switch(card) { + case copper: + coinage += COPPER_VALUE; + break; + case silver: + coinage += SILVER_VALUE; + break; + case gold: + coinage += GOLD_VALUE; + break; + } + } + return coinage; +} + + +void executeBotTurn(int player, int *turnNum, struct gameState *game) { + int coins = countHandCoins(player, game); + + printf("*****************Executing Bot Player %d Turn Number %d*****************\n", player, *turnNum); + printSupply(game); + //sleep(1); //Thinking... + + if(coins >= PROVINCE_COST && supplyCount(province,game) > 0) { + buyCard(province,game); + printf("Player %d buys card Province\n\n", player); + } + else if(supplyCount(province,game) == 0 && coins >= DUCHY_COST ) { + buyCard(duchy,game); + printf("Player %d buys card Duchy\n\n", player); + } + else if(coins >= GOLD_COST && supplyCount(gold,game) > 0) { + buyCard(gold,game); + printf("Player %d buys card Gold\n\n", player); + } + else if(coins >= SILVER_COST && supplyCount(silver,game) > 0) { + buyCard(silver,game); + printf("Player %d buys card Silver\n\n", player); + + } + + + if(player == (game->numPlayers -1)) (*turnNum)++; + endTurn(game); + if(! isGameOver(game)) { + int currentPlayer = whoseTurn(game); + printf("Player %d's turn number %d\n\n", currentPlayer, (*turnNum)); + } +} diff --git a/projects/kyawmyis/dominion/interface.h b/projects/kyawmyis/dominion/interface.h new file mode 100644 index 000000000..6f7bacac2 --- /dev/null +++ b/projects/kyawmyis/dominion/interface.h @@ -0,0 +1,128 @@ +/* Interactive Dominion Interface + + Sam Heinith CS362 + 1/26/2010 +*/ + + + +#ifndef _INTERFACE_H +#define _INTERFACE_H + + + +#include "dominion.h" + +//Last card enum (Treasure map) card number plus one for the 0th card. +#define NUM_TOTAL_K_CARDS (treasure_map + 1) +#define NUM_K_CARDS 10 +#define NUM_V_CARDS_2 8 +#define NUM_V_CARDS_3or4 12 +#define NUM_C_CARDS_2 10 +#define NUM_C_CARDS_3 20 +#define NUM_C_CARDS_4 30 +#define NUM_COPPER 60 +#define NUM_SILVER 40 +#define NUM_GOLD 30 +#define UNUSED -1 +#define START_COPPER 7 +#define START_ESTATE 3 +#define HANDSIZE 5 + +#define COMPARE(string1, string2) strncmp(string1, string2, 4) +#define MAX_STRING_LENGTH 32 +#define TRUE 1 +#define FALSE 0 + +#define SUCCESS 0 +#define FAILURE -1 + +#define MATCH 0 +#define WINNER 1 +#define NOT_WINNER 0 + +//The Game Phases +#define ACTION_PHASE 0 +#define BUY_PHASE 1 +#define CLEANUP_PHASE 2 + +#define COPPER_VALUE 1 +#define SILVER_VALUE 2 +#define GOLD_VALUE 3 + +//From Dominion List Spoiler +#define COPPER_COST 0 +#define SILVER_COST 3 +#define GOLD_COST 6 +#define ESTATE_COST 2 +#define DUCHY_COST 5 +#define PROVINCE_COST 8 +#define CURSE_COST 0 +#define ADVENTURER_COST 6 +#define COUNCIL_ROOM_COST 5 +#define FEAST_COST 4 +#define GARDEN_COST 4 +#define MINE_COST 5 +#define MONEYLENDER_COST 4 +#define REMODEL_COST 4 +#define SMITHY_COST 4 +#define VILLAGE_COST 3 +#define WOODCUTTER_COST 3 +#define BARON_COST 4 +#define GREAT_HALL_COST 3 +#define MINION_COST 5 +#define SHANTY_TOWN_COST 3 +#define STEWARD_COST 3 +#define TRIBUTE_COST 5 +#define WISHING_WELL_COST 3 +#define AMBASSADOR_COST 3 +#define CUTPURSE_COST 4 +#define EMBARGO_COST 2 +#define OUTPOST_COST 5 +#define SALVAGER_COST 4 +#define SEA_HAG_COST 4 +#define TREASURE_MAP_COST 4 +#define ONETHOUSAND 1000 + + +int addCardToHand(int player, int card, struct gameState *game); + +int countHandCoins(int player, struct gameState *game); + + +void executeBotTurn(int player, int *turnNum, struct gameState *game); + +void phaseNumToName(int phase, char *name); +void cardNumToName(int card, char *name); + +int getCardCost(int card); + +void printHelp(void); + +void printHand(int player, struct gameState *game); + +void printDeck(int player, struct gameState *game); + +void printDiscard(int player, struct gameState *game); + +void printPlayed(int player, struct gameState *game); + +void printState(struct gameState *game); + +void printSupply(struct gameState *game); + +void printGameState(struct gameState *game); + +void printScores(struct gameState *game); + +void selectKingdomCards(int randomSeed, int kingdomCards[NUM_K_CARDS]); + + + +#endif + + + + + + diff --git a/projects/kyawmyis/dominion/playdom.c b/projects/kyawmyis/dominion/playdom.c new file mode 100644 index 000000000..336d9a661 --- /dev/null +++ b/projects/kyawmyis/dominion/playdom.c @@ -0,0 +1,135 @@ +#include "dominion.h" +#include +#include "rngs.h" +#include + +int main (int argc, char** argv) { + struct gameState G; + int k[10] = {adventurer, gardens, embargo, village, minion, mine, cutpurse, + sea_hag, tribute, smithy + }; + + printf ("Starting game.\n"); + + initializeGame(2, k, atoi(argv[1]), &G); + + int money = 0; + int smithyPos = -1; + int adventurerPos = -1; + int i=0; + + int numSmithies = 0; + int numAdventurers = 0; + + while (!isGameOver(&G)) { + money = 0; + smithyPos = -1; + adventurerPos = -1; + for (i = 0; i < numHandCards(&G); i++) { + if (handCard(i, &G) == copper) + money++; + else if (handCard(i, &G) == silver) + money += 2; + else if (handCard(i, &G) == gold) + money += 3; + else if (handCard(i, &G) == smithy) + smithyPos = i; + else if (handCard(i, &G) == adventurer) + adventurerPos = i; + } + + if (whoseTurn(&G) == 0) { + if (smithyPos != -1) { + printf("0: smithy played from position %d\n", smithyPos); + playCard(smithyPos, -1, -1, -1, &G); + printf("smithy played.\n"); + money = 0; + i=0; + while(i= 8) { + printf("0: bought province\n"); + buyCard(province, &G); + } + else if (money >= 6) { + printf("0: bought gold\n"); + buyCard(gold, &G); + } + else if ((money >= 4) && (numSmithies < 2)) { + printf("0: bought smithy\n"); + buyCard(smithy, &G); + numSmithies++; + } + else if (money >= 3) { + printf("0: bought silver\n"); + buyCard(silver, &G); + } + + printf("0: end turn\n"); + endTurn(&G); + } + else { + if (adventurerPos != -1) { + printf("1: adventurer played from position %d\n", adventurerPos); + playCard(adventurerPos, -1, -1, -1, &G); + money = 0; + i=0; + while(i= 8) { + printf("1: bought province\n"); + buyCard(province, &G); + } + else if ((money >= 6) && (numAdventurers < 2)) { + printf("1: bought adventurer\n"); + buyCard(adventurer, &G); + numAdventurers++; + } else if (money >= 6) { + printf("1: bought gold\n"); + buyCard(gold, &G); + } + else if (money >= 3) { + printf("1: bought silver\n"); + buyCard(silver, &G); + } + printf("1: endTurn\n"); + + endTurn(&G); + } + } // end of While + + printf ("Finished game.\n"); + printf ("Player 0: %d\nPlayer 1: %d\n", scoreFor(0, &G), scoreFor(1, &G)); + + return 0; +} diff --git a/projects/kyawmyis/dominion/player.c b/projects/kyawmyis/dominion/player.c new file mode 100644 index 000000000..0a169d126 --- /dev/null +++ b/projects/kyawmyis/dominion/player.c @@ -0,0 +1,205 @@ +/* Interactive Dominion Interface + Version 7 + + Sam Heinith CS362 + Questions/Comments: + heiniths@onid.orst.edu + 1/26/2010 +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include "dominion.h" +#include "interface.h" +#include "rngs.h" + + +int main2(int argc, char *argv[]) { + //Default cards, as defined in playDom + int k[10] = {adventurer, gardens, embargo, village, minion, mine, cutpurse, sea_hag, tribute, smithy}; + struct gameState g; + initializeGame(2,k,1,&g); + printf ("SUCCESSFUL INIT\n"); + getchar(); + return 0; +} + +int main(int argc, char* argv[]) { + char *add = "add"; + char *buyC = "buy"; + char *endT = "end"; + char *exit = "exit"; + char *help = "help"; + char *init = "init"; + char *numH = "num"; + char *play = "play"; + char *resign = "resi"; + char *show = "show"; + char *stat = "stat"; + char *supply = "supp"; + char *whos = "whos"; + + char command[MAX_STRING_LENGTH]; + char line[MAX_STRING_LENGTH]; + char cardName[MAX_STRING_LENGTH]; + + //Array to hold bot presence + int isBot[MAX_PLAYERS] = { 0, 0, 0, 0}; + + int players[MAX_PLAYERS]; + int playerNum; + int outcome; + int currentPlayer; + int gameOver = FALSE; + int gameStarted = FALSE; + int turnNum = 0; + + int randomSeed = atoi(argv[1]); + + //Default cards, as defined in playDom + int kCards[10] = {adventurer, gardens, embargo, village, minion, mine, cutpurse, sea_hag, tribute, smithy}; + + struct gameState g; + struct gameState * game = &g; + + memset(game,0,sizeof(struct gameState)); + + if(argc != 2) { + printf("Usage: player [integer random number seed]\n"); + return EXIT_SUCCESS; + } + + if(randomSeed <= 0) { + printf("Usage: player [integer random number seed]\n"); + return EXIT_SUCCESS; + } + + initializeGame(2,kCards,randomSeed,game); + + printf("Please enter a command or \"help\" for commands\n"); + + + while(TRUE) { + int arg0 = UNUSED; + int arg1 = UNUSED; + int arg2 = UNUSED; + int arg3 = UNUSED; + + outcome = FAILURE; + strcpy(line,""); + strcpy(command,""); + strcpy(cardName,""); + + currentPlayer = whoseTurn(game); + + //If you are getting a seg fault comment this if block out + gameOver = isGameOver(game); + if(gameStarted == TRUE && gameOver == TRUE) { + printScores(game); + getWinners(players, game); + printf("After %d turns, the winner(s) are:\n", turnNum); + for(playerNum = 0; playerNum < game->numPlayers; playerNum++) { + if(players[playerNum] == WINNER) printf("Player %d\n", playerNum); + } + for(playerNum = 0; playerNum < game->numPlayers; playerNum++) { + printHand(playerNum, game); + printPlayed(playerNum, game); + printDiscard(playerNum, game); + printDeck(playerNum, game); + } + + break; //Exit out of the game/while loop + } + + + if(isBot[currentPlayer] == TRUE) { + executeBotTurn(currentPlayer, &turnNum, game); + continue; + } + + printf("$ "); + fgets(line, MAX_STRING_LENGTH, stdin); + sscanf(line, "%s %d %d %d %d", command, &arg0, &arg1, &arg2, &arg3); + + + if(COMPARE(command, add) == 0) { + outcome = addCardToHand(currentPlayer, arg0, game); + cardNumToName(arg0, cardName); + printf("Player %d adds %s to their hand\n\n", currentPlayer, cardName); + } else if(COMPARE(command, buyC) == 0) { + outcome = buyCard(arg0, game); + cardNumToName(arg0, cardName); + if(outcome == SUCCESS) { + printf("Player %d buys card %d, %s\n\n", currentPlayer, arg0, cardName); + } else { + printf("Player %d cannot buy card %d, %s\n\n", currentPlayer, arg0, cardName); + } + } else if(COMPARE(command, endT) == 0) { + if(gameStarted == TRUE) { + if(currentPlayer == (game->numPlayers -1)) turnNum++; + endTurn(game); + currentPlayer = whoseTurn(game); + printf("Player %d's turn number %d\n\n", currentPlayer, turnNum); + } + + } else if(COMPARE(command, exit) == 0) { + break; + } else if(COMPARE(command, help) == 0) { + printHelp(); + } else if(COMPARE(command, init) == 0) { + int numHuman = arg0 - arg1; + for(playerNum = numHuman; playerNum < arg0; playerNum++) { + isBot[playerNum] = TRUE; + } + // selectKingdomCards(randomSeed, kCards); //Comment this out to use the default card set defined in playDom. + outcome = initializeGame(arg0, kCards, randomSeed, game); + printf("\n"); + if(outcome == SUCCESS) { + gameStarted = TRUE; + currentPlayer = whoseTurn(game); + printf("Player %d's turn number %d\n\n", currentPlayer, turnNum); + } + + } else if(COMPARE(command, numH) == 0) { + int numCards = numHandCards(game); + printf("There are %d cards in your hand.\n", numCards); + } else if(COMPARE(command, play) == 0) { + int card = handCard(arg0,game); + outcome = playCard(arg0, arg1, arg2, arg3, game); + cardNumToName(card, cardName); + if(outcome == SUCCESS) { + printf("Player %d plays %s\n\n", currentPlayer, cardName); + } else { + printf("Player %d cannot play card %d\n\n", currentPlayer, arg0); + } + + } else if(COMPARE(command, resign) == 0) { + endTurn(game); + printScores(game); + break; + } else if(COMPARE(command, show) == 0) { + if(gameStarted == FALSE) continue; + printHand(currentPlayer, game); + printPlayed(currentPlayer, game); + //printDiscard(currentPlayer, game); + //printDeck(currentPlayer, game); + } else if(COMPARE(command, stat) == 0) { + if(gameStarted == FALSE) continue; + printState(game); + } else if(COMPARE(command, supply) == 0) { + printSupply(game); + } else if(COMPARE(command, whos) == 0) { + int playerNum = whoseTurn(game); + printf("Player %d's turn\n", playerNum); + } + } + + return EXIT_SUCCESS; + +} diff --git a/projects/kyawmyis/dominion/rngs.c b/projects/kyawmyis/dominion/rngs.c new file mode 100644 index 000000000..a85bbc961 --- /dev/null +++ b/projects/kyawmyis/dominion/rngs.c @@ -0,0 +1,183 @@ +/* ------------------------------------------------------------------------- + * This is an ANSI C library for multi-stream random number generation. + * The use of this library is recommended as a replacement for the ANSI C + * rand() and srand() functions, particularly in simulation applications + * where the statistical 'goodness' of the random number generator is + * important. The library supplies 256 streams of random numbers; use + * SelectStream(s) to switch between streams indexed s = 0,1,...,255. + * + * The streams must be initialized. The recommended way to do this is by + * using the function PlantSeeds(x) with the value of x used to initialize + * the default stream and all other streams initialized automatically with + * values dependent on the value of x. The following convention is used + * to initialize the default stream: + * if x > 0 then x is the state + * if x < 0 then the state is obtained from the system clock + * if x = 0 then the state is to be supplied interactively. + * + * The generator used in this library is a so-called 'Lehmer random number + * generator' which returns a pseudo-random number uniformly distributed + * 0.0 and 1.0. The period is (m - 1) where m = 2,147,483,647 and the + * smallest and largest possible values are (1 / m) and 1 - (1 / m) + * respectively. For more details see: + * + * "Random Number Generators: Good Ones Are Hard To Find" + * Steve Park and Keith Miller + * Communications of the ACM, October 1988 + * + * Name : rngs.c (Random Number Generation - Multiple Streams) + * Authors : Steve Park & Dave Geyer + * Language : ANSI C + * Latest Revision : 09-22-98 + * ------------------------------------------------------------------------- + */ + +#include +#include +#include "rngs.h" + +#define MODULUS 2147483647 /* DON'T CHANGE THIS VALUE */ +#define MULTIPLIER 48271 /* DON'T CHANGE THIS VALUE */ +#define CHECK 399268537 /* DON'T CHANGE THIS VALUE */ +#define STREAMS 256 /* # of streams, DON'T CHANGE THIS VALUE */ +#define A256 22925 /* jump multiplier, DON'T CHANGE THIS VALUE */ +#define DEFAULT 123456789 /* initial seed, use 0 < DEFAULT < MODULUS */ + +static long seed[STREAMS] = {DEFAULT}; /* current state of each stream */ +static int stream = 0; /* stream index, 0 is the default */ +static int initialized = 0; /* test for stream initialization */ + + +double Random(void) +/* ---------------------------------------------------------------- + * Random returns a pseudo-random real number uniformly distributed + * between 0.0 and 1.0. + * ---------------------------------------------------------------- + */ +{ + const long Q = MODULUS / MULTIPLIER; + const long R = MODULUS % MULTIPLIER; + long t; + + t = MULTIPLIER * (seed[stream] % Q) - R * (seed[stream] / Q); + if (t > 0) + seed[stream] = t; + else + seed[stream] = t + MODULUS; + return ((double) seed[stream] / MODULUS); +} + + +void PlantSeeds(long x) +/* --------------------------------------------------------------------- + * Use this function to set the state of all the random number generator + * streams by "planting" a sequence of states (seeds), one per stream, + * with all states dictated by the state of the default stream. + * The sequence of planted states is separated one from the next by + * 8,367,782 calls to Random(). + * --------------------------------------------------------------------- + */ +{ + const long Q = MODULUS / A256; + const long R = MODULUS % A256; + int j; + int s; + + initialized = 1; + s = stream; /* remember the current stream */ + SelectStream(0); /* change to stream 0 */ + PutSeed(x); /* set seed[0] */ + stream = s; /* reset the current stream */ + for (j = 1; j < STREAMS; j++) { + x = A256 * (seed[j - 1] % Q) - R * (seed[j - 1] / Q); + if (x > 0) + seed[j] = x; + else + seed[j] = x + MODULUS; + } +} + + +void PutSeed(long x) +/* --------------------------------------------------------------- + * Use this function to set the state of the current random number + * generator stream according to the following conventions: + * if x > 0 then x is the state (unless too large) + * if x < 0 then the state is obtained from the system clock + * if x = 0 then the state is to be supplied interactively + * --------------------------------------------------------------- + */ +{ + char ok = 0; + + if (x > 0) + x = x % MODULUS; /* correct if x is too large */ + if (x < 0) + x = ((unsigned long) time((time_t *) NULL)) % MODULUS; + if (x == 0) + while (!ok) { + printf("\nEnter a positive integer seed (9 digits or less) >> "); + scanf("%ld", &x); + ok = (0 < x) && (x < MODULUS); + if (!ok) + printf("\nInput out of range ... try again\n"); + } + seed[stream] = x; +} + + +void GetSeed(long *x) +/* --------------------------------------------------------------- + * Use this function to get the state of the current random number + * generator stream. + * --------------------------------------------------------------- + */ +{ + *x = seed[stream]; +} + + +void SelectStream(int index) +/* ------------------------------------------------------------------ + * Use this function to set the current random number generator + * stream -- that stream from which the next random number will come. + * ------------------------------------------------------------------ + */ +{ + stream = ((unsigned int) index) % STREAMS; + if ((initialized == 0) && (stream != 0)) /* protect against */ + PlantSeeds(DEFAULT); /* un-initialized streams */ +} + + +void TestRandom(void) +/* ------------------------------------------------------------------ + * Use this (optional) function to test for a correct implementation. + * ------------------------------------------------------------------ + */ +{ + long i; + long x; + double u; + char ok = 0; + + SelectStream(0); /* select the default stream */ + PutSeed(1); /* and set the state to 1 */ + for(i = 0; i < 10000; i++) { + u = Random(); + if (ok) + printf(" %f \n\n", u); + + } + GetSeed(&x); /* get the new state value */ + ok = (x == CHECK); /* and check for correctness */ + + SelectStream(1); /* select stream 1 */ + PlantSeeds(1); /* set the state of all streams */ + GetSeed(&x); /* get the state of stream 1 */ + ok = ok && (x == A256); /* x should be the jump multiplier */ + if (ok) + printf("\n The implementation of rngs.c is correct.\n\n"); + else + printf("\n\a ERROR -- the implementation of rngs.c is not correct.\n\n"); +} diff --git a/projects/kyawmyis/dominion/rngs.h b/projects/kyawmyis/dominion/rngs.h new file mode 100644 index 000000000..c9f3f451a --- /dev/null +++ b/projects/kyawmyis/dominion/rngs.h @@ -0,0 +1,19 @@ +/* ----------------------------------------------------------------------- + * Name : rngs.h (header file for the library file rngs.c) + * Author : Steve Park & Dave Geyer + * Language : ANSI C + * Latest Revision : 09-22-98 + * ----------------------------------------------------------------------- + */ + +#if !defined( _RNGS_ ) +#define _RNGS_ + +double Random(void); +void PlantSeeds(long x); +void GetSeed(long *x); +void PutSeed(long x); +void SelectStream(int index); +void TestRandom(void); + +#endif diff --git a/projects/kyawmyis/dominion/rt.c b/projects/kyawmyis/dominion/rt.c new file mode 100644 index 000000000..5805bb9b4 --- /dev/null +++ b/projects/kyawmyis/dominion/rt.c @@ -0,0 +1,27 @@ +#include "rngs.h" +#include +#include + +int main(int argc, char** argv) { + if (argc < 3) { + printf ("Not enough inputs: seed target\n"); + } + + SelectStream(1); + PutSeed((long)atoi(argv[1])); + + int done = 0; + int c = 1000000000; + + while (!done) { + c = floor(Random() * 1000000000); + // if (c % 100000 == 0) { + // printf ("c = %d\n", c); + // } + if (c == atoi(argv[2])) { + printf ("Found the bug!\n"); + done = 1; + } + } +} + diff --git a/projects/kyawmyis/dominion/testdrawcard.c b/projects/kyawmyis/dominion/testdrawcard.c new file mode 100644 index 000000000..da5379646 --- /dev/null +++ b/projects/kyawmyis/dominion/testdrawcard.c @@ -0,0 +1,74 @@ +#include "dominion.h" +#include "dominion_helpers.h" +#include +#include +#include +#include "rngs.h" + +#define DEBUG 0 +#define NOISY_TEST 1 + +int checkDrawCard(int p, struct gameState *post) { + struct gameState pre; + memcpy (&pre, post, sizeof(struct gameState)); + + int r; + // printf ("drawCard PRE: p %d HC %d DeC %d DiC %d\n", + // p, pre.handCount[p], pre.deckCount[p], pre.discardCount[p]); + + r = drawCard (p, post); + + //printf ("drawCard POST: p %d HC %d DeC %d DiC %d\n", + // p, post->handCount[p], post->deckCount[p], post->discardCount[p]); + + if (pre.deckCount[p] > 0) { + pre.handCount[p]++; + pre.hand[p][pre.handCount[p]-1] = pre.deck[p][pre.deckCount[p]-1]; + pre.deckCount[p]--; + } else if (pre.discardCount[p] > 0) { + memcpy(pre.deck[p], post->deck[p], sizeof(int) * pre.discardCount[p]); + memcpy(pre.discard[p], post->discard[p], sizeof(int)*pre.discardCount[p]); + pre.hand[p][post->handCount[p]-1] = post->hand[p][post->handCount[p]-1]; + pre.handCount[p]++; + pre.deckCount[p] = pre.discardCount[p]-1; + pre.discardCount[p] = 0; + } + + assert (r == 0); + + assert(memcmp(&pre, post, sizeof(struct gameState)) == 0); +} + +int main () { + + int i, n, r, p, deckCount, discardCount, handCount; + + int k[10] = {adventurer, council_room, feast, gardens, mine, + remodel, smithy, village, baron, great_hall + }; + + struct gameState G; + + printf ("Testing drawCard.\n"); + + printf ("RANDOM TESTS.\n"); + + SelectStream(2); + PutSeed(3); + + for (n = 0; n < 2000; n++) { + for (i = 0; i < sizeof(struct gameState); i++) { + ((char*)&G)[i] = floor(Random() * 256); + } + p = floor(Random() * 2); + G.deckCount[p] = floor(Random() * MAX_DECK); + G.discardCount[p] = floor(Random() * MAX_DECK); + G.handCount[p] = floor(Random() * MAX_HAND); + checkDrawCard(p, &G); + } + + printf ("ALL TESTS OK\n"); + + exit(0); + +} From 69884fb752c055a3b4625c697ec4ed49d4d57822 Mon Sep 17 00:00:00 2001 From: Stuart Kyawmyint Date: Sun, 6 Oct 2019 10:24:55 -0700 Subject: [PATCH 2/6] Added all necessary files for Assignment 1 Added all necessary files for Assignment 1 --- projects/kyawmyis/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/kyawmyis/README.md b/projects/kyawmyis/README.md index e0ef4c115..23cace88b 100644 --- a/projects/kyawmyis/README.md +++ b/projects/kyawmyis/README.md @@ -1 +1 @@ -#Wendy Roberts, roberwen +#Stuart Kyawmyint, kyawmyis From 66c2df4c176505e489070b79211f6b1d16921ffe Mon Sep 17 00:00:00 2001 From: Stuart Kyawmyint Date: Sun, 13 Oct 2019 17:19:21 -0700 Subject: [PATCH 3/6] Assignment 2 - Refactoring and Bugs Added functions to refactor and added 10 bugs for Assignment 2 --- dominion/.idea/codeStyles/Project.xml | 29 + dominion/.idea/dominion.iml | 2 + dominion/.idea/misc.xml | 7 + dominion/.idea/modules.xml | 8 + dominion/.idea/vcs.xml | 6 + dominion/.idea/workspace.xml | 198 ++++++ dominion/CMakeLists.txt | 19 + dominion/cmake-build-debug/CMakeCache.txt | 325 +++++++++ .../CMakeFiles/3.12.2/CMakeCCompiler.cmake | 73 ++ .../3.12.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 4304 bytes .../CMakeFiles/3.12.2/CMakeSystem.cmake | 15 + .../3.12.2/CompilerIdC/CMakeCCompilerId.c | 623 ++++++++++++++++++ .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/CMakeOutput.log | 150 +++++ .../CMakeFiles/Makefile.cmake | 102 +++ .../cmake-build-debug/CMakeFiles/Makefile2 | 113 ++++ .../cmake-build-debug/CMakeFiles/Progress/1 | 1 + .../cmake-build-debug/CMakeFiles/Progress/2 | 1 + .../cmake-build-debug/CMakeFiles/Progress/3 | 1 + .../cmake-build-debug/CMakeFiles/Progress/4 | 1 + .../cmake-build-debug/CMakeFiles/Progress/5 | 1 + .../cmake-build-debug/CMakeFiles/Progress/6 | 1 + .../cmake-build-debug/CMakeFiles/Progress/7 | 1 + .../cmake-build-debug/CMakeFiles/Progress/8 | 1 + .../CMakeFiles/Progress/count.txt | 1 + .../CMakeFiles/TargetDirectories.txt | 3 + .../CMakeFiles/clion-environment.txt | 3 + .../CMakeFiles/clion-log.txt | 11 + .../CMakeFiles/cmake.check_cache | 1 + .../CMakeFiles/dominion.dir/C.includecache | 112 ++++ .../CMakeFiles/dominion.dir/DependInfo.cmake | 27 + .../CMakeFiles/dominion.dir/build.make | 188 ++++++ .../CMakeFiles/dominion.dir/cmake_clean.cmake | 16 + .../CMakeFiles/dominion.dir/depend.internal | 33 + .../CMakeFiles/dominion.dir/depend.make | 33 + .../CMakeFiles/dominion.dir/flags.make | 10 + .../CMakeFiles/dominion.dir/link.txt | 1 + .../CMakeFiles/dominion.dir/progress.make | 9 + .../CMakeFiles/feature_tests.bin | Bin 0 -> 4288 bytes .../CMakeFiles/feature_tests.c | 34 + .../CMakeFiles/progress.marks | 1 + dominion/cmake-build-debug/Makefile | 358 ++++++++++ .../cmake-build-debug/cmake_install.cmake | 44 ++ dominion/cmake-build-debug/dominion.cbp | 120 ++++ projects/kyawmyis/dominion/.cproject | 44 ++ .../dominion/.idea/codeStyles/Project.xml | 29 + projects/kyawmyis/dominion/.idea/dominion.iml | 2 + projects/kyawmyis/dominion/.idea/misc.xml | 7 + projects/kyawmyis/dominion/.idea/modules.xml | 8 + projects/kyawmyis/dominion/.idea/vcs.xml | 6 + .../kyawmyis/dominion/.idea/workspace.xml | 280 ++++++++ projects/kyawmyis/dominion/.project | 27 + .../dominion/.settings/language.settings.xml | 15 + projects/kyawmyis/dominion/dominion.c | 565 +++++++++------- projects/kyawmyis/dominion/dominion.gcda | Bin 0 -> 7856 bytes projects/kyawmyis/dominion/dominion.gcno | Bin 0 -> 44916 bytes projects/kyawmyis/dominion/interface.gcno | Bin 0 -> 13404 bytes projects/kyawmyis/dominion/playdom | Bin 0 -> 89272 bytes projects/kyawmyis/dominion/playdom.gcda | Bin 0 -> 940 bytes projects/kyawmyis/dominion/playdom.gcno | Bin 0 -> 5344 bytes projects/kyawmyis/dominion/player | Bin 0 -> 114740 bytes projects/kyawmyis/dominion/player.gcno | Bin 0 -> 6072 bytes projects/kyawmyis/dominion/rngs.gcda | Bin 0 -> 816 bytes projects/kyawmyis/dominion/rngs.gcno | Bin 0 -> 3660 bytes 64 files changed, 3442 insertions(+), 240 deletions(-) create mode 100644 dominion/.idea/codeStyles/Project.xml create mode 100644 dominion/.idea/dominion.iml create mode 100644 dominion/.idea/misc.xml create mode 100644 dominion/.idea/modules.xml create mode 100644 dominion/.idea/vcs.xml create mode 100644 dominion/.idea/workspace.xml create mode 100644 dominion/CMakeLists.txt create mode 100644 dominion/cmake-build-debug/CMakeCache.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeCCompiler.cmake create mode 100755 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeDetermineCompilerABI_C.bin create mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeSystem.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/CMakeCCompilerId.c create mode 100644 dominion/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/CMakeOutput.log create mode 100644 dominion/cmake-build-debug/CMakeFiles/Makefile.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/Makefile2 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/1 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/2 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/3 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/4 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/5 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/6 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/7 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/8 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/count.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/TargetDirectories.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/clion-environment.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/clion-log.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/cmake.check_cache create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/C.includecache create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/build.make create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/cmake_clean.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.internal create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.make create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/flags.make create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/link.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/progress.make create mode 100755 dominion/cmake-build-debug/CMakeFiles/feature_tests.bin create mode 100644 dominion/cmake-build-debug/CMakeFiles/feature_tests.c create mode 100644 dominion/cmake-build-debug/CMakeFiles/progress.marks create mode 100644 dominion/cmake-build-debug/Makefile create mode 100644 dominion/cmake-build-debug/cmake_install.cmake create mode 100644 dominion/cmake-build-debug/dominion.cbp create mode 100644 projects/kyawmyis/dominion/.cproject create mode 100644 projects/kyawmyis/dominion/.idea/codeStyles/Project.xml create mode 100644 projects/kyawmyis/dominion/.idea/dominion.iml create mode 100644 projects/kyawmyis/dominion/.idea/misc.xml create mode 100644 projects/kyawmyis/dominion/.idea/modules.xml create mode 100644 projects/kyawmyis/dominion/.idea/vcs.xml create mode 100644 projects/kyawmyis/dominion/.idea/workspace.xml create mode 100644 projects/kyawmyis/dominion/.project create mode 100644 projects/kyawmyis/dominion/.settings/language.settings.xml create mode 100644 projects/kyawmyis/dominion/dominion.gcda create mode 100644 projects/kyawmyis/dominion/dominion.gcno create mode 100644 projects/kyawmyis/dominion/interface.gcno create mode 100755 projects/kyawmyis/dominion/playdom create mode 100644 projects/kyawmyis/dominion/playdom.gcda create mode 100644 projects/kyawmyis/dominion/playdom.gcno create mode 100755 projects/kyawmyis/dominion/player create mode 100644 projects/kyawmyis/dominion/player.gcno create mode 100644 projects/kyawmyis/dominion/rngs.gcda create mode 100644 projects/kyawmyis/dominion/rngs.gcno diff --git a/dominion/.idea/codeStyles/Project.xml b/dominion/.idea/codeStyles/Project.xml new file mode 100644 index 000000000..30aa626c2 --- /dev/null +++ b/dominion/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dominion/.idea/dominion.iml b/dominion/.idea/dominion.iml new file mode 100644 index 000000000..f08604bb6 --- /dev/null +++ b/dominion/.idea/dominion.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dominion/.idea/misc.xml b/dominion/.idea/misc.xml new file mode 100644 index 000000000..8822db8f1 --- /dev/null +++ b/dominion/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/dominion/.idea/modules.xml b/dominion/.idea/modules.xml new file mode 100644 index 000000000..b6bbcd7c9 --- /dev/null +++ b/dominion/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/dominion/.idea/vcs.xml b/dominion/.idea/vcs.xml new file mode 100644 index 000000000..6c0b86358 --- /dev/null +++ b/dominion/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dominion/.idea/workspace.xml b/dominion/.idea/workspace.xml new file mode 100644 index 000000000..ab8b414c4 --- /dev/null +++ b/dominion/.idea/workspace.xml @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1570996744459 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/kyawmyis/dominion/.project b/projects/kyawmyis/dominion/.project new file mode 100644 index 000000000..d94116622 --- /dev/null +++ b/projects/kyawmyis/dominion/.project @@ -0,0 +1,27 @@ + + + dominion + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/projects/kyawmyis/dominion/.settings/language.settings.xml b/projects/kyawmyis/dominion/.settings/language.settings.xml new file mode 100644 index 000000000..e527cccd8 --- /dev/null +++ b/projects/kyawmyis/dominion/.settings/language.settings.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/projects/kyawmyis/dominion/dominion.c b/projects/kyawmyis/dominion/dominion.c index c94e2edb9..855089471 100644 --- a/projects/kyawmyis/dominion/dominion.c +++ b/projects/kyawmyis/dominion/dominion.c @@ -681,6 +681,301 @@ int getCost(int cardNumber) return -1; } + +/////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Baron card // +/////////////////////////////////////////////////////////////////////////////// +int baronEffect(struct gameState *state, int choice1, int currentPlayer){ + + state->numBuys++;//Increase buys by 1! + if (choice1 > 0) { //Boolean true or going to discard an estate + int p = 0;//Iterator for hand! + int card_not_discarded = 1;//Flag for discard set! + while(card_not_discarded) { + if (state->hand[currentPlayer][p] == estate) { //Found an estate card! + ////////////ERROR 1 - equal instead of addition/////////////// + state->coins = 4;//Add 4 coins to the amount of coins + state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; + state->discardCount[currentPlayer]++; + for (; p < state->handCount[currentPlayer]; p++) { + state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; + } + state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; + state->handCount[currentPlayer]--; + card_not_discarded = 0;//Exit the loop + } + else if (p > state->handCount[currentPlayer]) { + if(DEBUG) { + printf("No estate cards in your hand, invalid choice\n"); + printf("Must gain an estate if there are any\n"); + } + if (supplyCount(estate, state) > 0) { + gainCard(estate, state, 0, currentPlayer); + + state->supplyCount[estate]--;//Decrement estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + card_not_discarded = 0;//Exit the loop + } + + else { + p++;//Next card + } + } + } + + else { + //////ERROR 2 - check if supply of estate less than 0 instead ///////// + if (supplyCount(estate, state) < 0) { + gainCard(estate, state, 0, currentPlayer);//Gain an estate + + state->supplyCount[estate]--;//Decrement Estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + } + return 0; +} + + +//////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Minion card // +//////////////////////////////////////////////////////////////////////////////// +int minionEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2) { + + ////////ERROR 3 - action added by 2 instead of 1. + //+1 action + state->numActions+=2; + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + if (choice1) + { + state->coins = state->coins + 2; + } + else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 + { + //discard hand + while(numHandCards(state) > 0) + { + discardCard(handPos, currentPlayer, state, 0); + } + + ////////ERROR 4 - less-than equal to in the counter////// + //draw 4 + for (int i = 0; i <= 4; i++) + { + drawCard(currentPlayer, state); + } + + //other players discard hand and redraw if hand size > 4 + for (int i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + if ( state->handCount[i] > 4 ) + { + //discard hand + while( state->handCount[i] > 0 ) + { + discardCard(handPos, i, state, 0); + } + + //draw 4 + for (int j = 0; j < 4; j++) + { + drawCard(i, state); + } + } + } + } + + } + return 0; + +} + +//////////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Ambassador card // +//////////////////////////////////////////////////////////////////////////////////// + +int ambassadorEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2){ + + int j = 0; //used to check if player has enough cards to discard + + //////////ERROR 5 - choice2 must be less than 5 and greater than -1. Does not follow logic of 0,1,2 cards return ///////// + if (choice2 > 4 || choice2 < 0) + { + return -1; + } + + if (choice1 == handPos) + { + return -1; + } + + for (int i = 0; i < state->handCount[currentPlayer]; i++) + { + if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) + { + j++; + } + } + if (j < choice2) + { + return -1; + } + + if (DEBUG) + printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); + + //increase supply count for choosen card by amount being discarded + state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; + + //each other player gains a copy of revealed card + for (int i = 0; i < state->numPlayers; i++) + { + /////////ERROR 6 - Conditional statement equal to instead of not equal to/////// + if (i == currentPlayer) + { + gainCard(state->hand[currentPlayer][choice1], state, 0, i); + } + } + + //discard played card from hand + discardCard(handPos, currentPlayer, state, 0); + + //trash copies of cards returned to supply + for (j = 0; j < choice2; j++) + { + for (int i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) + { + discardCard(i, currentPlayer, state, 1); + break; + } + } + } + + return 0; + +} + +///////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Tribute card // +///////////////////////////////////////////////////////////////////////////////// +int tributeEffect(struct gameState *state, int currentPlayer, int tributeRevealedCards[2], int nextPlayer) { + + if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { + if (state->deckCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deckCount[nextPlayer]--; + } + else if (state->discardCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; + state->discardCount[nextPlayer]--; + } + else { + //No Card to Reveal + if (DEBUG) { + printf("No cards to reveal\n"); + } + } + } + + else { + if (state->deckCount[nextPlayer] == 0) { + for (int i = 0; i < state->discardCount[nextPlayer]; i++) { + state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck + state->deckCount[nextPlayer]++; + state->discard[nextPlayer][i] = -1; + state->discardCount[nextPlayer]--; + } + + shuffle(nextPlayer,state);//Shuffle the deck + } + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + } + + if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one + state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; + state->playedCardCount++; + tributeRevealedCards[1] = -1; + } + + for (int i = 0; i <= 2; i ++) { + if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards + //////////ERROR 7 - coins in state subtract by 2 //////////// + state->coins -= 2; + } + + //////////ERROR 8 - removed revealed card tributeRevealedCards[i]==estate//////////// + else if (tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found + drawCard(currentPlayer, state); + drawCard(currentPlayer, state); + } + else { //Action Card + state->numActions = state->numActions + 2; + } + } + + return 0; +} + +/////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Mine card /// +/////////////////////////////////////////////////////////////////////////////// + +int mineEffect(struct gameState *state, int handPos, int choice1, int choice2, int currentPlayer){ + + int j = state->hand[currentPlayer][choice1]; //store card we will trash + + ////////ERROR 9 - changed the conditional statement to have silver instead of copper //////////// + if (state->hand[currentPlayer][choice1] < silver || state->hand[currentPlayer][choice1] > gold) + { + return -1; + } + + if (choice2 > treasure_map || choice2 < curse) + { + return -1; + } + + if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) + { + return -1; + } + + /////////ERROR 10 - changed the toFlag in the gainCard() function to 0 instead of 2. Adds to discard pile instead of hand. + gainCard(choice2, state, 0, currentPlayer); + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + //discard trashed card + for (int i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == j) + { + discardCard(i, currentPlayer, state, 0); + break; + } + } + + return 0; +} + + int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState *state, int handPos, int *bonus) { int i; @@ -805,40 +1100,12 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState case gardens: return -1; + ///////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION mineEffect() // + // /////////////////////////////////////////// case mine: - j = state->hand[currentPlayer][choice1]; //store card we will trash - - if (state->hand[currentPlayer][choice1] < copper || state->hand[currentPlayer][choice1] > gold) - { - return -1; - } - - if (choice2 > treasure_map || choice2 < curse) - { - return -1; - } - - if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) - { - return -1; - } - - gainCard(choice2, state, 2, currentPlayer); - - //discard card from hand - discardCard(handPos, currentPlayer, state, 0); - - //discard trashed card - for (i = 0; i < state->handCount[currentPlayer]; i++) - { - if (state->hand[currentPlayer][i] == j) - { - discardCard(i, currentPlayer, state, 0); - break; - } - } - return 0; + return mineEffect(state, handPos, choice1, choice2, currentPlayer); case remodel: j = state->hand[currentPlayer][choice1]; //store card we will trash @@ -888,58 +1155,12 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; + ///////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION baronEffect() // + ///////////////////////////////////////////// case baron: - state->numBuys++;//Increase buys by 1! - if (choice1 > 0) { //Boolean true or going to discard an estate - int p = 0;//Iterator for hand! - int card_not_discarded = 1;//Flag for discard set! - while(card_not_discarded) { - if (state->hand[currentPlayer][p] == estate) { //Found an estate card! - state->coins += 4;//Add 4 coins to the amount of coins - state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; - state->discardCount[currentPlayer]++; - for (; p < state->handCount[currentPlayer]; p++) { - state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; - } - state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; - state->handCount[currentPlayer]--; - card_not_discarded = 0;//Exit the loop - } - else if (p > state->handCount[currentPlayer]) { - if(DEBUG) { - printf("No estate cards in your hand, invalid choice\n"); - printf("Must gain an estate if there are any\n"); - } - if (supplyCount(estate, state) > 0) { - gainCard(estate, state, 0, currentPlayer); - - state->supplyCount[estate]--;//Decrement estates - if (supplyCount(estate, state) == 0) { - isGameOver(state); - } - } - card_not_discarded = 0;//Exit the loop - } - - else { - p++;//Next card - } - } - } - - else { - if (supplyCount(estate, state) > 0) { - gainCard(estate, state, 0, currentPlayer);//Gain an estate - - state->supplyCount[estate]--;//Decrement Estates - if (supplyCount(estate, state) == 0) { - isGameOver(state); - } - } - } - - return 0; + return baronEffect(state, choice1, currentPlayer); case great_hall: //+1 Card @@ -952,55 +1173,12 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; + ////////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION minionEffect() // + ////////////////////////////////////////////// case minion: - //+1 action - state->numActions++; - - //discard card from hand - discardCard(handPos, currentPlayer, state, 0); - - if (choice1) - { - state->coins = state->coins + 2; - } - else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 - { - //discard hand - while(numHandCards(state) > 0) - { - discardCard(handPos, currentPlayer, state, 0); - } - //draw 4 - for (i = 0; i < 4; i++) - { - drawCard(currentPlayer, state); - } - - //other players discard hand and redraw if hand size > 4 - for (i = 0; i < state->numPlayers; i++) - { - if (i != currentPlayer) - { - if ( state->handCount[i] > 4 ) - { - //discard hand - while( state->handCount[i] > 0 ) - { - discardCard(handPos, i, state, 0); - } - - //draw 4 - for (j = 0; j < 4; j++) - { - drawCard(i, state); - } - } - } - } - - } - return 0; + return minionEffect(state, handPos, currentPlayer, choice1, choice2); case steward: if (choice1 == 1) @@ -1025,122 +1203,19 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; + ////////////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION tributeEffect() // + ////////////////////////////////////////////////// case tribute: - if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { - if (state->deckCount[nextPlayer] > 0) { - tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deckCount[nextPlayer]--; - } - else if (state->discardCount[nextPlayer] > 0) { - tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; - state->discardCount[nextPlayer]--; - } - else { - //No Card to Reveal - if (DEBUG) { - printf("No cards to reveal\n"); - } - } - } - - else { - if (state->deckCount[nextPlayer] == 0) { - for (i = 0; i < state->discardCount[nextPlayer]; i++) { - state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck - state->deckCount[nextPlayer]++; - state->discard[nextPlayer][i] = -1; - state->discardCount[nextPlayer]--; - } - - shuffle(nextPlayer,state);//Shuffle the deck - } - tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; - state->deckCount[nextPlayer]--; - tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; - state->deckCount[nextPlayer]--; - } - - if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one - state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; - state->playedCardCount++; - tributeRevealedCards[1] = -1; - } - - for (i = 0; i <= 2; i ++) { - if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards - state->coins += 2; - } - - else if (tributeRevealedCards[i] == estate || tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found - drawCard(currentPlayer, state); - drawCard(currentPlayer, state); - } - else { //Action Card - state->numActions = state->numActions + 2; - } - } - return 0; + return tributeEffect(state, currentPlayer, &tributeRevealedCards[2], nextPlayer); + ////////////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION ambassadorEffect() // + ////////////////////////////////////////////////// case ambassador: - j = 0; //used to check if player has enough cards to discard - if (choice2 > 2 || choice2 < 0) - { - return -1; - } - - if (choice1 == handPos) - { - return -1; - } - - for (i = 0; i < state->handCount[currentPlayer]; i++) - { - if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) - { - j++; - } - } - if (j < choice2) - { - return -1; - } - - if (DEBUG) - printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); - - //increase supply count for choosen card by amount being discarded - state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; - - //each other player gains a copy of revealed card - for (i = 0; i < state->numPlayers; i++) - { - if (i != currentPlayer) - { - gainCard(state->hand[currentPlayer][choice1], state, 0, i); - } - } - - //discard played card from hand - discardCard(handPos, currentPlayer, state, 0); - - //trash copies of cards returned to supply - for (j = 0; j < choice2; j++) - { - for (i = 0; i < state->handCount[currentPlayer]; i++) - { - if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) - { - discardCard(i, currentPlayer, state, 1); - break; - } - } - } - - return 0; + return ambassadorEffect(state, handPos, currentPlayer, choice1, choice2); case cutpurse: @@ -1369,5 +1444,15 @@ int updateCoins(int player, struct gameState *state, int bonus) } + + + + + + + + + + //end of dominion.c diff --git a/projects/kyawmyis/dominion/dominion.gcda b/projects/kyawmyis/dominion/dominion.gcda new file mode 100644 index 0000000000000000000000000000000000000000..5aa4086dfb784edf4fa9a38deebedd57a203b5d4 GIT binary patch literal 7856 zcmeHLTWB0r7@o29(wNq&t+zC7S_*1uG)O?Jf?%{(5PeYFq9UE$olVB>&MY&#hDxCz z6h*P1LZI|%DtIYAsGtvCK=UB2Z?O-8pid$~XrUm|7t#Ma=X}fX%NQ3+n}j{E^PTTM z|Lt7o%m%gU0NU0CVktjJxLth*lgfU}@IdCkempHbXVk8*O_5ou3k z9O`RMc^PW`GQQ3^U_1FSCucsyH&sB&X}?POqdMC)r#}7AzeeUoq(7_|6wR-&VzZu5 zB`4BujnX40Qje(PkUKZsc$zO{&vqjH4mn4fYk7BXJAHB@?TMmh_9*sBuLfmBT?<6o+F@w?lI3(GTMg8DGpy-Z+m>eSYFw3h_+7kbe}<9!9=XL0l{5i*^3JTl_>389SUopS*SE4D711 zb{?+R!)jZI%+CvA!+84aAcrQ3=2lw%blam`;R3fXzxB>9Im1v+&VH|U0_My0M9wpO z(CLxWALCG7#u>Mdi)#cp&zv{SwR~}9-_K^bj{wgp>8H8V;4b;cv4byTomM)0ZP~lP zuo?`_+5BJS)LRI}uX)$t?A-M6{quO&WSv&4abP0p#CX}*Z<~9ihC-C8=@ZV@zns-_zp=edn{WG|&x{a$?cqPtxBRhUP!R`A}P+n%4tTA2)@ zxOku0ATq8wj+N%U%4uJQ;?I1e4IlP&T+A~Kgo7x9gWLb+x3+mm%5`@^%5oI3PFPW-=e+7p@QRu_Pr@hB%}z9UXR z&UUSjZ$lKG735axd0M|rPCX*?)V$1orE3^*NPeO8%lt4uBJ&n~v%c0z<-=bNAHw>Q z_w}AAj>FWPkh%XHo%Zo!j)0jLe3Sn4#@b=bOC?B?xcjl6`#UdYHcKy-c@N{xxcA`M z4cKQ*`IEgcfFjBL$Ch5d7DL8nZQdxE9R2ZE`#)xs;jbun<;(qBq>X0`k%=$F7t*6W zQS^O$Q{5!L-@e%K1Kue?vl3)kP)pM8h7oD*KQGUIxnv_?_T%Kfo|@)EA*{GS(n(Dz@}uXl?4Z=@>n AAfoLQTH_Fc1jh%_ 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%0AU~|VzpHweAy=bK|4CPv|=## zsi{YuGFF}v1*fSn%4UkgH5QwQ+diXWS94-EtmcTbXIAWL?l@cXS98_bvnqBq?z3TA zvG@fQyNn6qc5AHWt+Owz*wx&1wsvn?E6$!%v8#DE8&+$;+4CxPwI*i6YK=I1e#NfV zj`GMO<1uv8dZ!yxt{Uz41}?8RNX}l5vK5gBz(MU&ck& zNg0c^ZWK50PwP%P@@|8AT1Q$V;?Zj@NawMbcFI@`hs`nuYktZ`D+X&ViKCw8>ywFd z3!~GP3>_KP)_&e}mNm%zAwJ%hh26^|Ev?vBzk40GPd{kfoV_CKE;rlo8Y|}~f?Z)e z{i!i^{$<9pCNV5A}ibHCE%{>@8*&KQunh-Wu#XjK>d+ne*?gu&s4o z^BLQS+kIEXuEyTk_f%NT4`*+yu$m*zzHbVfYnXlgjnCbAGuTxNSFBuo(u!EY)BS&c zS9g5$a0>swk|%$L&{<1yf%b%`smWn9rbll_^_6q-NcnR}%U`(=C? zVoLVU)Hsu878sr1be@%c^sXzP@5Hf>Dt1ff&vp35UZXSUocNxSexTR$-SFI>exomS z*dnj@&3c!tw$Yb5c=CFWtarrX(U&@S@_Ik4cfaD%mpXXzdhe@uy5iB7I{5N8u;F*F zyx*z6g{2N=EK*A9#v((XrlgL3-9xJWTuOd!uX~1-q2IID?NyYq4$zl6{3gG5BxIkw z#AmjRzSO~!-!~GnUtZ!fdGw_Yp8WoikOT4(pUI;yb@1d5jD#GNm-tK`eW`;de{dw^ zki5ia^5|Vh{!rt{mwilM(XWS1a_jy#G#`xE{M(TRS^K%Y#^MLUwS4#SVY5rzP>gf- zcY^(0!O73|%{W1AR`IRB{%OKeA+ zt<68}rOy6I#jfJkY*_6X&VJVH(ihr8oV_R5&lyi&XkT&uPmRU4_8VvaTd?;Uk8SNi z&i|RQ*w)_U?0v!BZ#=fOUpfDIW3jD$%-IKm{d427t-a0pFBpq$?Rn1rMX(PVk8SOP z&VSKZY`1>zd??tzG#=a9N8R?9D(qPBh_ki1Iw#R-?Ek3P)xO|%YwX;H-LIHk`a*lO z+x=>=Uo)P**sEdtVPmna{oHMTJ=jN#$F}x(=f7brwzc;=`)II#Z9KO3i-b7;O=GdW ze@9Md9}D(d#$#J&2ed_r`R1CWuGIi{_f+ie-&)}9p?EAJu#f{NIq| zIS+@1TTC7K^(H;dXA<(OI{SztU;05iw9Pz7 z$@a-Jmk{m$@(sPtCOUV>K6=-Y*Lg!6`La#?pdFnZ)E0T25ww@8486_-+QU_bUT1)^ zjCRnwj=c7E`AEL>hq~o+q1q~+2er4UY+arUv0pwH$`AHeoeiWbp9j@e`5dTyLS-{O z4~|6}DLG$T&x3P>_0KfqwMWZ0+MYYf)t^-ud#w@fyL_H_LIs_TwLhoSSnMHg_aDtJ z^H^)l*`Egce~iaxtwrbmrNU}GIy*Wnz_6J2r*-PA-yc3JRyezU*xjIFTkFjE8ml$$ z>_%p{i~-JW66~hNgAOq{7?+{`ww_P+HoN%IdOq1V*!_&BKU&Wx z2Uggz;1Tz^`-d=D6rUNJ=Ja`IYxlQDgFSSL4|(Qe-aYc>t#-xkr3+TBnCSll+uqJc zySn3}8kfF_e}zl^JjWhDxYsRdt!e*5&po6}KhJ3$Yj0)`(!RpDr)1lHu2Ww7g<`wf zMz8%rI`Z0!q@$kVkNlu*o$D0yR92qr6gyQ`p6?Wk)edpob$-sHudu1usk-I)PP+13 zCmr`u_BY?@W5owJ`i*f?tW&H}S$VEg%#!``d?#Ibu9ME+^W(?V^IZKbM8E6!K%Md| zbVp34k7=Ss8EcZUkjnXwN5P$u{!l<)hw+9*yiSd6or^wUb{TukUAOzmVDE}_ccf2Q zJ^ay}^m@+HKbr5(emd;_amBXQfb(t}|Fwpk{gbf!nMj|FbWf!XtyQo0xeBXw_f(5Td~9WFB?nwu;wGv z?>CA|UcWX^6-%A{D{BkC6sMhi*jUCual+ZJ2m6gkk6Io2sdX;;>tMfWJpL%ocpHxy zOZgD5BGdPi;+xlhd`kWN8+3fT;QAl%pWhopG7qw!7^F5bx;tyktXzhzfuh=0SdBrU0 z%2^%{S+Cr4HSg38>sxD9w#vO%>rp&ww&dww7_CLwAg?v2wILhj zUMwAJuC#&OpLg%2zfy9%=`)`L}p=khHdT5n^x?$_T}!6udLr%`|_3*yIQaAue0=* z_GD+D77FJX55))Pw?i>0Io4X=GqL!g*x~H#5W4E-xc4y{%%wJ%I9+K_Z?sR_U#?Jbk)N6r=8tD z@ASIIbpd3&dmf>s*~^pP+Xr{2KUXWBX+I$rDqd($f>A6}j1rGtu}C`K+iAbt+r`n2 zVohtmfNAX)eOJ*sPL`*;;dkwZ#@1><@R5of?)6; zU)0aeo)hf3#uIxr9?oAF>_w4YY<1v<@rq18*EQyD=aMP)M@EUutk>_{ebir3v|#zA z3s$XKuxQ0f{h!{ZpN;p%X#Bt4=5qNrC2L<(o!jB>a16-xLtbT?3!2mD=S<#X@-XT~ zjjwq0B~N`AjVl~Xxu&$=sjOUE+GAB#t}!oTzG?q1%kaU^(db~bFUx=O?rV8&)*dRJ z{nzieJU7el@|~6T9hH^mX6<*fU!I?(Yn_|5XN&W5GyP6n*ZwpX-&1nlpx1sR-^zDa z!?R$HVR??$-lDeIe@dSIo_e0nHaTCHZNgDc@3Cc%y!K$}#zN@RY*+XTd6uv(YSKC{AVzR!kL ztabLtirrQWuCa^>GLzkMjXQf(D2}f9p;+MjF%?$vz}Z^ADQ-D?Y{hQtocv)+rx;HkYu!6vV_WC+)6Fh^w9e^g2KzkY@k6o8{Wz<_w$AD9Gkz#uy4@Fs;@paD z#R=zYtYV?F=U411PR)jGoz*WiyWF47>TdUz0PRj%d?qcs`%C! zt+at}$CdbmiF$9eZ$jCewUX88J}tM=?%iWA(fF=nc|Mh$g50ogED+TulOJxjO$uwx3OST(%x8Pw7#bi-Ojn|^4$Q(pRht=Xji6ib}FzQSr9JNwECt2H?j%NeV6Cc7aj^9R7M zj`Uw5y(ZEid9STAn)`(BiYJ&U`{i|^=>A9alg8(F|BVU7E9c)3ieHIzW2FBY>5Y-z z6lsw3P4R}Jvc0z$%l)^`ZEp?sZIOO0(oI&6u~XclsBGir3ad3X8@6?Rdwa#MVw>Bo zv5Ivwv5c4EqqDyeid#`mO7^#6rStEqu!@tjVHG!L!zzx>#IimVU!8q-DBct4y%bDJ z-lJl%*SXDDvO_$^NY>Zh;q|+hyVllNpLe!4x3u>;`vDY#bnk}g&s{Iw>}M3kZ_kql zHLv?SUET3f&GEs^&+{$!94u(>(4I$L?&_?ivYF0UTI=H33ly&v>s3ZxWkdWs z-xX_YC@CKqpE8y)*IaVDp9#h1BHe3s%6a8=YOLm)v-g=@=8fi`v!4&e1IFWr=Be{vsIZ!= Z&enX^TzB@tie0T!XTLaw?IzR6{{_9uxK{uG literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/interface.gcno b/projects/kyawmyis/dominion/interface.gcno new file mode 100644 index 0000000000000000000000000000000000000000..4332d3448d203a6e22bd8b5bd9c7633f836d1efb GIT binary patch literal 13404 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 F{{W;@NzniR literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/playdom b/projects/kyawmyis/dominion/playdom new file mode 100755 index 0000000000000000000000000000000000000000..c4a59247cba60df7e5e4524b343c830258c73355 GIT binary patch literal 89272 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

?M25e2g8jqcGxd4?Gb2|ELrxp3J2szn4jF{a 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 literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/playdom.gcda b/projects/kyawmyis/dominion/playdom.gcda new file mode 100644 index 0000000000000000000000000000000000000000..35e6791acfd91cfa8381b74e880436b1efd8ce3b GIT binary patch literal 940 zcmZ|NF-`(e5XSMhf{FyRF_soohKdjmAq@wxBbpEkxB=Iov4MC2Pv99m0Eb~0=4UpO zxCI~onR(yLo886x+j2aeJpUYCXQhoV|@ygef3-asm}1HkN@yC z;_@%S^H3~5N%dF3<51kp)I3jTDOi3KajcGyKISkdy^Hgd|1kBtP25X;vGd(jZ;zdb zV|C`webf))9HuuZ?tSt#k9w@1Iq-G(@zvLU)X8J}#`od#5Q_W3e6jiXVs(6SANS>h kv${9m%q-?zQi=lAZ^c(vlJ+xpdpBk~jylK=n! literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/playdom.gcno b/projects/kyawmyis/dominion/playdom.gcno new file mode 100644 index 0000000000000000000000000000000000000000..7633eaf6bc382c109ef3b0f6bd81fd4b506d9c73 GIT binary patch literal 5344 zcmeH~*^*R65Qe*vT~KgEaA_IYMjR1QafP960f)^{L&XKgVUf_8K@b&`@Iu3v@Ww~r z349VBhWz@^?8?Y#g7BVZ+{MiwkoXC-?5z_uuW)M?0NPcdb>}zc+9F zv&^pZvzHd|AFy)yhuQ1r7U!qt?0zM%Gu=Htyxy<={|xlI%qiB@#cDBp=3dtCuCN>Y z(9d`z^zh}0p~vTnJ+6z@>I<&luhUtTV)O%lG%>VjRy$jhV(8(IB!(VMtfL203_W~f zV(8JVbGAOk(8D(*h91pB&K^!N^zh2?b06sN^K-!P^Si+C^L)VYAG0FUZ-!rg1Lpk+ zSMBj@{08tRolT?|{lhmU#yjIbpLp7tMBOJ5r4P;ZupB zN3+w}WQoCdjfv40{3VaY?@Id@o$XFB^zh2?b06sN^E1Nm^LxVZKeQs#T(Qnxaq_NT zW3J$P6XV_SUv>6QiNW_ddo9Hn8~%1;^o8biXK$n!diYz3p+~dd*_$bb9$p!K?gJfu zehwIZeoq+hmgj@<@!zw89ni&UtylQb#L%NT=J_frf# z{BUB7jb`BNgA_v#uM9u;fet@E2Mj;ICk#KYD;WMVD>BW|j5)^wbq1sJY=n%FKf4a- zCx1h%Hh-NJa(3in^yJsboh?5YwEosu9nVqwt6KU-gH>(h%$y6Q)ELX7Z&OzbY*4s=H`gzC|D{bBWb{dqWzPw9Fw^wdCVw(ynz-wOgCe?xf`$ z$EtQh*lTI|ZLq2(pEr}1^B$|(ZNgql%UZ&!cDu0GTC02)G!tVTHWO>#2}HzLr_D4r z>lUkH?-2G{+W3B`+HvcPy?|BiE@7|LZ+vf5?PSq1Px1XxwQ)|xIm9{BzF+7_W5s@} z?Z;`^Z&=mFS*7Tp%NpXF1*=+edOnkeB7YY4F;?5ObBn0@k2$Vd&ZvAQ(IVb8_Hu30 z&M0Yl{@BY^8)p?~Q8TTlx~FN|Ya+WF4F8+O9<6WJ(S=CMp zd#yQ)eOk4LOx3r-dDTq)$9}DCIKP^y|Jbip8|PX($7rekW1rPFoM+9X-Ra<7TJluv zv#RAxoUwAu%5f{rG)C;X+U`UX+MV8)J%?58Nn@w1d_-_$S~I&xJ~v|Q*=Ax>4cMK= zV^3psypN52V&zkUBh&lD`l@X{8|kz+x$4vaU<Q%RSk=e3g`!#;Gjf(_|1|!WmA^fnFLwYeZ&;TA literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/player b/projects/kyawmyis/dominion/player new file mode 100755 index 0000000000000000000000000000000000000000..e4b65928ed6420a721363092e528df7ce6854696 GIT binary patch literal 114740 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�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 z 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 RoZGWuPHCX2LXLYMM2gTvBSa zMty{WbX^>CymAxe7sxM^UnI}0ckW!bIy}rk*NDxGN6&d!n6nI0Yc+@mxpsEQp${(PsD(bnbEy__IvXQH z4tu_)LN}{=1n#YhWCJ(X~f-0 z^0i9u3FM1IE`NX6`vAb^!+T|t^OL<#^FfaqabANpBi<%Av%1V-swnjTy(7jB}}Lmt{HTh#sFE%o698 zd!P0f`cl`HWjSi0=VuKKX1(0Z_7XK$xU$;&R3Ck%Ypb#xwa{aIm`28NztmjgTBrAE z9nsfi8a&Ke*SfMCW1>fmIIjUmoX-P|IKOu^;tg^$d$z>+GlL_}_YN9yzW>mO^Rt9T zyj5;yV-V+O8jd)B@1POq?>{u+xbEzkopLi9gZT0!>Gu%V_O(Wx_fy?P^7-$w^o~jI zj_Jy$v!Bj%IU21X^lGHb?I5eYpzu8D*4s&Yvk9;uajRd z-y`pl-z48FZ<*cWAQxiI$PO1bxPrY|`abzB@>`v;&cL<(iqbt}$(htjTlOK`aE^nF5e~b%p{-rsM ztzeI~it3ZqWe;Mp?lF_Swe!I5FD$ahrQOk+Nll~9vl-`Mb?Nt9 zyzX9s_sQ>+f3(T+!R9l; zwa7nKU?*0vj~7^ePhzodiRJet7TG6E_SWXh`y7kx36s4wc9KW`#z&#GWwmi~(8th3s)EBIKOb2g`feO3Bv^4C3Y zot^)=uEljZCH)QgoAS4uvCif-&$W2nI|a6_pDgzN`g`*CJ#U@OrQNkSm&kHH z7F4hwNdHj&k^Ez4th4>r;aVKy6X~A@p8dA4g8!_*rvDie%GlE%^_F#cRGc*;`|mcof-h3hdH;vdnu~1^cb^@8sWm-a4Dha@XQqO6-aX z_6OIkv$`w$$#S+=Rj@xw|H*UKS?$#od}OJ;rh@%h`Y)cd&T4m7@R4P`*H*BoQm^mOLL2d;3CE~lsVHO}AoSKuGToPPTl$r?k8ORNMP&GgbZYRtP7!8sG0T>@- zCKQ0f4dl0mZ3;&~;sK>#9|Bnm8MS~UOf8HC3V{J3J}z}Iaca>>?g0A*6i!8TX1_q< y?x_gBfW)x?a2$iu4%bH69#A-hq!yPTryV6Mng&p4AuJt%+yIMD9PU|+EDivU=`%wB literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/rngs.gcno b/projects/kyawmyis/dominion/rngs.gcno new file mode 100644 index 0000000000000000000000000000000000000000..f3de0058368fcf70e406cc75125f561f6e8dd81e GIT binary patch literal 3660 zcmb_eOKTKC5bp8));}P4_8_7nqM%trh~8pWG(K@nhIoh@+}#)-81$x)n-B2dMSMh5 zG%E3yiypvPEAO}f|}{7{<^xls=8*zo5Q0!_w3#``K&b`Lde$319YYN zb7qCS2OG_i@v9+V+-i=tcMXTI7l2U9*2H(!qc>aGoyz_~db8Csh75ZkVnR?n^sC|w z9;yQ-)j@_WrM_$(hw`?*9yIz8`m&88)1MS~NahX;A4%50HvP40dK?_jV{u0v9M5BM zy(L`8Hi!≥k-U4!Z+mjb^8w=OgX%8T;e9TExfUk{*73u#e3Ta)3C)PoAxawa!7$ z^AtHz`_LD4qB>ww9ptsbN{WMweU(&)y;-BkCw(Fcx~(F3IX)r!LE%%vr-g@v&j_Ct zJ||p|))V)(IZAQxg+5r^dC^}e49ZAtGENqI(ZMl}7I(?PF^(43aBz&R#ieIKY?)h& zyIist;vK^L(63|PaGrWTmJfI8omSqEPEoGSX(;|vuVC!FnzVDshpkEW5nveCs@g$5 zz1n#w`bWYARo94z^J?UAVN6EV_3@;H(;f|bcjtC|M;->)E(MK08SIX~K4fMJbqk+G8E)1Cn=>YO#axr?T+ws)Yn zDyc2x-RfWq@+JiZd^eO751Dg3FJ#^`>fl4_H)QlECBKJN)#11-y2hpPU0sJQ2giIM zH~gN<=fqHT9d-!m+wAsf*gu)KJKlfi)3~OV@%)8}<&2hku7&?S ztWEZl<@7ROaYo()_6NwwjgszZdl>7Mc-zD1hpk)IB=NR~QCHQwSbx0R^vc%Rb1LJz z`hOa@7s4-vUqvh*)%_~P;arFt$olYFW~ zdnfw$!XJb`3eO6E5-v!6@%mVbLma>$y9aQeqm~b~$?urOejy~j6~|h!xH$*s^{=lb HoC<#clgi^) literal 0 HcmV?d00001 From c3908371948c22c7cb56e1ee08085d4346876b81 Mon Sep 17 00:00:00 2001 From: Stuart Kyawmyint Date: Mon, 4 Nov 2019 17:02:33 -0800 Subject: [PATCH 4/6] Revert "Assignment 2 - Refactoring and Bugs" This reverts commit 66c2df4c176505e489070b79211f6b1d16921ffe. --- dominion/.idea/codeStyles/Project.xml | 29 - dominion/.idea/dominion.iml | 2 - dominion/.idea/misc.xml | 7 - dominion/.idea/modules.xml | 8 - dominion/.idea/vcs.xml | 6 - dominion/.idea/workspace.xml | 198 ------ dominion/CMakeLists.txt | 19 - dominion/cmake-build-debug/CMakeCache.txt | 325 --------- .../CMakeFiles/3.12.2/CMakeCCompiler.cmake | 73 -- .../3.12.2/CMakeDetermineCompilerABI_C.bin | Bin 4304 -> 0 bytes .../CMakeFiles/3.12.2/CMakeSystem.cmake | 15 - .../3.12.2/CompilerIdC/CMakeCCompilerId.c | 623 ------------------ .../CMakeDirectoryInformation.cmake | 16 - .../CMakeFiles/CMakeOutput.log | 150 ----- .../CMakeFiles/Makefile.cmake | 102 --- .../cmake-build-debug/CMakeFiles/Makefile2 | 113 ---- .../cmake-build-debug/CMakeFiles/Progress/1 | 1 - .../cmake-build-debug/CMakeFiles/Progress/2 | 1 - .../cmake-build-debug/CMakeFiles/Progress/3 | 1 - .../cmake-build-debug/CMakeFiles/Progress/4 | 1 - .../cmake-build-debug/CMakeFiles/Progress/5 | 1 - .../cmake-build-debug/CMakeFiles/Progress/6 | 1 - .../cmake-build-debug/CMakeFiles/Progress/7 | 1 - .../cmake-build-debug/CMakeFiles/Progress/8 | 1 - .../CMakeFiles/Progress/count.txt | 1 - .../CMakeFiles/TargetDirectories.txt | 3 - .../CMakeFiles/clion-environment.txt | 3 - .../CMakeFiles/clion-log.txt | 11 - .../CMakeFiles/cmake.check_cache | 1 - .../CMakeFiles/dominion.dir/C.includecache | 112 ---- .../CMakeFiles/dominion.dir/DependInfo.cmake | 27 - .../CMakeFiles/dominion.dir/build.make | 188 ------ .../CMakeFiles/dominion.dir/cmake_clean.cmake | 16 - .../CMakeFiles/dominion.dir/depend.internal | 33 - .../CMakeFiles/dominion.dir/depend.make | 33 - .../CMakeFiles/dominion.dir/flags.make | 10 - .../CMakeFiles/dominion.dir/link.txt | 1 - .../CMakeFiles/dominion.dir/progress.make | 9 - .../CMakeFiles/feature_tests.bin | Bin 4288 -> 0 bytes .../CMakeFiles/feature_tests.c | 34 - .../CMakeFiles/progress.marks | 1 - dominion/cmake-build-debug/Makefile | 358 ---------- .../cmake-build-debug/cmake_install.cmake | 44 -- dominion/cmake-build-debug/dominion.cbp | 120 ---- projects/kyawmyis/dominion/.cproject | 44 -- .../dominion/.idea/codeStyles/Project.xml | 29 - projects/kyawmyis/dominion/.idea/dominion.iml | 2 - projects/kyawmyis/dominion/.idea/misc.xml | 7 - projects/kyawmyis/dominion/.idea/modules.xml | 8 - projects/kyawmyis/dominion/.idea/vcs.xml | 6 - .../kyawmyis/dominion/.idea/workspace.xml | 280 -------- projects/kyawmyis/dominion/.project | 27 - .../dominion/.settings/language.settings.xml | 15 - projects/kyawmyis/dominion/dominion.c | 565 +++++++--------- projects/kyawmyis/dominion/dominion.gcda | Bin 7856 -> 0 bytes projects/kyawmyis/dominion/dominion.gcno | Bin 44916 -> 0 bytes projects/kyawmyis/dominion/interface.gcno | Bin 13404 -> 0 bytes projects/kyawmyis/dominion/playdom | Bin 89272 -> 0 bytes projects/kyawmyis/dominion/playdom.gcda | Bin 940 -> 0 bytes projects/kyawmyis/dominion/playdom.gcno | Bin 5344 -> 0 bytes projects/kyawmyis/dominion/player | Bin 114740 -> 0 bytes projects/kyawmyis/dominion/player.gcno | Bin 6072 -> 0 bytes projects/kyawmyis/dominion/rngs.gcda | Bin 816 -> 0 bytes projects/kyawmyis/dominion/rngs.gcno | Bin 3660 -> 0 bytes 64 files changed, 240 insertions(+), 3442 deletions(-) delete mode 100644 dominion/.idea/codeStyles/Project.xml delete mode 100644 dominion/.idea/dominion.iml delete mode 100644 dominion/.idea/misc.xml delete mode 100644 dominion/.idea/modules.xml delete mode 100644 dominion/.idea/vcs.xml delete mode 100644 dominion/.idea/workspace.xml delete mode 100644 dominion/CMakeLists.txt delete mode 100644 dominion/cmake-build-debug/CMakeCache.txt delete mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeCCompiler.cmake delete mode 100755 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeDetermineCompilerABI_C.bin delete mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeSystem.cmake delete mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/CMakeCCompilerId.c delete mode 100644 dominion/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake delete mode 100644 dominion/cmake-build-debug/CMakeFiles/CMakeOutput.log delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Makefile.cmake delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Makefile2 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/1 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/2 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/3 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/4 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/5 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/6 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/7 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/8 delete mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/count.txt delete mode 100644 dominion/cmake-build-debug/CMakeFiles/TargetDirectories.txt delete mode 100644 dominion/cmake-build-debug/CMakeFiles/clion-environment.txt delete mode 100644 dominion/cmake-build-debug/CMakeFiles/clion-log.txt delete mode 100644 dominion/cmake-build-debug/CMakeFiles/cmake.check_cache delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/C.includecache delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/build.make delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/cmake_clean.cmake delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.internal delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.make delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/flags.make delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/link.txt delete mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/progress.make delete mode 100755 dominion/cmake-build-debug/CMakeFiles/feature_tests.bin delete mode 100644 dominion/cmake-build-debug/CMakeFiles/feature_tests.c delete mode 100644 dominion/cmake-build-debug/CMakeFiles/progress.marks delete mode 100644 dominion/cmake-build-debug/Makefile delete mode 100644 dominion/cmake-build-debug/cmake_install.cmake delete mode 100644 dominion/cmake-build-debug/dominion.cbp delete mode 100644 projects/kyawmyis/dominion/.cproject delete mode 100644 projects/kyawmyis/dominion/.idea/codeStyles/Project.xml delete mode 100644 projects/kyawmyis/dominion/.idea/dominion.iml delete mode 100644 projects/kyawmyis/dominion/.idea/misc.xml delete mode 100644 projects/kyawmyis/dominion/.idea/modules.xml delete mode 100644 projects/kyawmyis/dominion/.idea/vcs.xml delete mode 100644 projects/kyawmyis/dominion/.idea/workspace.xml delete mode 100644 projects/kyawmyis/dominion/.project delete mode 100644 projects/kyawmyis/dominion/.settings/language.settings.xml delete mode 100644 projects/kyawmyis/dominion/dominion.gcda delete mode 100644 projects/kyawmyis/dominion/dominion.gcno delete mode 100644 projects/kyawmyis/dominion/interface.gcno delete mode 100755 projects/kyawmyis/dominion/playdom delete mode 100644 projects/kyawmyis/dominion/playdom.gcda delete mode 100644 projects/kyawmyis/dominion/playdom.gcno delete mode 100755 projects/kyawmyis/dominion/player delete mode 100644 projects/kyawmyis/dominion/player.gcno delete mode 100644 projects/kyawmyis/dominion/rngs.gcda delete mode 100644 projects/kyawmyis/dominion/rngs.gcno diff --git a/dominion/.idea/codeStyles/Project.xml b/dominion/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626c2..000000000 --- a/dominion/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dominion/.idea/dominion.iml b/dominion/.idea/dominion.iml deleted file mode 100644 index f08604bb6..000000000 --- a/dominion/.idea/dominion.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/dominion/.idea/misc.xml b/dominion/.idea/misc.xml deleted file mode 100644 index 8822db8f1..000000000 --- a/dominion/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/dominion/.idea/modules.xml b/dominion/.idea/modules.xml deleted file mode 100644 index b6bbcd7c9..000000000 --- a/dominion/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/dominion/.idea/vcs.xml b/dominion/.idea/vcs.xml deleted file mode 100644 index 6c0b86358..000000000 --- a/dominion/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/dominion/.idea/workspace.xml b/dominion/.idea/workspace.xml deleted file mode 100644 index ab8b414c4..000000000 --- a/dominion/.idea/workspace.xml +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1570996744459 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/projects/kyawmyis/dominion/.project b/projects/kyawmyis/dominion/.project deleted file mode 100644 index d94116622..000000000 --- a/projects/kyawmyis/dominion/.project +++ /dev/null @@ -1,27 +0,0 @@ - - - dominion - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/projects/kyawmyis/dominion/.settings/language.settings.xml b/projects/kyawmyis/dominion/.settings/language.settings.xml deleted file mode 100644 index e527cccd8..000000000 --- a/projects/kyawmyis/dominion/.settings/language.settings.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/projects/kyawmyis/dominion/dominion.c b/projects/kyawmyis/dominion/dominion.c index 855089471..c94e2edb9 100644 --- a/projects/kyawmyis/dominion/dominion.c +++ b/projects/kyawmyis/dominion/dominion.c @@ -681,301 +681,6 @@ int getCost(int cardNumber) return -1; } - -/////////////////////////////////////////////////////////////////////////////// -// The following code below is the refactored card effect for the Baron card // -/////////////////////////////////////////////////////////////////////////////// -int baronEffect(struct gameState *state, int choice1, int currentPlayer){ - - state->numBuys++;//Increase buys by 1! - if (choice1 > 0) { //Boolean true or going to discard an estate - int p = 0;//Iterator for hand! - int card_not_discarded = 1;//Flag for discard set! - while(card_not_discarded) { - if (state->hand[currentPlayer][p] == estate) { //Found an estate card! - ////////////ERROR 1 - equal instead of addition/////////////// - state->coins = 4;//Add 4 coins to the amount of coins - state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; - state->discardCount[currentPlayer]++; - for (; p < state->handCount[currentPlayer]; p++) { - state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; - } - state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; - state->handCount[currentPlayer]--; - card_not_discarded = 0;//Exit the loop - } - else if (p > state->handCount[currentPlayer]) { - if(DEBUG) { - printf("No estate cards in your hand, invalid choice\n"); - printf("Must gain an estate if there are any\n"); - } - if (supplyCount(estate, state) > 0) { - gainCard(estate, state, 0, currentPlayer); - - state->supplyCount[estate]--;//Decrement estates - if (supplyCount(estate, state) == 0) { - isGameOver(state); - } - } - card_not_discarded = 0;//Exit the loop - } - - else { - p++;//Next card - } - } - } - - else { - //////ERROR 2 - check if supply of estate less than 0 instead ///////// - if (supplyCount(estate, state) < 0) { - gainCard(estate, state, 0, currentPlayer);//Gain an estate - - state->supplyCount[estate]--;//Decrement Estates - if (supplyCount(estate, state) == 0) { - isGameOver(state); - } - } - } - return 0; -} - - -//////////////////////////////////////////////////////////////////////////////// -// The following code below is the refactored card effect for the Minion card // -//////////////////////////////////////////////////////////////////////////////// -int minionEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2) { - - ////////ERROR 3 - action added by 2 instead of 1. - //+1 action - state->numActions+=2; - - //discard card from hand - discardCard(handPos, currentPlayer, state, 0); - - if (choice1) - { - state->coins = state->coins + 2; - } - else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 - { - //discard hand - while(numHandCards(state) > 0) - { - discardCard(handPos, currentPlayer, state, 0); - } - - ////////ERROR 4 - less-than equal to in the counter////// - //draw 4 - for (int i = 0; i <= 4; i++) - { - drawCard(currentPlayer, state); - } - - //other players discard hand and redraw if hand size > 4 - for (int i = 0; i < state->numPlayers; i++) - { - if (i != currentPlayer) - { - if ( state->handCount[i] > 4 ) - { - //discard hand - while( state->handCount[i] > 0 ) - { - discardCard(handPos, i, state, 0); - } - - //draw 4 - for (int j = 0; j < 4; j++) - { - drawCard(i, state); - } - } - } - } - - } - return 0; - -} - -//////////////////////////////////////////////////////////////////////////////////// -// The following code below is the refactored card effect for the Ambassador card // -//////////////////////////////////////////////////////////////////////////////////// - -int ambassadorEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2){ - - int j = 0; //used to check if player has enough cards to discard - - //////////ERROR 5 - choice2 must be less than 5 and greater than -1. Does not follow logic of 0,1,2 cards return ///////// - if (choice2 > 4 || choice2 < 0) - { - return -1; - } - - if (choice1 == handPos) - { - return -1; - } - - for (int i = 0; i < state->handCount[currentPlayer]; i++) - { - if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) - { - j++; - } - } - if (j < choice2) - { - return -1; - } - - if (DEBUG) - printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); - - //increase supply count for choosen card by amount being discarded - state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; - - //each other player gains a copy of revealed card - for (int i = 0; i < state->numPlayers; i++) - { - /////////ERROR 6 - Conditional statement equal to instead of not equal to/////// - if (i == currentPlayer) - { - gainCard(state->hand[currentPlayer][choice1], state, 0, i); - } - } - - //discard played card from hand - discardCard(handPos, currentPlayer, state, 0); - - //trash copies of cards returned to supply - for (j = 0; j < choice2; j++) - { - for (int i = 0; i < state->handCount[currentPlayer]; i++) - { - if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) - { - discardCard(i, currentPlayer, state, 1); - break; - } - } - } - - return 0; - -} - -///////////////////////////////////////////////////////////////////////////////// -// The following code below is the refactored card effect for the Tribute card // -///////////////////////////////////////////////////////////////////////////////// -int tributeEffect(struct gameState *state, int currentPlayer, int tributeRevealedCards[2], int nextPlayer) { - - if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { - if (state->deckCount[nextPlayer] > 0) { - tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deckCount[nextPlayer]--; - } - else if (state->discardCount[nextPlayer] > 0) { - tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; - state->discardCount[nextPlayer]--; - } - else { - //No Card to Reveal - if (DEBUG) { - printf("No cards to reveal\n"); - } - } - } - - else { - if (state->deckCount[nextPlayer] == 0) { - for (int i = 0; i < state->discardCount[nextPlayer]; i++) { - state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck - state->deckCount[nextPlayer]++; - state->discard[nextPlayer][i] = -1; - state->discardCount[nextPlayer]--; - } - - shuffle(nextPlayer,state);//Shuffle the deck - } - tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; - state->deckCount[nextPlayer]--; - tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; - state->deckCount[nextPlayer]--; - } - - if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one - state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; - state->playedCardCount++; - tributeRevealedCards[1] = -1; - } - - for (int i = 0; i <= 2; i ++) { - if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards - //////////ERROR 7 - coins in state subtract by 2 //////////// - state->coins -= 2; - } - - //////////ERROR 8 - removed revealed card tributeRevealedCards[i]==estate//////////// - else if (tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found - drawCard(currentPlayer, state); - drawCard(currentPlayer, state); - } - else { //Action Card - state->numActions = state->numActions + 2; - } - } - - return 0; -} - -/////////////////////////////////////////////////////////////////////////////// -// The following code below is the refactored card effect for the Mine card /// -/////////////////////////////////////////////////////////////////////////////// - -int mineEffect(struct gameState *state, int handPos, int choice1, int choice2, int currentPlayer){ - - int j = state->hand[currentPlayer][choice1]; //store card we will trash - - ////////ERROR 9 - changed the conditional statement to have silver instead of copper //////////// - if (state->hand[currentPlayer][choice1] < silver || state->hand[currentPlayer][choice1] > gold) - { - return -1; - } - - if (choice2 > treasure_map || choice2 < curse) - { - return -1; - } - - if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) - { - return -1; - } - - /////////ERROR 10 - changed the toFlag in the gainCard() function to 0 instead of 2. Adds to discard pile instead of hand. - gainCard(choice2, state, 0, currentPlayer); - - //discard card from hand - discardCard(handPos, currentPlayer, state, 0); - - //discard trashed card - for (int i = 0; i < state->handCount[currentPlayer]; i++) - { - if (state->hand[currentPlayer][i] == j) - { - discardCard(i, currentPlayer, state, 0); - break; - } - } - - return 0; -} - - int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState *state, int handPos, int *bonus) { int i; @@ -1100,12 +805,40 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState case gardens: return -1; - ///////////////////////////////////////////// - // MODIFIED TO CALL FUNCTION mineEffect() // - // /////////////////////////////////////////// case mine: + j = state->hand[currentPlayer][choice1]; //store card we will trash + + if (state->hand[currentPlayer][choice1] < copper || state->hand[currentPlayer][choice1] > gold) + { + return -1; + } + + if (choice2 > treasure_map || choice2 < curse) + { + return -1; + } + + if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) + { + return -1; + } + + gainCard(choice2, state, 2, currentPlayer); + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + //discard trashed card + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == j) + { + discardCard(i, currentPlayer, state, 0); + break; + } + } - return mineEffect(state, handPos, choice1, choice2, currentPlayer); + return 0; case remodel: j = state->hand[currentPlayer][choice1]; //store card we will trash @@ -1155,12 +888,58 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; - ///////////////////////////////////////////// - // MODIFIED TO CALL FUNCTION baronEffect() // - ///////////////////////////////////////////// case baron: + state->numBuys++;//Increase buys by 1! + if (choice1 > 0) { //Boolean true or going to discard an estate + int p = 0;//Iterator for hand! + int card_not_discarded = 1;//Flag for discard set! + while(card_not_discarded) { + if (state->hand[currentPlayer][p] == estate) { //Found an estate card! + state->coins += 4;//Add 4 coins to the amount of coins + state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; + state->discardCount[currentPlayer]++; + for (; p < state->handCount[currentPlayer]; p++) { + state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; + } + state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; + state->handCount[currentPlayer]--; + card_not_discarded = 0;//Exit the loop + } + else if (p > state->handCount[currentPlayer]) { + if(DEBUG) { + printf("No estate cards in your hand, invalid choice\n"); + printf("Must gain an estate if there are any\n"); + } + if (supplyCount(estate, state) > 0) { + gainCard(estate, state, 0, currentPlayer); + + state->supplyCount[estate]--;//Decrement estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + card_not_discarded = 0;//Exit the loop + } + + else { + p++;//Next card + } + } + } + + else { + if (supplyCount(estate, state) > 0) { + gainCard(estate, state, 0, currentPlayer);//Gain an estate + + state->supplyCount[estate]--;//Decrement Estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + } - return baronEffect(state, choice1, currentPlayer); + + return 0; case great_hall: //+1 Card @@ -1173,12 +952,55 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; - ////////////////////////////////////////////// - // MODIFIED TO CALL FUNCTION minionEffect() // - ////////////////////////////////////////////// case minion: + //+1 action + state->numActions++; + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + if (choice1) + { + state->coins = state->coins + 2; + } + else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 + { + //discard hand + while(numHandCards(state) > 0) + { + discardCard(handPos, currentPlayer, state, 0); + } - return minionEffect(state, handPos, currentPlayer, choice1, choice2); + //draw 4 + for (i = 0; i < 4; i++) + { + drawCard(currentPlayer, state); + } + + //other players discard hand and redraw if hand size > 4 + for (i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + if ( state->handCount[i] > 4 ) + { + //discard hand + while( state->handCount[i] > 0 ) + { + discardCard(handPos, i, state, 0); + } + + //draw 4 + for (j = 0; j < 4; j++) + { + drawCard(i, state); + } + } + } + } + + } + return 0; case steward: if (choice1 == 1) @@ -1203,19 +1025,122 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; - ////////////////////////////////////////////////// - // MODIFIED TO CALL FUNCTION tributeEffect() // - ////////////////////////////////////////////////// case tribute: + if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { + if (state->deckCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deckCount[nextPlayer]--; + } + else if (state->discardCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; + state->discardCount[nextPlayer]--; + } + else { + //No Card to Reveal + if (DEBUG) { + printf("No cards to reveal\n"); + } + } + } + + else { + if (state->deckCount[nextPlayer] == 0) { + for (i = 0; i < state->discardCount[nextPlayer]; i++) { + state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck + state->deckCount[nextPlayer]++; + state->discard[nextPlayer][i] = -1; + state->discardCount[nextPlayer]--; + } + + shuffle(nextPlayer,state);//Shuffle the deck + } + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + } + + if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one + state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; + state->playedCardCount++; + tributeRevealedCards[1] = -1; + } + + for (i = 0; i <= 2; i ++) { + if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards + state->coins += 2; + } + + else if (tributeRevealedCards[i] == estate || tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found + drawCard(currentPlayer, state); + drawCard(currentPlayer, state); + } + else { //Action Card + state->numActions = state->numActions + 2; + } + } - return tributeEffect(state, currentPlayer, &tributeRevealedCards[2], nextPlayer); + return 0; - ////////////////////////////////////////////////// - // MODIFIED TO CALL FUNCTION ambassadorEffect() // - ////////////////////////////////////////////////// case ambassador: + j = 0; //used to check if player has enough cards to discard - return ambassadorEffect(state, handPos, currentPlayer, choice1, choice2); + if (choice2 > 2 || choice2 < 0) + { + return -1; + } + + if (choice1 == handPos) + { + return -1; + } + + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) + { + j++; + } + } + if (j < choice2) + { + return -1; + } + + if (DEBUG) + printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); + + //increase supply count for choosen card by amount being discarded + state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; + + //each other player gains a copy of revealed card + for (i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + gainCard(state->hand[currentPlayer][choice1], state, 0, i); + } + } + + //discard played card from hand + discardCard(handPos, currentPlayer, state, 0); + + //trash copies of cards returned to supply + for (j = 0; j < choice2; j++) + { + for (i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) + { + discardCard(i, currentPlayer, state, 1); + break; + } + } + } + + return 0; case cutpurse: @@ -1444,15 +1369,5 @@ int updateCoins(int player, struct gameState *state, int bonus) } - - - - - - - - - - //end of dominion.c diff --git a/projects/kyawmyis/dominion/dominion.gcda b/projects/kyawmyis/dominion/dominion.gcda deleted file mode 100644 index 5aa4086dfb784edf4fa9a38deebedd57a203b5d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7856 zcmeHLTWB0r7@o29(wNq&t+zC7S_*1uG)O?Jf?%{(5PeYFq9UE$olVB>&MY&#hDxCz z6h*P1LZI|%DtIYAsGtvCK=UB2Z?O-8pid$~XrUm|7t#Ma=X}fX%NQ3+n}j{E^PTTM z|Lt7o%m%gU0NU0CVktjJxLth*lgfU}@IdCkempHbXVk8*O_5ou3k z9O`RMc^PW`GQQ3^U_1FSCucsyH&sB&X}?POqdMC)r#}7AzeeUoq(7_|6wR-&VzZu5 zB`4BujnX40Qje(PkUKZsc$zO{&vqjH4mn4fYk7BXJAHB@?TMmh_9*sBuLfmBT?<6o+F@w?lI3(GTMg8DGpy-Z+m>eSYFw3h_+7kbe}<9!9=XL0l{5i*^3JTl_>389SUopS*SE4D711 zb{?+R!)jZI%+CvA!+84aAcrQ3=2lw%blam`;R3fXzxB>9Im1v+&VH|U0_My0M9wpO z(CLxWALCG7#u>Mdi)#cp&zv{SwR~}9-_K^bj{wgp>8H8V;4b;cv4byTomM)0ZP~lP zuo?`_+5BJS)LRI}uX)$t?A-M6{quO&WSv&4abP0p#CX}*Z<~9ihC-C8=@ZV@zns-_zp=edn{WG|&x{a$?cqPtxBRhUP!R`A}P+n%4tTA2)@ zxOku0ATq8wj+N%U%4uJQ;?I1e4IlP&T+A~Kgo7x9gWLb+x3+mm%5`@^%5oI3PFPW-=e+7p@QRu_Pr@hB%}z9UXR z&UUSjZ$lKG735axd0M|rPCX*?)V$1orE3^*NPeO8%lt4uBJ&n~v%c0z<-=bNAHw>Q z_w}AAj>FWPkh%XHo%Zo!j)0jLe3Sn4#@b=bOC?B?xcjl6`#UdYHcKy-c@N{xxcA`M z4cKQ*`IEgcfFjBL$Ch5d7DL8nZQdxE9R2ZE`#)xs;jbun<;(qBq>X0`k%=$F7t*6W zQS^O$Q{5!L-@e%K1Kue?vl3)kP)pM8h7oD*KQGUIxnv_?_T%Kfo|@)EA*{GS(n(Dz@}uXl?4Z=@>n AAfoLQTH_Fc1jh%_ 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%0AU~|VzpHweAy=bK|4CPv|=## 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 Z&enX^TzB@tie0T!XTLaw?IzR6{{_9uxK{uG diff --git a/projects/kyawmyis/dominion/interface.gcno b/projects/kyawmyis/dominion/interface.gcno deleted file mode 100644 index 4332d3448d203a6e22bd8b5bd9c7633f836d1efb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13404 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 F{{W;@NzniR diff --git a/projects/kyawmyis/dominion/playdom b/projects/kyawmyis/dominion/playdom deleted file mode 100755 index c4a59247cba60df7e5e4524b343c830258c73355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89272 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

?M25e2g8jqcGxd4?Gb2|ELrxp3J2szn4jF{a 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 diff --git a/projects/kyawmyis/dominion/playdom.gcda b/projects/kyawmyis/dominion/playdom.gcda deleted file mode 100644 index 35e6791acfd91cfa8381b74e880436b1efd8ce3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmZ|NF-`(e5XSMhf{FyRF_soohKdjmAq@wxBbpEkxB=Iov4MC2Pv99m0Eb~0=4UpO zxCI~onR(yLo886x+j2aeJpUYCXQhoV|@ygef3-asm}1HkN@yC z;_@%S^H3~5N%dF3<51kp)I3jTDOi3KajcGyKISkdy^Hgd|1kBtP25X;vGd(jZ;zdb zV|C`webf))9HuuZ?tSt#k9w@1Iq-G(@zvLU)X8J}#`od#5Q_W3e6jiXVs(6SANS>h kv${9m%q-?zQi=lAZ^c(vlJ+xpdpBk~jylK=n! diff --git a/projects/kyawmyis/dominion/playdom.gcno b/projects/kyawmyis/dominion/playdom.gcno deleted file mode 100644 index 7633eaf6bc382c109ef3b0f6bd81fd4b506d9c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmeH~*^*R65Qe*vT~KgEaA_IYMjR1QafP960f)^{L&XKgVUf_8K@b&`@Iu3v@Ww~r z349VBhWz@^?8?Y#g7BVZ+{MiwkoXC-?5z_uuW)M?0NPcdb>}zc+9F zv&^pZvzHd|AFy)yhuQ1r7U!qt?0zM%Gu=Htyxy<={|xlI%qiB@#cDBp=3dtCuCN>Y z(9d`z^zh}0p~vTnJ+6z@>I<&luhUtTV)O%lG%>VjRy$jhV(8(IB!(VMtfL203_W~f zV(8JVbGAOk(8D(*h91pB&K^!N^zh2?b06sN^K-!P^Si+C^L)VYAG0FUZ-!rg1Lpk+ zSMBj@{08tRolT?|{lhmU#yjIbpLp7tMBOJ5r4P;ZupB zN3+w}WQoCdjfv40{3VaY?@Id@o$XFB^zh2?b06sN^E1Nm^LxVZKeQs#T(Qnxaq_NT zW3J$P6XV_SUv>6QiNW_ddo9Hn8~%1;^o8biXK$n!diYz3p+~dd*_$bb9$p!K?gJfu zehwIZeoq+hmgj@<@!zw89ni&UtylQb#L%NT=J_frf# z{BUB7jb`BNgA_v#uM9u;fet@E2Mj;ICk#KYD;WMVD>BW|j5)^wbq1sJY=n%FKf4a- zCx1h%Hh-NJa(3in^yJsboh?5YwEosu9nVqwt6KU-gH>(h%$y6Q)ELX7Z&OzbY*4s=H`gzC|D{bBWb{dqWzPw9Fw^wdCVw(ynz-wOgCe?xf`$ z$EtQh*lTI|ZLq2(pEr}1^B$|(ZNgql%UZ&!cDu0GTC02)G!tVTHWO>#2}HzLr_D4r z>lUkH?-2G{+W3B`+HvcPy?|BiE@7|LZ+vf5?PSq1Px1XxwQ)|xIm9{BzF+7_W5s@} z?Z;`^Z&=mFS*7Tp%NpXF1*=+edOnkeB7YY4F;?5ObBn0@k2$Vd&ZvAQ(IVb8_Hu30 z&M0Yl{@BY^8)p?~Q8TTlx~FN|Ya+WF4F8+O9<6WJ(S=CMp zd#yQ)eOk4LOx3r-dDTq)$9}DCIKP^y|Jbip8|PX($7rekW1rPFoM+9X-Ra<7TJluv zv#RAxoUwAu%5f{rG)C;X+U`UX+MV8)J%?58Nn@w1d_-_$S~I&xJ~v|Q*=Ax>4cMK= zV^3psypN52V&zkUBh&lD`l@X{8|kz+x$4vaU<Q%RSk=e3g`!#;Gjf(_|1|!WmA^fnFLwYeZ&;TA diff --git a/projects/kyawmyis/dominion/player b/projects/kyawmyis/dominion/player deleted file mode 100755 index e4b65928ed6420a721363092e528df7ce6854696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114740 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�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 z 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 RoZGWuPHCX2LXLYMM2gTvBSa zMty{WbX^>CymAxe7sxM^UnI}0ckW!bIy}rk*NDxGN6&d!n6nI0Yc+@mxpsEQp${(PsD(bnbEy__IvXQH z4tu_)LN}{=1n#YhWCJ(X~f-0 z^0i9u3FM1IE`NX6`vAb^!+T|t^OL<#^FfaqabANpBi<%Av%1V-swnjTy(7jB}}Lmt{HTh#sFE%o698 zd!P0f`cl`HWjSi0=VuKKX1(0Z_7XK$xU$;&R3Ck%Ypb#xwa{aIm`28NztmjgTBrAE z9nsfi8a&Ke*SfMCW1>fmIIjUmoX-P|IKOu^;tg^$d$z>+GlL_}_YN9yzW>mO^Rt9T zyj5;yV-V+O8jd)B@1POq?>{u+xbEzkopLi9gZT0!>Gu%V_O(Wx_fy?P^7-$w^o~jI zj_Jy$v!Bj%IU21X^lGHb?I5eYpzu8D*4s&Yvk9;uajRd z-y`pl-z48FZ<*cWAQxiI$PO1bxPrY|`abzB@>`v;&cL<(iqbt}$(htjTlOK`aE^nF5e~b%p{-rsM ztzeI~it3ZqWe;Mp?lF_Swe!I5FD$ahrQOk+Nll~9vl-`Mb?Nt9 zyzX9s_sQ>+f3(T+!R9l; zwa7nKU?*0vj~7^ePhzodiRJet7TG6E_SWXh`y7kx36s4wc9KW`#z&#GWwmi~(8th3s)EBIKOb2g`feO3Bv^4C3Y zot^)=uEljZCH)QgoAS4uvCif-&$W2nI|a6_pDgzN`g`*CJ#U@OrQNkSm&kHH z7F4hwNdHj&k^Ez4th4>r;aVKy6X~A@p8dA4g8!_*rvDie%GlE%^_F#cRGc*;`|mcof-h3hdH;vdnu~1^cb^@8sWm-a4Dha@XQqO6-aX z_6OIkv$`w$$#S+=Rj@xw|H*UKS?$#od}OJ;rh@%h`Y)cd&T4m7@R4P`*H*BoQm^mOLL2d;3CE~lsVHO}AoSKuGToPPTl$r?k8ORNMP&GgbZYRtP7!8sG0T>@- zCKQ0f4dl0mZ3;&~;sK>#9|Bnm8MS~UOf8HC3V{J3J}z}Iaca>>?g0A*6i!8TX1_q< y?x_gBfW)x?a2$iu4%bH69#A-hq!yPTryV6Mng&p4AuJt%+yIMD9PU|+EDivU=`%wB diff --git a/projects/kyawmyis/dominion/rngs.gcno b/projects/kyawmyis/dominion/rngs.gcno deleted file mode 100644 index f3de0058368fcf70e406cc75125f561f6e8dd81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3660 zcmb_eOKTKC5bp8));}P4_8_7nqM%trh~8pWG(K@nhIoh@+}#)-81$x)n-B2dMSMh5 zG%E3yiypvPEAO}f|}{7{<^xls=8*zo5Q0!_w3#``K&b`Lde$319YYN zb7qCS2OG_i@v9+V+-i=tcMXTI7l2U9*2H(!qc>aGoyz_~db8Csh75ZkVnR?n^sC|w z9;yQ-)j@_WrM_$(hw`?*9yIz8`m&88)1MS~NahX;A4%50HvP40dK?_jV{u0v9M5BM zy(L`8Hi!≥k-U4!Z+mjb^8w=OgX%8T;e9TExfUk{*73u#e3Ta)3C)PoAxawa!7$ z^AtHz`_LD4qB>ww9ptsbN{WMweU(&)y;-BkCw(Fcx~(F3IX)r!LE%%vr-g@v&j_Ct zJ||p|))V)(IZAQxg+5r^dC^}e49ZAtGENqI(ZMl}7I(?PF^(43aBz&R#ieIKY?)h& zyIist;vK^L(63|PaGrWTmJfI8omSqEPEoGSX(;|vuVC!FnzVDshpkEW5nveCs@g$5 zz1n#w`bWYARo94z^J?UAVN6EV_3@;H(;f|bcjtC|M;->)E(MK08SIX~K4fMJbqk+G8E)1Cn=>YO#axr?T+ws)Yn zDyc2x-RfWq@+JiZd^eO751Dg3FJ#^`>fl4_H)QlECBKJN)#11-y2hpPU0sJQ2giIM zH~gN<=fqHT9d-!m+wAsf*gu)KJKlfi)3~OV@%)8}<&2hku7&?S ztWEZl<@7ROaYo()_6NwwjgszZdl>7Mc-zD1hpk)IB=NR~QCHQwSbx0R^vc%Rb1LJz z`hOa@7s4-vUqvh*)%_~P;arFt$olYFW~ zdnfw$!XJb`3eO6E5-v!6@%mVbLma>$y9aQeqm~b~$?urOejy~j6~|h!xH$*s^{=lb HoC<#clgi^) From a76795c1c761ad0e280703e02ef2bce1aac42b89 Mon Sep 17 00:00:00 2001 From: Stuart Kyawmyint Date: Mon, 4 Nov 2019 17:02:43 -0800 Subject: [PATCH 5/6] Revert "Revert "Assignment 2 - Refactoring and Bugs"" This reverts commit c3908371948c22c7cb56e1ee08085d4346876b81. --- dominion/.idea/codeStyles/Project.xml | 29 + dominion/.idea/dominion.iml | 2 + dominion/.idea/misc.xml | 7 + dominion/.idea/modules.xml | 8 + dominion/.idea/vcs.xml | 6 + dominion/.idea/workspace.xml | 198 ++++++ dominion/CMakeLists.txt | 19 + dominion/cmake-build-debug/CMakeCache.txt | 325 +++++++++ .../CMakeFiles/3.12.2/CMakeCCompiler.cmake | 73 ++ .../3.12.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 4304 bytes .../CMakeFiles/3.12.2/CMakeSystem.cmake | 15 + .../3.12.2/CompilerIdC/CMakeCCompilerId.c | 623 ++++++++++++++++++ .../CMakeDirectoryInformation.cmake | 16 + .../CMakeFiles/CMakeOutput.log | 150 +++++ .../CMakeFiles/Makefile.cmake | 102 +++ .../cmake-build-debug/CMakeFiles/Makefile2 | 113 ++++ .../cmake-build-debug/CMakeFiles/Progress/1 | 1 + .../cmake-build-debug/CMakeFiles/Progress/2 | 1 + .../cmake-build-debug/CMakeFiles/Progress/3 | 1 + .../cmake-build-debug/CMakeFiles/Progress/4 | 1 + .../cmake-build-debug/CMakeFiles/Progress/5 | 1 + .../cmake-build-debug/CMakeFiles/Progress/6 | 1 + .../cmake-build-debug/CMakeFiles/Progress/7 | 1 + .../cmake-build-debug/CMakeFiles/Progress/8 | 1 + .../CMakeFiles/Progress/count.txt | 1 + .../CMakeFiles/TargetDirectories.txt | 3 + .../CMakeFiles/clion-environment.txt | 3 + .../CMakeFiles/clion-log.txt | 11 + .../CMakeFiles/cmake.check_cache | 1 + .../CMakeFiles/dominion.dir/C.includecache | 112 ++++ .../CMakeFiles/dominion.dir/DependInfo.cmake | 27 + .../CMakeFiles/dominion.dir/build.make | 188 ++++++ .../CMakeFiles/dominion.dir/cmake_clean.cmake | 16 + .../CMakeFiles/dominion.dir/depend.internal | 33 + .../CMakeFiles/dominion.dir/depend.make | 33 + .../CMakeFiles/dominion.dir/flags.make | 10 + .../CMakeFiles/dominion.dir/link.txt | 1 + .../CMakeFiles/dominion.dir/progress.make | 9 + .../CMakeFiles/feature_tests.bin | Bin 0 -> 4288 bytes .../CMakeFiles/feature_tests.c | 34 + .../CMakeFiles/progress.marks | 1 + dominion/cmake-build-debug/Makefile | 358 ++++++++++ .../cmake-build-debug/cmake_install.cmake | 44 ++ dominion/cmake-build-debug/dominion.cbp | 120 ++++ projects/kyawmyis/dominion/.cproject | 44 ++ .../dominion/.idea/codeStyles/Project.xml | 29 + projects/kyawmyis/dominion/.idea/dominion.iml | 2 + projects/kyawmyis/dominion/.idea/misc.xml | 7 + projects/kyawmyis/dominion/.idea/modules.xml | 8 + projects/kyawmyis/dominion/.idea/vcs.xml | 6 + .../kyawmyis/dominion/.idea/workspace.xml | 280 ++++++++ projects/kyawmyis/dominion/.project | 27 + .../dominion/.settings/language.settings.xml | 15 + projects/kyawmyis/dominion/dominion.c | 565 +++++++++------- projects/kyawmyis/dominion/dominion.gcda | Bin 0 -> 7856 bytes projects/kyawmyis/dominion/dominion.gcno | Bin 0 -> 44916 bytes projects/kyawmyis/dominion/interface.gcno | Bin 0 -> 13404 bytes projects/kyawmyis/dominion/playdom | Bin 0 -> 89272 bytes projects/kyawmyis/dominion/playdom.gcda | Bin 0 -> 940 bytes projects/kyawmyis/dominion/playdom.gcno | Bin 0 -> 5344 bytes projects/kyawmyis/dominion/player | Bin 0 -> 114740 bytes projects/kyawmyis/dominion/player.gcno | Bin 0 -> 6072 bytes projects/kyawmyis/dominion/rngs.gcda | Bin 0 -> 816 bytes projects/kyawmyis/dominion/rngs.gcno | Bin 0 -> 3660 bytes 64 files changed, 3442 insertions(+), 240 deletions(-) create mode 100644 dominion/.idea/codeStyles/Project.xml create mode 100644 dominion/.idea/dominion.iml create mode 100644 dominion/.idea/misc.xml create mode 100644 dominion/.idea/modules.xml create mode 100644 dominion/.idea/vcs.xml create mode 100644 dominion/.idea/workspace.xml create mode 100644 dominion/CMakeLists.txt create mode 100644 dominion/cmake-build-debug/CMakeCache.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeCCompiler.cmake create mode 100755 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeDetermineCompilerABI_C.bin create mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CMakeSystem.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/3.12.2/CompilerIdC/CMakeCCompilerId.c create mode 100644 dominion/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/CMakeOutput.log create mode 100644 dominion/cmake-build-debug/CMakeFiles/Makefile.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/Makefile2 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/1 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/2 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/3 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/4 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/5 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/6 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/7 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/8 create mode 100644 dominion/cmake-build-debug/CMakeFiles/Progress/count.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/TargetDirectories.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/clion-environment.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/clion-log.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/cmake.check_cache create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/C.includecache create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/DependInfo.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/build.make create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/cmake_clean.cmake create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.internal create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/depend.make create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/flags.make create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/link.txt create mode 100644 dominion/cmake-build-debug/CMakeFiles/dominion.dir/progress.make create mode 100755 dominion/cmake-build-debug/CMakeFiles/feature_tests.bin create mode 100644 dominion/cmake-build-debug/CMakeFiles/feature_tests.c create mode 100644 dominion/cmake-build-debug/CMakeFiles/progress.marks create mode 100644 dominion/cmake-build-debug/Makefile create mode 100644 dominion/cmake-build-debug/cmake_install.cmake create mode 100644 dominion/cmake-build-debug/dominion.cbp create mode 100644 projects/kyawmyis/dominion/.cproject create mode 100644 projects/kyawmyis/dominion/.idea/codeStyles/Project.xml create mode 100644 projects/kyawmyis/dominion/.idea/dominion.iml create mode 100644 projects/kyawmyis/dominion/.idea/misc.xml create mode 100644 projects/kyawmyis/dominion/.idea/modules.xml create mode 100644 projects/kyawmyis/dominion/.idea/vcs.xml create mode 100644 projects/kyawmyis/dominion/.idea/workspace.xml create mode 100644 projects/kyawmyis/dominion/.project create mode 100644 projects/kyawmyis/dominion/.settings/language.settings.xml create mode 100644 projects/kyawmyis/dominion/dominion.gcda create mode 100644 projects/kyawmyis/dominion/dominion.gcno create mode 100644 projects/kyawmyis/dominion/interface.gcno create mode 100755 projects/kyawmyis/dominion/playdom create mode 100644 projects/kyawmyis/dominion/playdom.gcda create mode 100644 projects/kyawmyis/dominion/playdom.gcno create mode 100755 projects/kyawmyis/dominion/player create mode 100644 projects/kyawmyis/dominion/player.gcno create mode 100644 projects/kyawmyis/dominion/rngs.gcda create mode 100644 projects/kyawmyis/dominion/rngs.gcno diff --git a/dominion/.idea/codeStyles/Project.xml b/dominion/.idea/codeStyles/Project.xml new file mode 100644 index 000000000..30aa626c2 --- /dev/null +++ b/dominion/.idea/codeStyles/Project.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dominion/.idea/dominion.iml b/dominion/.idea/dominion.iml new file mode 100644 index 000000000..f08604bb6 --- /dev/null +++ b/dominion/.idea/dominion.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dominion/.idea/misc.xml b/dominion/.idea/misc.xml new file mode 100644 index 000000000..8822db8f1 --- /dev/null +++ b/dominion/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/dominion/.idea/modules.xml b/dominion/.idea/modules.xml new file mode 100644 index 000000000..b6bbcd7c9 --- /dev/null +++ b/dominion/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/dominion/.idea/vcs.xml b/dominion/.idea/vcs.xml new file mode 100644 index 000000000..6c0b86358 --- /dev/null +++ b/dominion/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dominion/.idea/workspace.xml b/dominion/.idea/workspace.xml new file mode 100644 index 000000000..ab8b414c4 --- /dev/null +++ b/dominion/.idea/workspace.xml @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1570996744459 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/projects/kyawmyis/dominion/.project b/projects/kyawmyis/dominion/.project new file mode 100644 index 000000000..d94116622 --- /dev/null +++ b/projects/kyawmyis/dominion/.project @@ -0,0 +1,27 @@ + + + dominion + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/projects/kyawmyis/dominion/.settings/language.settings.xml b/projects/kyawmyis/dominion/.settings/language.settings.xml new file mode 100644 index 000000000..e527cccd8 --- /dev/null +++ b/projects/kyawmyis/dominion/.settings/language.settings.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/projects/kyawmyis/dominion/dominion.c b/projects/kyawmyis/dominion/dominion.c index c94e2edb9..855089471 100644 --- a/projects/kyawmyis/dominion/dominion.c +++ b/projects/kyawmyis/dominion/dominion.c @@ -681,6 +681,301 @@ int getCost(int cardNumber) return -1; } + +/////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Baron card // +/////////////////////////////////////////////////////////////////////////////// +int baronEffect(struct gameState *state, int choice1, int currentPlayer){ + + state->numBuys++;//Increase buys by 1! + if (choice1 > 0) { //Boolean true or going to discard an estate + int p = 0;//Iterator for hand! + int card_not_discarded = 1;//Flag for discard set! + while(card_not_discarded) { + if (state->hand[currentPlayer][p] == estate) { //Found an estate card! + ////////////ERROR 1 - equal instead of addition/////////////// + state->coins = 4;//Add 4 coins to the amount of coins + state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; + state->discardCount[currentPlayer]++; + for (; p < state->handCount[currentPlayer]; p++) { + state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; + } + state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; + state->handCount[currentPlayer]--; + card_not_discarded = 0;//Exit the loop + } + else if (p > state->handCount[currentPlayer]) { + if(DEBUG) { + printf("No estate cards in your hand, invalid choice\n"); + printf("Must gain an estate if there are any\n"); + } + if (supplyCount(estate, state) > 0) { + gainCard(estate, state, 0, currentPlayer); + + state->supplyCount[estate]--;//Decrement estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + card_not_discarded = 0;//Exit the loop + } + + else { + p++;//Next card + } + } + } + + else { + //////ERROR 2 - check if supply of estate less than 0 instead ///////// + if (supplyCount(estate, state) < 0) { + gainCard(estate, state, 0, currentPlayer);//Gain an estate + + state->supplyCount[estate]--;//Decrement Estates + if (supplyCount(estate, state) == 0) { + isGameOver(state); + } + } + } + return 0; +} + + +//////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Minion card // +//////////////////////////////////////////////////////////////////////////////// +int minionEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2) { + + ////////ERROR 3 - action added by 2 instead of 1. + //+1 action + state->numActions+=2; + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + if (choice1) + { + state->coins = state->coins + 2; + } + else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 + { + //discard hand + while(numHandCards(state) > 0) + { + discardCard(handPos, currentPlayer, state, 0); + } + + ////////ERROR 4 - less-than equal to in the counter////// + //draw 4 + for (int i = 0; i <= 4; i++) + { + drawCard(currentPlayer, state); + } + + //other players discard hand and redraw if hand size > 4 + for (int i = 0; i < state->numPlayers; i++) + { + if (i != currentPlayer) + { + if ( state->handCount[i] > 4 ) + { + //discard hand + while( state->handCount[i] > 0 ) + { + discardCard(handPos, i, state, 0); + } + + //draw 4 + for (int j = 0; j < 4; j++) + { + drawCard(i, state); + } + } + } + } + + } + return 0; + +} + +//////////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Ambassador card // +//////////////////////////////////////////////////////////////////////////////////// + +int ambassadorEffect(struct gameState *state, int handPos, int currentPlayer, int choice1, int choice2){ + + int j = 0; //used to check if player has enough cards to discard + + //////////ERROR 5 - choice2 must be less than 5 and greater than -1. Does not follow logic of 0,1,2 cards return ///////// + if (choice2 > 4 || choice2 < 0) + { + return -1; + } + + if (choice1 == handPos) + { + return -1; + } + + for (int i = 0; i < state->handCount[currentPlayer]; i++) + { + if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) + { + j++; + } + } + if (j < choice2) + { + return -1; + } + + if (DEBUG) + printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); + + //increase supply count for choosen card by amount being discarded + state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; + + //each other player gains a copy of revealed card + for (int i = 0; i < state->numPlayers; i++) + { + /////////ERROR 6 - Conditional statement equal to instead of not equal to/////// + if (i == currentPlayer) + { + gainCard(state->hand[currentPlayer][choice1], state, 0, i); + } + } + + //discard played card from hand + discardCard(handPos, currentPlayer, state, 0); + + //trash copies of cards returned to supply + for (j = 0; j < choice2; j++) + { + for (int i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) + { + discardCard(i, currentPlayer, state, 1); + break; + } + } + } + + return 0; + +} + +///////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Tribute card // +///////////////////////////////////////////////////////////////////////////////// +int tributeEffect(struct gameState *state, int currentPlayer, int tributeRevealedCards[2], int nextPlayer) { + + if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { + if (state->deckCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deckCount[nextPlayer]--; + } + else if (state->discardCount[nextPlayer] > 0) { + tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; + state->discardCount[nextPlayer]--; + } + else { + //No Card to Reveal + if (DEBUG) { + printf("No cards to reveal\n"); + } + } + } + + else { + if (state->deckCount[nextPlayer] == 0) { + for (int i = 0; i < state->discardCount[nextPlayer]; i++) { + state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck + state->deckCount[nextPlayer]++; + state->discard[nextPlayer][i] = -1; + state->discardCount[nextPlayer]--; + } + + shuffle(nextPlayer,state);//Shuffle the deck + } + tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; + state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; + state->deckCount[nextPlayer]--; + } + + if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one + state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; + state->playedCardCount++; + tributeRevealedCards[1] = -1; + } + + for (int i = 0; i <= 2; i ++) { + if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards + //////////ERROR 7 - coins in state subtract by 2 //////////// + state->coins -= 2; + } + + //////////ERROR 8 - removed revealed card tributeRevealedCards[i]==estate//////////// + else if (tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found + drawCard(currentPlayer, state); + drawCard(currentPlayer, state); + } + else { //Action Card + state->numActions = state->numActions + 2; + } + } + + return 0; +} + +/////////////////////////////////////////////////////////////////////////////// +// The following code below is the refactored card effect for the Mine card /// +/////////////////////////////////////////////////////////////////////////////// + +int mineEffect(struct gameState *state, int handPos, int choice1, int choice2, int currentPlayer){ + + int j = state->hand[currentPlayer][choice1]; //store card we will trash + + ////////ERROR 9 - changed the conditional statement to have silver instead of copper //////////// + if (state->hand[currentPlayer][choice1] < silver || state->hand[currentPlayer][choice1] > gold) + { + return -1; + } + + if (choice2 > treasure_map || choice2 < curse) + { + return -1; + } + + if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) + { + return -1; + } + + /////////ERROR 10 - changed the toFlag in the gainCard() function to 0 instead of 2. Adds to discard pile instead of hand. + gainCard(choice2, state, 0, currentPlayer); + + //discard card from hand + discardCard(handPos, currentPlayer, state, 0); + + //discard trashed card + for (int i = 0; i < state->handCount[currentPlayer]; i++) + { + if (state->hand[currentPlayer][i] == j) + { + discardCard(i, currentPlayer, state, 0); + break; + } + } + + return 0; +} + + int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState *state, int handPos, int *bonus) { int i; @@ -805,40 +1100,12 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState case gardens: return -1; + ///////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION mineEffect() // + // /////////////////////////////////////////// case mine: - j = state->hand[currentPlayer][choice1]; //store card we will trash - - if (state->hand[currentPlayer][choice1] < copper || state->hand[currentPlayer][choice1] > gold) - { - return -1; - } - - if (choice2 > treasure_map || choice2 < curse) - { - return -1; - } - - if ( (getCost(state->hand[currentPlayer][choice1]) + 3) > getCost(choice2) ) - { - return -1; - } - - gainCard(choice2, state, 2, currentPlayer); - - //discard card from hand - discardCard(handPos, currentPlayer, state, 0); - - //discard trashed card - for (i = 0; i < state->handCount[currentPlayer]; i++) - { - if (state->hand[currentPlayer][i] == j) - { - discardCard(i, currentPlayer, state, 0); - break; - } - } - return 0; + return mineEffect(state, handPos, choice1, choice2, currentPlayer); case remodel: j = state->hand[currentPlayer][choice1]; //store card we will trash @@ -888,58 +1155,12 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; + ///////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION baronEffect() // + ///////////////////////////////////////////// case baron: - state->numBuys++;//Increase buys by 1! - if (choice1 > 0) { //Boolean true or going to discard an estate - int p = 0;//Iterator for hand! - int card_not_discarded = 1;//Flag for discard set! - while(card_not_discarded) { - if (state->hand[currentPlayer][p] == estate) { //Found an estate card! - state->coins += 4;//Add 4 coins to the amount of coins - state->discard[currentPlayer][state->discardCount[currentPlayer]] = state->hand[currentPlayer][p]; - state->discardCount[currentPlayer]++; - for (; p < state->handCount[currentPlayer]; p++) { - state->hand[currentPlayer][p] = state->hand[currentPlayer][p+1]; - } - state->hand[currentPlayer][state->handCount[currentPlayer]] = -1; - state->handCount[currentPlayer]--; - card_not_discarded = 0;//Exit the loop - } - else if (p > state->handCount[currentPlayer]) { - if(DEBUG) { - printf("No estate cards in your hand, invalid choice\n"); - printf("Must gain an estate if there are any\n"); - } - if (supplyCount(estate, state) > 0) { - gainCard(estate, state, 0, currentPlayer); - - state->supplyCount[estate]--;//Decrement estates - if (supplyCount(estate, state) == 0) { - isGameOver(state); - } - } - card_not_discarded = 0;//Exit the loop - } - - else { - p++;//Next card - } - } - } - - else { - if (supplyCount(estate, state) > 0) { - gainCard(estate, state, 0, currentPlayer);//Gain an estate - - state->supplyCount[estate]--;//Decrement Estates - if (supplyCount(estate, state) == 0) { - isGameOver(state); - } - } - } - - return 0; + return baronEffect(state, choice1, currentPlayer); case great_hall: //+1 Card @@ -952,55 +1173,12 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; + ////////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION minionEffect() // + ////////////////////////////////////////////// case minion: - //+1 action - state->numActions++; - - //discard card from hand - discardCard(handPos, currentPlayer, state, 0); - - if (choice1) - { - state->coins = state->coins + 2; - } - else if (choice2) //discard hand, redraw 4, other players with 5+ cards discard hand and draw 4 - { - //discard hand - while(numHandCards(state) > 0) - { - discardCard(handPos, currentPlayer, state, 0); - } - //draw 4 - for (i = 0; i < 4; i++) - { - drawCard(currentPlayer, state); - } - - //other players discard hand and redraw if hand size > 4 - for (i = 0; i < state->numPlayers; i++) - { - if (i != currentPlayer) - { - if ( state->handCount[i] > 4 ) - { - //discard hand - while( state->handCount[i] > 0 ) - { - discardCard(handPos, i, state, 0); - } - - //draw 4 - for (j = 0; j < 4; j++) - { - drawCard(i, state); - } - } - } - } - - } - return 0; + return minionEffect(state, handPos, currentPlayer, choice1, choice2); case steward: if (choice1 == 1) @@ -1025,122 +1203,19 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState discardCard(handPos, currentPlayer, state, 0); return 0; + ////////////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION tributeEffect() // + ////////////////////////////////////////////////// case tribute: - if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { - if (state->deckCount[nextPlayer] > 0) { - tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deckCount[nextPlayer]--; - } - else if (state->discardCount[nextPlayer] > 0) { - tributeRevealedCards[0] = state->discard[nextPlayer][state->discardCount[nextPlayer]-1]; - state->discardCount[nextPlayer]--; - } - else { - //No Card to Reveal - if (DEBUG) { - printf("No cards to reveal\n"); - } - } - } - - else { - if (state->deckCount[nextPlayer] == 0) { - for (i = 0; i < state->discardCount[nextPlayer]; i++) { - state->deck[nextPlayer][i] = state->discard[nextPlayer][i];//Move to deck - state->deckCount[nextPlayer]++; - state->discard[nextPlayer][i] = -1; - state->discardCount[nextPlayer]--; - } - - shuffle(nextPlayer,state);//Shuffle the deck - } - tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; - state->deckCount[nextPlayer]--; - tributeRevealedCards[1] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; - state->deck[nextPlayer][state->deckCount[nextPlayer]--] = -1; - state->deckCount[nextPlayer]--; - } - - if (tributeRevealedCards[0] == tributeRevealedCards[1]) { //If we have a duplicate card, just drop one - state->playedCards[state->playedCardCount] = tributeRevealedCards[1]; - state->playedCardCount++; - tributeRevealedCards[1] = -1; - } - - for (i = 0; i <= 2; i ++) { - if (tributeRevealedCards[i] == copper || tributeRevealedCards[i] == silver || tributeRevealedCards[i] == gold) { //Treasure cards - state->coins += 2; - } - - else if (tributeRevealedCards[i] == estate || tributeRevealedCards[i] == duchy || tributeRevealedCards[i] == province || tributeRevealedCards[i] == gardens || tributeRevealedCards[i] == great_hall) { //Victory Card Found - drawCard(currentPlayer, state); - drawCard(currentPlayer, state); - } - else { //Action Card - state->numActions = state->numActions + 2; - } - } - return 0; + return tributeEffect(state, currentPlayer, &tributeRevealedCards[2], nextPlayer); + ////////////////////////////////////////////////// + // MODIFIED TO CALL FUNCTION ambassadorEffect() // + ////////////////////////////////////////////////// case ambassador: - j = 0; //used to check if player has enough cards to discard - if (choice2 > 2 || choice2 < 0) - { - return -1; - } - - if (choice1 == handPos) - { - return -1; - } - - for (i = 0; i < state->handCount[currentPlayer]; i++) - { - if (i != handPos && i == state->hand[currentPlayer][choice1] && i != choice1) - { - j++; - } - } - if (j < choice2) - { - return -1; - } - - if (DEBUG) - printf("Player %d reveals card number: %d\n", currentPlayer, state->hand[currentPlayer][choice1]); - - //increase supply count for choosen card by amount being discarded - state->supplyCount[state->hand[currentPlayer][choice1]] += choice2; - - //each other player gains a copy of revealed card - for (i = 0; i < state->numPlayers; i++) - { - if (i != currentPlayer) - { - gainCard(state->hand[currentPlayer][choice1], state, 0, i); - } - } - - //discard played card from hand - discardCard(handPos, currentPlayer, state, 0); - - //trash copies of cards returned to supply - for (j = 0; j < choice2; j++) - { - for (i = 0; i < state->handCount[currentPlayer]; i++) - { - if (state->hand[currentPlayer][i] == state->hand[currentPlayer][choice1]) - { - discardCard(i, currentPlayer, state, 1); - break; - } - } - } - - return 0; + return ambassadorEffect(state, handPos, currentPlayer, choice1, choice2); case cutpurse: @@ -1369,5 +1444,15 @@ int updateCoins(int player, struct gameState *state, int bonus) } + + + + + + + + + + //end of dominion.c diff --git a/projects/kyawmyis/dominion/dominion.gcda b/projects/kyawmyis/dominion/dominion.gcda new file mode 100644 index 0000000000000000000000000000000000000000..5aa4086dfb784edf4fa9a38deebedd57a203b5d4 GIT binary patch literal 7856 zcmeHLTWB0r7@o29(wNq&t+zC7S_*1uG)O?Jf?%{(5PeYFq9UE$olVB>&MY&#hDxCz z6h*P1LZI|%DtIYAsGtvCK=UB2Z?O-8pid$~XrUm|7t#Ma=X}fX%NQ3+n}j{E^PTTM z|Lt7o%m%gU0NU0CVktjJxLth*lgfU}@IdCkempHbXVk8*O_5ou3k z9O`RMc^PW`GQQ3^U_1FSCucsyH&sB&X}?POqdMC)r#}7AzeeUoq(7_|6wR-&VzZu5 zB`4BujnX40Qje(PkUKZsc$zO{&vqjH4mn4fYk7BXJAHB@?TMmh_9*sBuLfmBT?<6o+F@w?lI3(GTMg8DGpy-Z+m>eSYFw3h_+7kbe}<9!9=XL0l{5i*^3JTl_>389SUopS*SE4D711 zb{?+R!)jZI%+CvA!+84aAcrQ3=2lw%blam`;R3fXzxB>9Im1v+&VH|U0_My0M9wpO z(CLxWALCG7#u>Mdi)#cp&zv{SwR~}9-_K^bj{wgp>8H8V;4b;cv4byTomM)0ZP~lP zuo?`_+5BJS)LRI}uX)$t?A-M6{quO&WSv&4abP0p#CX}*Z<~9ihC-C8=@ZV@zns-_zp=edn{WG|&x{a$?cqPtxBRhUP!R`A}P+n%4tTA2)@ zxOku0ATq8wj+N%U%4uJQ;?I1e4IlP&T+A~Kgo7x9gWLb+x3+mm%5`@^%5oI3PFPW-=e+7p@QRu_Pr@hB%}z9UXR z&UUSjZ$lKG735axd0M|rPCX*?)V$1orE3^*NPeO8%lt4uBJ&n~v%c0z<-=bNAHw>Q z_w}AAj>FWPkh%XHo%Zo!j)0jLe3Sn4#@b=bOC?B?xcjl6`#UdYHcKy-c@N{xxcA`M z4cKQ*`IEgcfFjBL$Ch5d7DL8nZQdxE9R2ZE`#)xs;jbun<;(qBq>X0`k%=$F7t*6W zQS^O$Q{5!L-@e%K1Kue?vl3)kP)pM8h7oD*KQGUIxnv_?_T%Kfo|@)EA*{GS(n(Dz@}uXl?4Z=@>n AAfoLQTH_Fc1jh%_ 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%0AU~|VzpHweAy=bK|4CPv|=## zsi{YuGFF}v1*fSn%4UkgH5QwQ+diXWS94-EtmcTbXIAWL?l@cXS98_bvnqBq?z3TA zvG@fQyNn6qc5AHWt+Owz*wx&1wsvn?E6$!%v8#DE8&+$;+4CxPwI*i6YK=I1e#NfV zj`GMO<1uv8dZ!yxt{Uz41}?8RNX}l5vK5gBz(MU&ck& zNg0c^ZWK50PwP%P@@|8AT1Q$V;?Zj@NawMbcFI@`hs`nuYktZ`D+X&ViKCw8>ywFd z3!~GP3>_KP)_&e}mNm%zAwJ%hh26^|Ev?vBzk40GPd{kfoV_CKE;rlo8Y|}~f?Z)e z{i!i^{$<9pCNV5A}ibHCE%{>@8*&KQunh-Wu#XjK>d+ne*?gu&s4o z^BLQS+kIEXuEyTk_f%NT4`*+yu$m*zzHbVfYnXlgjnCbAGuTxNSFBuo(u!EY)BS&c zS9g5$a0>swk|%$L&{<1yf%b%`smWn9rbll_^_6q-NcnR}%U`(=C? zVoLVU)Hsu878sr1be@%c^sXzP@5Hf>Dt1ff&vp35UZXSUocNxSexTR$-SFI>exomS z*dnj@&3c!tw$Yb5c=CFWtarrX(U&@S@_Ik4cfaD%mpXXzdhe@uy5iB7I{5N8u;F*F zyx*z6g{2N=EK*A9#v((XrlgL3-9xJWTuOd!uX~1-q2IID?NyYq4$zl6{3gG5BxIkw z#AmjRzSO~!-!~GnUtZ!fdGw_Yp8WoikOT4(pUI;yb@1d5jD#GNm-tK`eW`;de{dw^ zki5ia^5|Vh{!rt{mwilM(XWS1a_jy#G#`xE{M(TRS^K%Y#^MLUwS4#SVY5rzP>gf- zcY^(0!O73|%{W1AR`IRB{%OKeA+ zt<68}rOy6I#jfJkY*_6X&VJVH(ihr8oV_R5&lyi&XkT&uPmRU4_8VvaTd?;Uk8SNi z&i|RQ*w)_U?0v!BZ#=fOUpfDIW3jD$%-IKm{d427t-a0pFBpq$?Rn1rMX(PVk8SOP z&VSKZY`1>zd??tzG#=a9N8R?9D(qPBh_ki1Iw#R-?Ek3P)xO|%YwX;H-LIHk`a*lO z+x=>=Uo)P**sEdtVPmna{oHMTJ=jN#$F}x(=f7brwzc;=`)II#Z9KO3i-b7;O=GdW ze@9Md9}D(d#$#J&2ed_r`R1CWuGIi{_f+ie-&)}9p?EAJu#f{NIq| zIS+@1TTC7K^(H;dXA<(OI{SztU;05iw9Pz7 z$@a-Jmk{m$@(sPtCOUV>K6=-Y*Lg!6`La#?pdFnZ)E0T25ww@8486_-+QU_bUT1)^ zjCRnwj=c7E`AEL>hq~o+q1q~+2er4UY+arUv0pwH$`AHeoeiWbp9j@e`5dTyLS-{O z4~|6}DLG$T&x3P>_0KfqwMWZ0+MYYf)t^-ud#w@fyL_H_LIs_TwLhoSSnMHg_aDtJ z^H^)l*`Egce~iaxtwrbmrNU}GIy*Wnz_6J2r*-PA-yc3JRyezU*xjIFTkFjE8ml$$ z>_%p{i~-JW66~hNgAOq{7?+{`ww_P+HoN%IdOq1V*!_&BKU&Wx z2Uggz;1Tz^`-d=D6rUNJ=Ja`IYxlQDgFSSL4|(Qe-aYc>t#-xkr3+TBnCSll+uqJc zySn3}8kfF_e}zl^JjWhDxYsRdt!e*5&po6}KhJ3$Yj0)`(!RpDr)1lHu2Ww7g<`wf zMz8%rI`Z0!q@$kVkNlu*o$D0yR92qr6gyQ`p6?Wk)edpob$-sHudu1usk-I)PP+13 zCmr`u_BY?@W5owJ`i*f?tW&H}S$VEg%#!``d?#Ibu9ME+^W(?V^IZKbM8E6!K%Md| zbVp34k7=Ss8EcZUkjnXwN5P$u{!l<)hw+9*yiSd6or^wUb{TukUAOzmVDE}_ccf2Q zJ^ay}^m@+HKbr5(emd;_amBXQfb(t}|Fwpk{gbf!nMj|FbWf!XtyQo0xeBXw_f(5Td~9WFB?nwu;wGv z?>CA|UcWX^6-%A{D{BkC6sMhi*jUCual+ZJ2m6gkk6Io2sdX;;>tMfWJpL%ocpHxy zOZgD5BGdPi;+xlhd`kWN8+3fT;QAl%pWhopG7qw!7^F5bx;tyktXzhzfuh=0SdBrU0 z%2^%{S+Cr4HSg38>sxD9w#vO%>rp&ww&dww7_CLwAg?v2wILhj zUMwAJuC#&OpLg%2zfy9%=`)`L}p=khHdT5n^x?$_T}!6udLr%`|_3*yIQaAue0=* z_GD+D77FJX55))Pw?i>0Io4X=GqL!g*x~H#5W4E-xc4y{%%wJ%I9+K_Z?sR_U#?Jbk)N6r=8tD z@ASIIbpd3&dmf>s*~^pP+Xr{2KUXWBX+I$rDqd($f>A6}j1rGtu}C`K+iAbt+r`n2 zVohtmfNAX)eOJ*sPL`*;;dkwZ#@1><@R5of?)6; zU)0aeo)hf3#uIxr9?oAF>_w4YY<1v<@rq18*EQyD=aMP)M@EUutk>_{ebir3v|#zA z3s$XKuxQ0f{h!{ZpN;p%X#Bt4=5qNrC2L<(o!jB>a16-xLtbT?3!2mD=S<#X@-XT~ zjjwq0B~N`AjVl~Xxu&$=sjOUE+GAB#t}!oTzG?q1%kaU^(db~bFUx=O?rV8&)*dRJ z{nzieJU7el@|~6T9hH^mX6<*fU!I?(Yn_|5XN&W5GyP6n*ZwpX-&1nlpx1sR-^zDa z!?R$HVR??$-lDeIe@dSIo_e0nHaTCHZNgDc@3Cc%y!K$}#zN@RY*+XTd6uv(YSKC{AVzR!kL ztabLtirrQWuCa^>GLzkMjXQf(D2}f9p;+MjF%?$vz}Z^ADQ-D?Y{hQtocv)+rx;HkYu!6vV_WC+)6Fh^w9e^g2KzkY@k6o8{Wz<_w$AD9Gkz#uy4@Fs;@paD z#R=zYtYV?F=U411PR)jGoz*WiyWF47>TdUz0PRj%d?qcs`%C! zt+at}$CdbmiF$9eZ$jCewUX88J}tM=?%iWA(fF=nc|Mh$g50ogED+TulOJxjO$uwx3OST(%x8Pw7#bi-Ojn|^4$Q(pRht=Xji6ib}FzQSr9JNwECt2H?j%NeV6Cc7aj^9R7M zj`Uw5y(ZEid9STAn)`(BiYJ&U`{i|^=>A9alg8(F|BVU7E9c)3ieHIzW2FBY>5Y-z z6lsw3P4R}Jvc0z$%l)^`ZEp?sZIOO0(oI&6u~XclsBGir3ad3X8@6?Rdwa#MVw>Bo zv5Ivwv5c4EqqDyeid#`mO7^#6rStEqu!@tjVHG!L!zzx>#IimVU!8q-DBct4y%bDJ z-lJl%*SXDDvO_$^NY>Zh;q|+hyVllNpLe!4x3u>;`vDY#bnk}g&s{Iw>}M3kZ_kql zHLv?SUET3f&GEs^&+{$!94u(>(4I$L?&_?ivYF0UTI=H33ly&v>s3ZxWkdWs z-xX_YC@CKqpE8y)*IaVDp9#h1BHe3s%6a8=YOLm)v-g=@=8fi`v!4&e1IFWr=Be{vsIZ!= Z&enX^TzB@tie0T!XTLaw?IzR6{{_9uxK{uG literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/interface.gcno b/projects/kyawmyis/dominion/interface.gcno new file mode 100644 index 0000000000000000000000000000000000000000..4332d3448d203a6e22bd8b5bd9c7633f836d1efb GIT binary patch literal 13404 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 F{{W;@NzniR literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/playdom b/projects/kyawmyis/dominion/playdom new file mode 100755 index 0000000000000000000000000000000000000000..c4a59247cba60df7e5e4524b343c830258c73355 GIT binary patch literal 89272 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

?M25e2g8jqcGxd4?Gb2|ELrxp3J2szn4jF{a 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 literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/playdom.gcda b/projects/kyawmyis/dominion/playdom.gcda new file mode 100644 index 0000000000000000000000000000000000000000..35e6791acfd91cfa8381b74e880436b1efd8ce3b GIT binary patch literal 940 zcmZ|NF-`(e5XSMhf{FyRF_soohKdjmAq@wxBbpEkxB=Iov4MC2Pv99m0Eb~0=4UpO zxCI~onR(yLo886x+j2aeJpUYCXQhoV|@ygef3-asm}1HkN@yC z;_@%S^H3~5N%dF3<51kp)I3jTDOi3KajcGyKISkdy^Hgd|1kBtP25X;vGd(jZ;zdb zV|C`webf))9HuuZ?tSt#k9w@1Iq-G(@zvLU)X8J}#`od#5Q_W3e6jiXVs(6SANS>h kv${9m%q-?zQi=lAZ^c(vlJ+xpdpBk~jylK=n! literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/playdom.gcno b/projects/kyawmyis/dominion/playdom.gcno new file mode 100644 index 0000000000000000000000000000000000000000..7633eaf6bc382c109ef3b0f6bd81fd4b506d9c73 GIT binary patch literal 5344 zcmeH~*^*R65Qe*vT~KgEaA_IYMjR1QafP960f)^{L&XKgVUf_8K@b&`@Iu3v@Ww~r z349VBhWz@^?8?Y#g7BVZ+{MiwkoXC-?5z_uuW)M?0NPcdb>}zc+9F zv&^pZvzHd|AFy)yhuQ1r7U!qt?0zM%Gu=Htyxy<={|xlI%qiB@#cDBp=3dtCuCN>Y z(9d`z^zh}0p~vTnJ+6z@>I<&luhUtTV)O%lG%>VjRy$jhV(8(IB!(VMtfL203_W~f zV(8JVbGAOk(8D(*h91pB&K^!N^zh2?b06sN^K-!P^Si+C^L)VYAG0FUZ-!rg1Lpk+ zSMBj@{08tRolT?|{lhmU#yjIbpLp7tMBOJ5r4P;ZupB zN3+w}WQoCdjfv40{3VaY?@Id@o$XFB^zh2?b06sN^E1Nm^LxVZKeQs#T(Qnxaq_NT zW3J$P6XV_SUv>6QiNW_ddo9Hn8~%1;^o8biXK$n!diYz3p+~dd*_$bb9$p!K?gJfu zehwIZeoq+hmgj@<@!zw89ni&UtylQb#L%NT=J_frf# z{BUB7jb`BNgA_v#uM9u;fet@E2Mj;ICk#KYD;WMVD>BW|j5)^wbq1sJY=n%FKf4a- zCx1h%Hh-NJa(3in^yJsboh?5YwEosu9nVqwt6KU-gH>(h%$y6Q)ELX7Z&OzbY*4s=H`gzC|D{bBWb{dqWzPw9Fw^wdCVw(ynz-wOgCe?xf`$ z$EtQh*lTI|ZLq2(pEr}1^B$|(ZNgql%UZ&!cDu0GTC02)G!tVTHWO>#2}HzLr_D4r z>lUkH?-2G{+W3B`+HvcPy?|BiE@7|LZ+vf5?PSq1Px1XxwQ)|xIm9{BzF+7_W5s@} z?Z;`^Z&=mFS*7Tp%NpXF1*=+edOnkeB7YY4F;?5ObBn0@k2$Vd&ZvAQ(IVb8_Hu30 z&M0Yl{@BY^8)p?~Q8TTlx~FN|Ya+WF4F8+O9<6WJ(S=CMp zd#yQ)eOk4LOx3r-dDTq)$9}DCIKP^y|Jbip8|PX($7rekW1rPFoM+9X-Ra<7TJluv zv#RAxoUwAu%5f{rG)C;X+U`UX+MV8)J%?58Nn@w1d_-_$S~I&xJ~v|Q*=Ax>4cMK= zV^3psypN52V&zkUBh&lD`l@X{8|kz+x$4vaU<Q%RSk=e3g`!#;Gjf(_|1|!WmA^fnFLwYeZ&;TA literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/player b/projects/kyawmyis/dominion/player new file mode 100755 index 0000000000000000000000000000000000000000..e4b65928ed6420a721363092e528df7ce6854696 GIT binary patch literal 114740 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�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 z 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 RoZGWuPHCX2LXLYMM2gTvBSa zMty{WbX^>CymAxe7sxM^UnI}0ckW!bIy}rk*NDxGN6&d!n6nI0Yc+@mxpsEQp${(PsD(bnbEy__IvXQH z4tu_)LN}{=1n#YhWCJ(X~f-0 z^0i9u3FM1IE`NX6`vAb^!+T|t^OL<#^FfaqabANpBi<%Av%1V-swnjTy(7jB}}Lmt{HTh#sFE%o698 zd!P0f`cl`HWjSi0=VuKKX1(0Z_7XK$xU$;&R3Ck%Ypb#xwa{aIm`28NztmjgTBrAE z9nsfi8a&Ke*SfMCW1>fmIIjUmoX-P|IKOu^;tg^$d$z>+GlL_}_YN9yzW>mO^Rt9T zyj5;yV-V+O8jd)B@1POq?>{u+xbEzkopLi9gZT0!>Gu%V_O(Wx_fy?P^7-$w^o~jI zj_Jy$v!Bj%IU21X^lGHb?I5eYpzu8D*4s&Yvk9;uajRd z-y`pl-z48FZ<*cWAQxiI$PO1bxPrY|`abzB@>`v;&cL<(iqbt}$(htjTlOK`aE^nF5e~b%p{-rsM ztzeI~it3ZqWe;Mp?lF_Swe!I5FD$ahrQOk+Nll~9vl-`Mb?Nt9 zyzX9s_sQ>+f3(T+!R9l; zwa7nKU?*0vj~7^ePhzodiRJet7TG6E_SWXh`y7kx36s4wc9KW`#z&#GWwmi~(8th3s)EBIKOb2g`feO3Bv^4C3Y zot^)=uEljZCH)QgoAS4uvCif-&$W2nI|a6_pDgzN`g`*CJ#U@OrQNkSm&kHH z7F4hwNdHj&k^Ez4th4>r;aVKy6X~A@p8dA4g8!_*rvDie%GlE%^_F#cRGc*;`|mcof-h3hdH;vdnu~1^cb^@8sWm-a4Dha@XQqO6-aX z_6OIkv$`w$$#S+=Rj@xw|H*UKS?$#od}OJ;rh@%h`Y)cd&T4m7@R4P`*H*BoQm^mOLL2d;3CE~lsVHO}AoSKuGToPPTl$r?k8ORNMP&GgbZYRtP7!8sG0T>@- zCKQ0f4dl0mZ3;&~;sK>#9|Bnm8MS~UOf8HC3V{J3J}z}Iaca>>?g0A*6i!8TX1_q< y?x_gBfW)x?a2$iu4%bH69#A-hq!yPTryV6Mng&p4AuJt%+yIMD9PU|+EDivU=`%wB literal 0 HcmV?d00001 diff --git a/projects/kyawmyis/dominion/rngs.gcno b/projects/kyawmyis/dominion/rngs.gcno new file mode 100644 index 0000000000000000000000000000000000000000..f3de0058368fcf70e406cc75125f561f6e8dd81e GIT binary patch literal 3660 zcmb_eOKTKC5bp8));}P4_8_7nqM%trh~8pWG(K@nhIoh@+}#)-81$x)n-B2dMSMh5 zG%E3yiypvPEAO}f|}{7{<^xls=8*zo5Q0!_w3#``K&b`Lde$319YYN zb7qCS2OG_i@v9+V+-i=tcMXTI7l2U9*2H(!qc>aGoyz_~db8Csh75ZkVnR?n^sC|w z9;yQ-)j@_WrM_$(hw`?*9yIz8`m&88)1MS~NahX;A4%50HvP40dK?_jV{u0v9M5BM zy(L`8Hi!≥k-U4!Z+mjb^8w=OgX%8T;e9TExfUk{*73u#e3Ta)3C)PoAxawa!7$ z^AtHz`_LD4qB>ww9ptsbN{WMweU(&)y;-BkCw(Fcx~(F3IX)r!LE%%vr-g@v&j_Ct zJ||p|))V)(IZAQxg+5r^dC^}e49ZAtGENqI(ZMl}7I(?PF^(43aBz&R#ieIKY?)h& zyIist;vK^L(63|PaGrWTmJfI8omSqEPEoGSX(;|vuVC!FnzVDshpkEW5nveCs@g$5 zz1n#w`bWYARo94z^J?UAVN6EV_3@;H(;f|bcjtC|M;->)E(MK08SIX~K4fMJbqk+G8E)1Cn=>YO#axr?T+ws)Yn zDyc2x-RfWq@+JiZd^eO751Dg3FJ#^`>fl4_H)QlECBKJN)#11-y2hpPU0sJQ2giIM zH~gN<=fqHT9d-!m+wAsf*gu)KJKlfi)3~OV@%)8}<&2hku7&?S ztWEZl<@7ROaYo()_6NwwjgszZdl>7Mc-zD1hpk)IB=NR~QCHQwSbx0R^vc%Rb1LJz z`hOa@7s4-vUqvh*)%_~P;arFt$olYFW~ zdnfw$!XJb`3eO6E5-v!6@%mVbLma>$y9aQeqm~b~$?urOejy~j6~|h!xH$*s^{=lb HoC<#clgi^) literal 0 HcmV?d00001 From 14309f41f6f23ecf20d4640f7531de2919622d28 Mon Sep 17 00:00:00 2001 From: Stuart Kyawmyint Date: Sun, 17 Nov 2019 12:43:47 -0800 Subject: [PATCH 6/6] assignment-4 random testing added files --- projects/kyawmyis/dominion/Makefile | 18 +- projects/kyawmyis/dominion/dominion.c | 9 +- projects/kyawmyis/dominion/dominion.gcda | Bin 7856 -> 0 bytes projects/kyawmyis/dominion/dominion.gcno | Bin 44916 -> 0 bytes projects/kyawmyis/dominion/interface.gcno | Bin 13404 -> 0 bytes projects/kyawmyis/dominion/playdom | Bin 89272 -> 0 bytes projects/kyawmyis/dominion/playdom.gcda | Bin 940 -> 0 bytes projects/kyawmyis/dominion/playdom.gcno | Bin 5344 -> 0 bytes projects/kyawmyis/dominion/player | Bin 114740 -> 0 bytes projects/kyawmyis/dominion/player.gcno | Bin 6072 -> 0 bytes projects/kyawmyis/dominion/randomtestcard1.c | 222 +++++++++++++++ projects/kyawmyis/dominion/randomtestcard2.c | 272 +++++++++++++++++++ projects/kyawmyis/dominion/randomtestcard3.c | 207 ++++++++++++++ projects/kyawmyis/dominion/rngs.gcda | Bin 816 -> 0 bytes projects/kyawmyis/dominion/rngs.gcno | Bin 3660 -> 0 bytes projects/kyawmyis/dominion/testdrawcard.c | 272 ++++++++++++++----- 16 files changed, 934 insertions(+), 66 deletions(-) delete mode 100644 projects/kyawmyis/dominion/dominion.gcda delete mode 100644 projects/kyawmyis/dominion/dominion.gcno delete mode 100644 projects/kyawmyis/dominion/interface.gcno delete mode 100755 projects/kyawmyis/dominion/playdom delete mode 100644 projects/kyawmyis/dominion/playdom.gcda delete mode 100644 projects/kyawmyis/dominion/playdom.gcno delete mode 100755 projects/kyawmyis/dominion/player delete mode 100644 projects/kyawmyis/dominion/player.gcno create mode 100644 projects/kyawmyis/dominion/randomtestcard1.c create mode 100644 projects/kyawmyis/dominion/randomtestcard2.c create mode 100644 projects/kyawmyis/dominion/randomtestcard3.c delete mode 100644 projects/kyawmyis/dominion/rngs.gcda delete mode 100644 projects/kyawmyis/dominion/rngs.gcno diff --git a/projects/kyawmyis/dominion/Makefile b/projects/kyawmyis/dominion/Makefile index 5541801f3..1317a9559 100644 --- a/projects/kyawmyis/dominion/Makefile +++ b/projects/kyawmyis/dominion/Makefile @@ -25,7 +25,23 @@ runtests: testDrawCard player: player.c interface.o gcc -o player player.c -g dominion.o rngs.o interface.o $(CFLAGS) +randomtestcard1: randomtestcard1.c dominion.o rngs.o + gcc -o randomtestcard1 -g randomtestcard1.c dominion.o rngs.o $(CFLAGS) + +randomtestcard2: randomtestcard2.c dominion.o rngs.o + gcc -o randomtestcard2 -g randomtestcard2.c dominion.o rngs.o $(CFLAGS) + +randomtestcard3: randomtestcard3.c dominion.o rngs.o + gcc -o randomtestcard3 -g randomtestcard3.c dominion.o rngs.o $(CFLAGS) + +randomtestresults: randomtestcard1 randomtestcard2 randomtestcard3 + ./randomtestcard1 >> randomtestresults.out + ./randomtestcard2 >> randomtestresults.out + ./randomtestcard3 >> randomtestresults.out + gcov -b -f dominion.c >> randomtestresults.out + cat dominion.c.gcov >> randomtestresults.out + all: playdom player clean: - rm -f *.o playdom.exe playdom player player.exe *.gcov *.gcda *.gcno *.so *.out testDrawCard testDrawCard.exe + rm -f *.o playdom.exe playdom player player.exe *.gcov *.gcda *.gcno *.so *.out testDrawCard testDrawCard.exe randomtestcard1 randomtestcard1.exe randomtestcard2 randomtestcard2.exe randomtestcard3 randomtestcard3.exe randomtestresults.out diff --git a/projects/kyawmyis/dominion/dominion.c b/projects/kyawmyis/dominion/dominion.c index 855089471..90b3e3957 100644 --- a/projects/kyawmyis/dominion/dominion.c +++ b/projects/kyawmyis/dominion/dominion.c @@ -869,8 +869,10 @@ int ambassadorEffect(struct gameState *state, int handPos, int currentPlayer, in ///////////////////////////////////////////////////////////////////////////////// // The following code below is the refactored card effect for the Tribute card // ///////////////////////////////////////////////////////////////////////////////// -int tributeEffect(struct gameState *state, int currentPlayer, int tributeRevealedCards[2], int nextPlayer) { +int tributeEffect(struct gameState *state, int currentPlayer, int nextPlayer) { + int tributeRevealedCards[2] = {-1, -1}; + if ((state->discardCount[nextPlayer] + state->deckCount[nextPlayer]) <= 1) { if (state->deckCount[nextPlayer] > 0) { tributeRevealedCards[0] = state->deck[nextPlayer][state->deckCount[nextPlayer]-1]; @@ -985,8 +987,7 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState int index; int currentPlayer = whoseTurn(state); int nextPlayer = currentPlayer + 1; - - int tributeRevealedCards[2] = {-1, -1}; + int temphand[MAX_HAND];// moved above the if statement int drawntreasure=0; int cardDrawn; @@ -1208,7 +1209,7 @@ int cardEffect(int card, int choice1, int choice2, int choice3, struct gameState ////////////////////////////////////////////////// case tribute: - return tributeEffect(state, currentPlayer, &tributeRevealedCards[2], nextPlayer); + return tributeEffect(state, currentPlayer, nextPlayer); ////////////////////////////////////////////////// // MODIFIED TO CALL FUNCTION ambassadorEffect() // diff --git a/projects/kyawmyis/dominion/dominion.gcda b/projects/kyawmyis/dominion/dominion.gcda deleted file mode 100644 index 5aa4086dfb784edf4fa9a38deebedd57a203b5d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7856 zcmeHLTWB0r7@o29(wNq&t+zC7S_*1uG)O?Jf?%{(5PeYFq9UE$olVB>&MY&#hDxCz z6h*P1LZI|%DtIYAsGtvCK=UB2Z?O-8pid$~XrUm|7t#Ma=X}fX%NQ3+n}j{E^PTTM z|Lt7o%m%gU0NU0CVktjJxLth*lgfU}@IdCkempHbXVk8*O_5ou3k z9O`RMc^PW`GQQ3^U_1FSCucsyH&sB&X}?POqdMC)r#}7AzeeUoq(7_|6wR-&VzZu5 zB`4BujnX40Qje(PkUKZsc$zO{&vqjH4mn4fYk7BXJAHB@?TMmh_9*sBuLfmBT?<6o+F@w?lI3(GTMg8DGpy-Z+m>eSYFw3h_+7kbe}<9!9=XL0l{5i*^3JTl_>389SUopS*SE4D711 zb{?+R!)jZI%+CvA!+84aAcrQ3=2lw%blam`;R3fXzxB>9Im1v+&VH|U0_My0M9wpO z(CLxWALCG7#u>Mdi)#cp&zv{SwR~}9-_K^bj{wgp>8H8V;4b;cv4byTomM)0ZP~lP zuo?`_+5BJS)LRI}uX)$t?A-M6{quO&WSv&4abP0p#CX}*Z<~9ihC-C8=@ZV@zns-_zp=edn{WG|&x{a$?cqPtxBRhUP!R`A}P+n%4tTA2)@ zxOku0ATq8wj+N%U%4uJQ;?I1e4IlP&T+A~Kgo7x9gWLb+x3+mm%5`@^%5oI3PFPW-=e+7p@QRu_Pr@hB%}z9UXR z&UUSjZ$lKG735axd0M|rPCX*?)V$1orE3^*NPeO8%lt4uBJ&n~v%c0z<-=bNAHw>Q z_w}AAj>FWPkh%XHo%Zo!j)0jLe3Sn4#@b=bOC?B?xcjl6`#UdYHcKy-c@N{xxcA`M z4cKQ*`IEgcfFjBL$Ch5d7DL8nZQdxE9R2ZE`#)xs;jbun<;(qBq>X0`k%=$F7t*6W zQS^O$Q{5!L-@e%K1Kue?vl3)kP)pM8h7oD*KQGUIxnv_?_T%Kfo|@)EA*{GS(n(Dz@}uXl?4Z=@>n AAfoLQTH_Fc1jh%_ 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%0AU~|VzpHweAy=bK|4CPv|=## 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 Z&enX^TzB@tie0T!XTLaw?IzR6{{_9uxK{uG diff --git a/projects/kyawmyis/dominion/interface.gcno b/projects/kyawmyis/dominion/interface.gcno deleted file mode 100644 index 4332d3448d203a6e22bd8b5bd9c7633f836d1efb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13404 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 F{{W;@NzniR diff --git a/projects/kyawmyis/dominion/playdom b/projects/kyawmyis/dominion/playdom deleted file mode 100755 index c4a59247cba60df7e5e4524b343c830258c73355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89272 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

?M25e2g8jqcGxd4?Gb2|ELrxp3J2szn4jF{a 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 diff --git a/projects/kyawmyis/dominion/playdom.gcda b/projects/kyawmyis/dominion/playdom.gcda deleted file mode 100644 index 35e6791acfd91cfa8381b74e880436b1efd8ce3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcmZ|NF-`(e5XSMhf{FyRF_soohKdjmAq@wxBbpEkxB=Iov4MC2Pv99m0Eb~0=4UpO zxCI~onR(yLo886x+j2aeJpUYCXQhoV|@ygef3-asm}1HkN@yC z;_@%S^H3~5N%dF3<51kp)I3jTDOi3KajcGyKISkdy^Hgd|1kBtP25X;vGd(jZ;zdb zV|C`webf))9HuuZ?tSt#k9w@1Iq-G(@zvLU)X8J}#`od#5Q_W3e6jiXVs(6SANS>h kv${9m%q-?zQi=lAZ^c(vlJ+xpdpBk~jylK=n! diff --git a/projects/kyawmyis/dominion/playdom.gcno b/projects/kyawmyis/dominion/playdom.gcno deleted file mode 100644 index 7633eaf6bc382c109ef3b0f6bd81fd4b506d9c73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmeH~*^*R65Qe*vT~KgEaA_IYMjR1QafP960f)^{L&XKgVUf_8K@b&`@Iu3v@Ww~r z349VBhWz@^?8?Y#g7BVZ+{MiwkoXC-?5z_uuW)M?0NPcdb>}zc+9F zv&^pZvzHd|AFy)yhuQ1r7U!qt?0zM%Gu=Htyxy<={|xlI%qiB@#cDBp=3dtCuCN>Y z(9d`z^zh}0p~vTnJ+6z@>I<&luhUtTV)O%lG%>VjRy$jhV(8(IB!(VMtfL203_W~f zV(8JVbGAOk(8D(*h91pB&K^!N^zh2?b06sN^K-!P^Si+C^L)VYAG0FUZ-!rg1Lpk+ zSMBj@{08tRolT?|{lhmU#yjIbpLp7tMBOJ5r4P;ZupB zN3+w}WQoCdjfv40{3VaY?@Id@o$XFB^zh2?b06sN^E1Nm^LxVZKeQs#T(Qnxaq_NT zW3J$P6XV_SUv>6QiNW_ddo9Hn8~%1;^o8biXK$n!diYz3p+~dd*_$bb9$p!K?gJfu zehwIZeoq+hmgj@<@!zw89ni&UtylQb#L%NT=J_frf# z{BUB7jb`BNgA_v#uM9u;fet@E2Mj;ICk#KYD;WMVD>BW|j5)^wbq1sJY=n%FKf4a- zCx1h%Hh-NJa(3in^yJsboh?5YwEosu9nVqwt6KU-gH>(h%$y6Q)ELX7Z&OzbY*4s=H`gzC|D{bBWb{dqWzPw9Fw^wdCVw(ynz-wOgCe?xf`$ z$EtQh*lTI|ZLq2(pEr}1^B$|(ZNgql%UZ&!cDu0GTC02)G!tVTHWO>#2}HzLr_D4r z>lUkH?-2G{+W3B`+HvcPy?|BiE@7|LZ+vf5?PSq1Px1XxwQ)|xIm9{BzF+7_W5s@} z?Z;`^Z&=mFS*7Tp%NpXF1*=+edOnkeB7YY4F;?5ObBn0@k2$Vd&ZvAQ(IVb8_Hu30 z&M0Yl{@BY^8)p?~Q8TTlx~FN|Ya+WF4F8+O9<6WJ(S=CMp zd#yQ)eOk4LOx3r-dDTq)$9}DCIKP^y|Jbip8|PX($7rekW1rPFoM+9X-Ra<7TJluv zv#RAxoUwAu%5f{rG)C;X+U`UX+MV8)J%?58Nn@w1d_-_$S~I&xJ~v|Q*=Ax>4cMK= zV^3psypN52V&zkUBh&lD`l@X{8|kz+x$4vaU<Q%RSk=e3g`!#;Gjf(_|1|!WmA^fnFLwYeZ&;TA diff --git a/projects/kyawmyis/dominion/player b/projects/kyawmyis/dominion/player deleted file mode 100755 index e4b65928ed6420a721363092e528df7ce6854696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114740 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�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 z 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 RoZGWuPHCX2LXLYMM2gTvBSa zMty{WbX^>CymAxe7sxM^UnI}0ckW!bIy}rk*NDxGN6&d!n6nI0Yc+@mxpsEQp${(PsD(bnbEy__IvXQH z4tu_)LN}{=1n#YhWCJ(X~f-0 z^0i9u3FM1IE`NX6`vAb^!+T|t^OL<#^FfaqabANpBi<%Av%1V-swnjTy(7jB}}Lmt{HTh#sFE%o698 zd!P0f`cl`HWjSi0=VuKKX1(0Z_7XK$xU$;&R3Ck%Ypb#xwa{aIm`28NztmjgTBrAE z9nsfi8a&Ke*SfMCW1>fmIIjUmoX-P|IKOu^;tg^$d$z>+GlL_}_YN9yzW>mO^Rt9T zyj5;yV-V+O8jd)B@1POq?>{u+xbEzkopLi9gZT0!>Gu%V_O(Wx_fy?P^7-$w^o~jI zj_Jy$v!Bj%IU21X^lGHb?I5eYpzu8D*4s&Yvk9;uajRd z-y`pl-z48FZ<*cWAQxiI$PO1bxPrY|`abzB@>`v;&cL<(iqbt}$(htjTlOK`aE^nF5e~b%p{-rsM ztzeI~it3ZqWe;Mp?lF_Swe!I5FD$ahrQOk+Nll~9vl-`Mb?Nt9 zyzX9s_sQ>+f3(T+!R9l; zwa7nKU?*0vj~7^ePhzodiRJet7TG6E_SWXh`y7kx36s4wc9KW`#z&#GWwmi~(8th3s)EBIKOb2g`feO3Bv^4C3Y zot^)=uEljZCH)QgoAS4uvCif-&$W2nI|a6_pDgzN`g`*CJ#U@OrQNkSm&kHH z7F4hwNdHj&k^Ez4th4>r;aVKy6X~A@p8dA4g8!_*rvDie%GlE%^_F#cRGc*;`|mcof-h3hdH;vdnu~1^cb^@8sWm-a4Dha@XQqO6-aX z_6OIkv$`w$$#S+=Rj@xw|H*UKS?$#od}OJ;rh@%h`Y)cd&T4m7@R4P`*H*B +#include +#include +#include +#include +#include "rngs.h" + + + +int main () { + + int numPlayer = 2; // set the number of players + int testBaronEffect; // return of testBaronEffect function + int currentPlayer = 0; // set who the current player is + + int choice1; // tracker for which choice1 player chose **Randomized** + + int maxHandSize = 5; // maximum number of cards in current player's hand + + int r; + int numBuysBefore; // number of buys a player has before Baron card played. **Randomized** + int numCoinsBefore; // number of coins a player has before Baron card is played **Randomized** + int numEstateBefore; // counter of the number of Estate cards in hand before Baron card is played + int numEstateAfter; // counter of the number of Estate cards in hand after Baron card is played + int numSupplyBefore; // counter of the number of Estate cards in supply before Baron card **Randomized** + + // Flags to check if test passes + int buysCheck = 1; // check if the number of buys is ok after Baron card is played. 1 = ok. 0 = not ok. + int coinsCheck = 1; // check if the number of coins is ok after the Baron card is played + int estateCheck = 1; // check if estate correctly gained in hand. + int supplyCheck = 1; // check if the supply was reduced by ok. + int discardCheck = 1; // check if the Estate was added to discard pile + + // Helper variables + int randomCard; // random card to put in hand of player + int isSupplyEmpty; // check to see if Estate supply is empty initially + + + int k[10] = {adventurer, council_room, feast, gardens, mine, + remodel, smithy, village, baron, great_hall + }; + + struct gameState G; // set a gameState + srand(time(NULL)); //seed the random generator + + printf ("*****************************************************\n"); + printf ("RANDOM TEST 1: Random Testing baronEffect function.\n"); + printf ("*****************************************************\n"); + + memset(&G, 1, sizeof(struct gameState)); + + for(int i = 0; i<1000000; i++){ + + r = initializeGame(numPlayer, k, (int)(rand()%1000+1), &G); + G.handCount[0] = maxHandSize; + numBuysBefore = (int)(rand()%10+1); // Randomize number of buys initially from 1-10 + G.numBuys = numBuysBefore; + numCoinsBefore = (int)(rand()%10+1); // Randomize number of coins initially from 1-10 + G.coins = numCoinsBefore; + numSupplyBefore = (int)(rand()%9); // Randomize number of Estate cards in supply initially from 0-8 + G.supplyCount[estate] = numSupplyBefore; + isSupplyEmpty = 0; + if(numSupplyBefore == 0){ + isSupplyEmpty = 1; + } + + // Make the player have an empty discard + G.discard[0][0] = -1; + + choice1 = (int)(rand()%2); // choice1 random. Either 0 or 1. + + // Randomize what is in the hand of the player + // 0-10 are corresponding k array. 11 is the Estate card. + for(int j=0; j 0){ + // Check that the number of coins is gained by 4. + if(numCoinsBefore != G.coins-4){ + coinsCheck = 0; + } + + // Check that an Estate card was removed to discard in player hand + numEstateAfter = 0; + for(int j=0; j +#include +#include +#include +#include +#include "rngs.h" + +int main () { + + int r; + int numPlayer = 2; // set the number of players + int testminionEffect; // return of testMinionEffect function + int currentPlayer = 0; // set who the current player is + + int choice1; // tracker for which choice1 player chose **Randomized** + int choice2; // tracker for which choice2 player chose **Randomized** + + int handSizeBefore; // number of cards in current player's hand **Randomized** + int opponentHandSizeBefore; // number of cards in opponent's hand **Randomized** + int numActionsBefore; // number of actions a player has before Baron card played. **Randomized** + int numCoinsBefore; // number of coins a player has before Baron card is played **Randomized** + int numMinionBefore; // number of Minion cards in hand before + + // Counters for After function Call + int numMinionAfter; + int minionDiscard; + + // Flags to check if test passes + int actionsCheck = 1; // check if the number of actionss is ok after Minion card is played. 1 = ok. 0 = not ok. + int coinsCheck = 1; // check if the number of coins is ok after the Baron card is played + int playerGainedFour = 1; // check if player gained 4 new cards. + int playerHandCheck = 1; // check if the player's hand was properly discarded + int playerDiscardCheck = 1; // check if the player's discard was properly added to + int opponentHandCheck = 1; // check if the opponent's hand was properly discarded + int opponentDiscardCheck = 1; // check if the opponent's discard was properly added to + int opponentGainedFour = 1; // check if opponent gained 4 new cards. + + + // Helper variables + int randomCard; // random card to put in hand of player + int minionIndex; // index of the Minion card + + int k[10] = {adventurer, council_room, feast, gardens, mine, + remodel, smithy, village, minion, great_hall}; + + struct gameState G; // set a gameState + srand(time(NULL)); //seed the random generator + + printf ("*****************************************************\n"); + printf ("RANDOM TEST 2: Random Testing minionEffect function.\n"); + printf ("*****************************************************\n"); + + memset(&G, 2, sizeof(struct gameState)); + + for(int i = 0; i<1000000; i++){ + + r = initializeGame(numPlayer, k, (int)(rand()%1000+1), &G); + + // Randomize handCount of both players. From 1 to 10. + handSizeBefore = (int)(rand()%10+1); + G.handCount[0] = handSizeBefore; + opponentHandSizeBefore = (int)(rand()%10+1); + G.handCount[1] = handSizeBefore; + + // Initialize deck of both players with 20 counts of Coppers. + G.deckCount[0] = 20; + G.deckCount[1] = 20; + for(int j = 0; j<20; j++){ + G.deck[0][j] = copper; + G.deck[1][j] = copper; + } + + // Set initial discardCount of both players to 0. + G.discardCount[0] = 0; + G.discardCount[1] = 0; + + numActionsBefore = (int)(rand()%10+1); // Randomize number of actions initially from 1-10 + G.numActions = numActionsBefore; + numCoinsBefore = (int)(rand()%10+1); // Randomize number of coins initially from 1-10 + G.coins = numCoinsBefore; + + // Randomize the choice1 and choice2 + choice1 = (int)(rand()%2); // choice1 random. Either 0 or 1. + if(choice1 == 1){ + choice2 = 0; + } + else{ + choice2 = 1; + } + + // Randomize what is in the hand of the player and opponent + // 0-10 are corresponding k array. 11 is a Silver card. + // Player1 + for(int j=0; j 0){ + + testminionEffect = minionEffect(&G, minionIndex, currentPlayer, choice1, choice2); + + // Check if the number of actions is increased by 1 + if(numActionsBefore != G.numActions-1){ + actionsCheck = 0; + } + + // Check for if choice1 was chosen + if(choice1 == 1){ + + // Check if Minion card was discarded from hand + numMinionAfter = 0; + for(int j=0; j4){ + // Check handCount of player 2 + if(G.handCount[1] != 4){ + opponentGainedFour = 0; + } + + // Check hand of player 2 is from deck + for(int j=0; j +#include +#include +#include +#include +#include "rngs.h" + +int main () { + + int r; + int numPlayer = 2; // set the number of players + int testTributeEffect; // return of testMinionEffect function + int currentPlayer = 0; // set who the current player is + + // Counters before the function call + int numActionsBefore; // **Randomized** + int numCoinsBefore; // **Randomized** + int numPlayerCardsBefore; // **Randomized** + int numOpponentDeckBefore; // **Randomized** + int numOpponentDiscardBefore; // **Randomized** + + // Counters for after function Call + int revealedTemp[2] = {-1,-1}; + int actionsIncrease; + int coinsIncrease; + int cardsIncrease; + + // Flags to check if test passes + int actionsCheck = 1; // check number of actions after call. 0 = not ok. 1 = ok. + int coinsCheck = 1; // check number of coins after call + int cardsCheck = 1; // check number of cards after call + + // Helper variables + int randomCard; // random card to put in hand of player + + int k[10] = {adventurer, council_room, feast, gardens, mine, + remodel, smithy, village, tribute, great_hall}; + + struct gameState G; // set a gameState + srand(time(NULL)); //seed the random generator + + printf ("*****************************************************\n"); + printf ("RANDOM TEST 3: Random Testing tributeEffect function.\n"); + printf ("*****************************************************\n"); + + memset(&G, 2, sizeof(struct gameState)); + + for(int i = 0; i<1000000; i++){ + + r = initializeGame(numPlayer, k, (int)(rand()%1000+1), &G); + + // Set the current player's number of Actions and Coins before + numActionsBefore = (int)(rand()%10+1); // Random from 1 to 10 + G.numActions = numActionsBefore; + numCoinsBefore = (int)(rand()%10+1); // Random from 1 to 10 + G.coins = numCoinsBefore; + + // Set the current player's hand with random number of cards -- use copper + numPlayerCardsBefore = (int)(rand()%10+1); // Random from 1 to 10 + G.handCount[0] = numPlayerCardsBefore; + for(int j=0; j=2){ + revealedTemp[0] = G.deck[1][numOpponentDeckBefore-1]; + revealedTemp[1] = G.deck[1][numOpponentDeckBefore-2]; + } + + // If the revealed card was a duplicate + if(revealedTemp[0] == revealedTemp[1]){ + revealedTemp[1] = -1; + } + + // Call the card effect function + testTributeEffect = tributeEffect(&G, currentPlayer, currentPlayer+1); + + // Add conditions based on rule of card + actionsIncrease = 0; + coinsIncrease = 0; + cardsIncrease = 0; + if(numOpponentDeckBefore>=2){ + for(int j=0; j<2; j++){ + + if(revealedTemp[j] == copper || revealedTemp[j] == silver || revealedTemp[j] == gold){ + coinsIncrease = coinsIncrease+2; + } + else if(revealedTemp[j] == estate || revealedTemp[j] == duchy || revealedTemp[j] == province || revealedTemp[j] == gardens || revealedTemp[j] == great_hall){ + cardsIncrease = cardsIncrease+2; + } + else if(revealedTemp[j] == k[0] || revealedTemp[j] == k[1] || revealedTemp[j] == k[2] || revealedTemp[j] == k[3] || revealedTemp[j] == k[4] || revealedTemp[j] == k[5] || revealedTemp[j] == k[6] || revealedTemp[j] == k[7] || revealedTemp[j] == k[8] || revealedTemp[j] == k[9]){ + actionsIncrease = actionsIncrease+2; + } + } + + // Checks to see if increases are correct + if(numActionsBefore != G.numActions - actionsIncrease){ + actionsCheck = 0; + } + if(numCoinsBefore != G.coins - coinsIncrease){ + coinsCheck = 0; + } + if(numPlayerCardsBefore != G.handCount[0] - cardsIncrease){ + cardsCheck = 0; + } + } + } + // End of the for loop + // Pass or Fail checks at the end of the tests. + if(actionsCheck == 1){ + printf ("Subtest 1: Number of actions ok?: Pass\n"); + } + else{ + printf ("Subtest 1: Number of actions ok?: Fail\n"); + } + if(coinsCheck == 1){ + printf ("Subtest 2: Number of coins ok?: Pass\n"); + } + else{ + printf ("Subtest 2: Number of coins ok?: Fail\n"); + } + if(cardsCheck == 1){ + printf ("Subtest 3: Number of cards ok?: Pass\n"); + } + else{ + printf ("Subtest 3: Number of cards ok?: Fail\n"); + } + + printf ("****************************************************************\n"); + printf ("RANDOM TEST 3 COMPLETE\n"); + printf ("****************************************************************\n"); + + return 0; + +} diff --git a/projects/kyawmyis/dominion/rngs.gcda b/projects/kyawmyis/dominion/rngs.gcda deleted file mode 100644 index ca59edb90f430afd12ad153058fde3f26b5032a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 816 zcmYdHNlw=?GB7EhTeOdXfq{_~NPs{_-nkV_KsqQfFC{-0B(ji^2T1M#F@az!gkoTa z(&&7cI-oQo8;AhnGZyoQm^mOLL2d;3CE~lsVHO}AoSKuGToPPTl$r?k8ORNMP&GgbZYRtP7!8sG0T>@- zCKQ0f4dl0mZ3;&~;sK>#9|Bnm8MS~UOf8HC3V{J3J}z}Iaca>>?g0A*6i!8TX1_q< y?x_gBfW)x?a2$iu4%bH69#A-hq!yPTryV6Mng&p4AuJt%+yIMD9PU|+EDivU=`%wB diff --git a/projects/kyawmyis/dominion/rngs.gcno b/projects/kyawmyis/dominion/rngs.gcno deleted file mode 100644 index f3de0058368fcf70e406cc75125f561f6e8dd81e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3660 zcmb_eOKTKC5bp8));}P4_8_7nqM%trh~8pWG(K@nhIoh@+}#)-81$x)n-B2dMSMh5 zG%E3yiypvPEAO}f|}{7{<^xls=8*zo5Q0!_w3#``K&b`Lde$319YYN zb7qCS2OG_i@v9+V+-i=tcMXTI7l2U9*2H(!qc>aGoyz_~db8Csh75ZkVnR?n^sC|w z9;yQ-)j@_WrM_$(hw`?*9yIz8`m&88)1MS~NahX;A4%50HvP40dK?_jV{u0v9M5BM zy(L`8Hi!≥k-U4!Z+mjb^8w=OgX%8T;e9TExfUk{*73u#e3Ta)3C)PoAxawa!7$ z^AtHz`_LD4qB>ww9ptsbN{WMweU(&)y;-BkCw(Fcx~(F3IX)r!LE%%vr-g@v&j_Ct zJ||p|))V)(IZAQxg+5r^dC^}e49ZAtGENqI(ZMl}7I(?PF^(43aBz&R#ieIKY?)h& zyIist;vK^L(63|PaGrWTmJfI8omSqEPEoGSX(;|vuVC!FnzVDshpkEW5nveCs@g$5 zz1n#w`bWYARo94z^J?UAVN6EV_3@;H(;f|bcjtC|M;->)E(MK08SIX~K4fMJbqk+G8E)1Cn=>YO#axr?T+ws)Yn zDyc2x-RfWq@+JiZd^eO751Dg3FJ#^`>fl4_H)QlECBKJN)#11-y2hpPU0sJQ2giIM zH~gN<=fqHT9d-!m+wAsf*gu)KJKlfi)3~OV@%)8}<&2hku7&?S ztWEZl<@7ROaYo()_6NwwjgszZdl>7Mc-zD1hpk)IB=NR~QCHQwSbx0R^vc%Rb1LJz z`hOa@7s4-vUqvh*)%_~P;arFt$olYFW~ zdnfw$!XJb`3eO6E5-v!6@%mVbLma>$y9aQeqm~b~$?urOejy~j6~|h!xH$*s^{=lb HoC<#clgi^) diff --git a/projects/kyawmyis/dominion/testdrawcard.c b/projects/kyawmyis/dominion/testdrawcard.c index da5379646..436527e34 100644 --- a/projects/kyawmyis/dominion/testdrawcard.c +++ b/projects/kyawmyis/dominion/testdrawcard.c @@ -1,74 +1,224 @@ #include "dominion.h" -#include "dominion_helpers.h" #include #include #include #include "rngs.h" -#define DEBUG 0 -#define NOISY_TEST 1 - -int checkDrawCard(int p, struct gameState *post) { - struct gameState pre; - memcpy (&pre, post, sizeof(struct gameState)); - - int r; - // printf ("drawCard PRE: p %d HC %d DeC %d DiC %d\n", - // p, pre.handCount[p], pre.deckCount[p], pre.discardCount[p]); - - r = drawCard (p, post); - - //printf ("drawCard POST: p %d HC %d DeC %d DiC %d\n", - // p, post->handCount[p], post->deckCount[p], post->discardCount[p]); - - if (pre.deckCount[p] > 0) { - pre.handCount[p]++; - pre.hand[p][pre.handCount[p]-1] = pre.deck[p][pre.deckCount[p]-1]; - pre.deckCount[p]--; - } else if (pre.discardCount[p] > 0) { - memcpy(pre.deck[p], post->deck[p], sizeof(int) * pre.discardCount[p]); - memcpy(pre.discard[p], post->discard[p], sizeof(int)*pre.discardCount[p]); - pre.hand[p][post->handCount[p]-1] = post->hand[p][post->handCount[p]-1]; - pre.handCount[p]++; - pre.deckCount[p] = pre.discardCount[p]-1; - pre.discardCount[p] = 0; - } - - assert (r == 0); - - assert(memcmp(&pre, post, sizeof(struct gameState)) == 0); -} int main () { - - int i, n, r, p, deckCount, discardCount, handCount; - + + int testBaronEffect; + int r; + int numBuysOriginal; + int numCoinsOriginal; + int k[10] = {adventurer, council_room, feast, gardens, mine, - remodel, smithy, village, baron, great_hall - }; - + remodel, smithy, village, baron, great_hall + }; + struct gameState G; - - printf ("Testing drawCard.\n"); - - printf ("RANDOM TESTS.\n"); - - SelectStream(2); - PutSeed(3); - - for (n = 0; n < 2000; n++) { - for (i = 0; i < sizeof(struct gameState); i++) { - ((char*)&G)[i] = floor(Random() * 256); + + printf ("*******************************************\n"); + printf ("UNIT TEST 1: Testing baronEffect function.\n"); + printf ("*******************************************\n"); + + ///////////////////////////////////////////////////////////////////////////////////// + // Test to see if player chooses to not discard -- estate card available in supply// + //////////////////////////////////////////////////////////////////////////////////// + printf ("----------------------------------------------------------------------\n"); + printf ("Subtest 1 - Test if player chooses to not discard ESTATE card (Supply OK):\n"); + printf ("----------------------------------------------------------------------\n"); + memset(&G, 1, sizeof(struct gameState)); + r = initializeGame(2, k, 323, &G); + G.hand[0][0] = copper; + G.hand[0][1] = copper; + G.hand[0][2] = copper; + G.hand[0][3] = copper; + G.hand[0][4] = copper; + G.numBuys = 1; + G.handCount[0] = 5; + numBuysOriginal = G.numBuys; + + testBaronEffect = baronEffect(&G, 0, 0); + + // Check if the player has an ESTATE card in his hand + int checker = 0; + for(int i=0; i<=G.handCount[0]; i++){ + if(G.hand[0][i] == estate){ + checker = 1; } - p = floor(Random() * 2); - G.deckCount[p] = floor(Random() * MAX_DECK); - G.discardCount[p] = floor(Random() * MAX_DECK); - G.handCount[p] = floor(Random() * MAX_HAND); - checkDrawCard(p, &G); } - - printf ("ALL TESTS OK\n"); - - exit(0); - + if(checker == 1){ + printf ("Subtest 1 Result...Estate card gained?: Pass\n"); + } + else{ + printf ("Subtest 1 Result... Estate card gained?: Fail\n"); + } + // Check if the player has the correct number of Buys in hand + if(numBuysOriginal == G.numBuys-1){ + printf ("Subtest 1 Result...Buy+1 Gained?: Pass\n"); + } + else{ + printf ("Subtest 1 Result...Buy+1 Gained?: Fail\n"); + } + + /* + for(int i=0; i