void Game::changeCardsUEC( Result *result ){ //UECdaルールによる手札の交換 COUT<<"change"<<endl; //Gameコンストラクタですでに搾取されている //コンストラクタ時点で足されていたものを修復する for(int i=0; i<result->mChange.size(); i++){ if(result->mChange[i].mFrom == players.mibunId(HINMIN)){ deleteCard(players.id[players.mibunId(HINMIN)].cards, result->mChange[i].mCards); }else if(result->mChange[i].mFrom == players.mibunId(DAIHINMIN)){ deleteCard(players.id[players.mibunId(DAIHINMIN)].cards, result->mChange[i].mCards); } } //交換するカードを受け取り、確認を行う(通信) //大富豪から大貧民へ int data[8][15] = {{0}}; recv815(data, players.id[players.mibunId(DAIFUGO)].sockfd); if( !checkChangeCardUEC(data, players.id[players.mibunId(DAIFUGO)]) ){// cout << " DAIFUGO change faled " << endl; //ダメなら、UECサーバは勝手に搾取してしまうようだ memset(data, 0, sizeof(data)); selectHighCard(data, players.id[players.mibunId(DAIFUGO)].cards, 2); } //PRINT815(data); result->addChange(players.mibunId(DAIFUGO), players.mibunId(DAIHINMIN), data);//大富豪の交換カードを保存 deleteCard(players.id[players.mibunId(DAIFUGO)].cards, data);//交換できるなら削除して addCard(players.id[players.mibunId(DAIHINMIN)].cards, data);//押し付ける //富豪から貧民へ memset(data, 0, sizeof(data)); recv815(data, players.id[players.mibunId(FUGO)].sockfd); if( !checkChangeCardUEC(data, players.id[players.mibunId(FUGO)]) ){// cout << " FUGO change faled " << endl; //ダメなら、UECサーバは勝手に搾取してしまうようだ memset(data, 0, sizeof(data)); selectHighCard(data, players.id[players.mibunId(FUGO)].cards, 1); } //PRINT815(data); result->addChange(players.mibunId(FUGO), players.mibunId(HINMIN), data);//富豪の交換カードを保存 deleteCard(players.id[players.mibunId(FUGO)].cards, data);//交換できるなら削除して addCard(players.id[players.mibunId(HINMIN)].cards, data);//押し付ける if(0){ COUT<<"CHANGE"<<endl; for(int i=0; i<result->mChange.size(); i++){ result->mChange[i].print(); } } }
void Monopoly::CardDeck::shuffle() { srand(time(NULL)); int cardsLeft= m_numberCards; // number of cards which have not been put into the array int randomNumber; int* tempCards = new int[m_numberCards]; for(int i=0; i<cardsLeft; i++) //saves all cards in a temporary list { tempCards[i]=m_deck[i]; } for(int i=0; i< m_numberCards; i++) // fills in the card list from front to back by randomly selecting a card from temp, inserting it in deck and deleting it from temp. { randomNumber=rand()%cardsLeft; // which card to chose m_deck[i]=tempCards[randomNumber]; // choses therandomly selected card and adds it to the deck; cardsLeft--; // decreases the cardsLeft, deleteCard(randomNumber,cardsLeft, tempCards); //selected card is being deleted from the temp list, so that it can't be chosen again } delete [] tempCards; }