|
Skiljer mellan poänghänder, men inte mellan olika valörer av samma typ av poänghand (förutom olika ”High cards”)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//main
#include
#include
#include ”validate.h”
#include ”card.h”
#include ”deck.h”
#include ”hand.h”
int main(int argc, char* argv[])
{
Deck deck;
Card card;
Validate validate;
Hand playerOne;
Hand playerTwo;
int PlayerOneScore = 0;
int PlayerTwoScore = 0;
for (int i = 0; i != 4;)
{
std::cout << ”1. Shuffle (recommended) n2. Play two player match! n3. Display score nExit” << std::endl; // menu
std::cin >> i;
switch (i)
{
case 1:
{
deck.Shuffle(); // shuffle
std::cout << ”Shuffled..” << std::endl;
break;
}
case 2:
{
std::cout << ”Dealing.. ” << std::endl; //deal cards
for (int deal = 0; deal != 5; deal++)
{
playerOne.Add(deck.DrawCard(), deal);
playerTwo.Add(deck.DrawCard(), deal);
}
std::cout << ”Player one hand: ” << std::endl; //display hands
for (int display = 0; display != 5; display++)
{
card.Print(playerOne.ReturnCardValue(display));
}
std::cout << std::endl;
std::cout << ”Player two hand: ” << std::endl;
for (int display = 0; display != 5; display++)
{
card.Print(playerTwo.ReturnCardValue(display));
}
std::cout << std::endl;
for (int rounds = 0; rounds != 1; rounds++)
{
for (int playeroneround = 0; playeroneround != 5; playeroneround++)
{
std::cout << ”Player One, would you like to swap card ” << playeroneround +1 << ”(y/n) ?” << std::endl; //swap one
char swapanswer = ‘n’;
std::cin >> swapanswer;
if (swapanswer == ‘y’)
{
playerOne.Remove(playeroneround);
playerOne.Add(deck.DrawCard(), playeroneround);
}
}
for (int playertworound = 0; playertworound != 5;playertworound++)
{
std::cout << ”Player Two, would you like to swap card ” << playertworound +1 << ”(y/n) ?” << std::endl; // swap two
char swapanswer = ‘n’;
std::cin >> swapanswer;
if (swapanswer == ‘y’)
{
playerTwo.Remove(playertworound);
playerTwo.Add(deck.DrawCard(), playertworound);
}
}
std::cout << ”Player one hand: ” << std::endl; // display hands after swaps
for (int display = 0; display != 5; display++)
{
card.Print(playerOne.ReturnCardValue(display));
}
std::cout << std::endl;
std::cout << ”Player two hand: ” << std::endl;
for (int display = 0; display != 5; display++)
{
card.Print(playerTwo.ReturnCardValue(display));
}
std::cout << std::endl;
}
if (validate.Check(playerOne.ReturnCardValue(0), playerOne.ReturnCardValue(1), playerOne.ReturnCardValue(2), playerOne.ReturnCardValue(3), playerOne.ReturnCardValue(4)) >
validate.Check(playerTwo.ReturnCardValue(0), playerTwo.ReturnCardValue(1), playerTwo.ReturnCardValue(2), playerTwo.ReturnCardValue(3), playerTwo.ReturnCardValue(4)))
{
std::cout << ”Player One is the winner!” << std::endl;
PlayerOneScore += 1;
break;
}
else if (validate.Check(playerOne.ReturnCardValue(0), playerOne.ReturnCardValue(1), playerOne.ReturnCardValue(2), playerOne.ReturnCardValue(3), playerOne.ReturnCardValue(4)) <
validate.Check(playerTwo.ReturnCardValue(0), playerTwo.ReturnCardValue(1), playerTwo.ReturnCardValue(2), playerTwo.ReturnCardValue(3), playerTwo.ReturnCardValue(4)))
{
std::cout << ”Player Two is the winner!” << std::endl;
PlayerTwoScore += 1;
break;
}
else if (validate.Check(playerOne.ReturnCardValue(0), playerOne.ReturnCardValue(1), playerOne.ReturnCardValue(2), playerOne.ReturnCardValue(3), playerOne.ReturnCardValue(4)) ==
validate.Check(playerTwo.ReturnCardValue(0), playerTwo.ReturnCardValue(1), playerTwo.ReturnCardValue(2), playerTwo.ReturnCardValue(3), playerTwo.ReturnCardValue(4)))
{
std::cout << ”It’s a tie!” << std::endl;
break;
}
else
{
std::cout << ”Error…” << std::endl;
break;
}
}
case 3:
{
std::cout << ”Player one score: ” << PlayerOneScore << std::endl;
std::cout << ”Player two score: ” << PlayerTwoScore << std::endl;
break;
}
case 4:
{
return 0;
break;
}
}
}
return 0;
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//card.cpp
#include ”card.h”
Card::Card()
{
Card::m_highs[0] = ”Jack”;
Card::m_highs[1] = ”Queen”;
Card::m_highs[2] = ”King”;
Card::m_highs[3] = ”Ace”;
}
void Card::Print(int input)
{
if (input == 0)
std::cout << ”Empty”;
else if (input % 13 != 0 && input % 13 <=10 && input % 13 != 1)
std::cout << input % 13 << ” of ”;
else if (input % 13 != 0 && input % 13 >= 11)
std::cout << m_highs[(input % 13)-11] << ” of ”;
else if (input == 13 || input == 26 || input == 39 || input == 52)
std::cout << m_highs[2] << ” of ”;
else if (input % 13 == 1)
std::cout << m_highs[3];
if (input >= 1 && input <= 13)
std::cout << ”Hearts” << std::endl;
else if (input >= 14 && input <= 26)
std::cout << ”Spades” << std::endl;
else if (input >= 27 && input <= 39)
std::cout << ”Clubs” << std::endl;
else if (input >= 40 && input <= 52)
std::cout << ”Diamonds” << std::endl;
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//hand.h
class Hand
{
public:
Hand();
void Add(int value, int position);
void Remove(int position);
int ReturnCardValue(int position);
private:
int m_hand[5];
};
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//deck.cpp
#include ”deck.h”
#include
#include
Deck::Deck()
{
for (int i = 0; i != 52; i++)
{
m_deck[i] = i + 1;
}
srand(static_cast(time(0)));
srand((rand() / 2) + (rand() / 2));
}
void Deck::Shuffle()
{
for (int i = 0; i != 51; i++)
{
int temp = rand() % 51 + 1;
m_deck[i] = temp;
m_deck[temp] = i;
}
}
int Deck::DrawCard()
{
for (int i = 0; i != 52; i++)
{
if (m_deck[i] != 0)
{
int temp = 0;
temp = m_deck[i];
m_deck[i] = 0;
return (temp);
}
}
return 0;
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//hand.cpp
#include ”hand.h”
Hand::Hand()
{
for (int i = 0; i < 5; i++)
{
m_hand[i] = 0;
}
}
void Hand::Remove(int position)
{
m_hand[position] = 0;
}
void Hand::Add(int value, int position)
{
m_hand[position] = value;
}
int Hand::ReturnCardValue(int position)
{
return m_hand[position];
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//validate.cpp
#include ”validate.h”
#include
Validate::Validate()
{
}
int Validate::Check(int one, int two, int three, int four, int five) //returns score value
{
int temp[5] = { one, two, three, four, five };
for (int ii = 0; ii != 3; ii++) // sort temp
{
for (int i = 0; i != 3; i++)
{
if (temp[i] > temp[i + 1])
{
int swap = temp[i];
temp[i] = temp[i + 1];
temp[i + 1] = swap;
}
}
}
if ((temp[0] % 13 == temp[1] % 13 || temp[1] % 13 == temp[2] % 13) && temp[3] % 13 == temp[4] % 13) // check for two pairs
{
if ((temp[0] % 13 == temp[1] % 13 == temp[2] % 13) || (temp[2] % 13 == temp[3] % 13 == temp[4] % 13)) // if one of those pairs is infact three of a kind…
{
return 20;
}
return 16;
}
else if (temp[0] % 13 == temp[1] % 13 || temp[1] % 13 == temp[2] % 13 || temp[2] % 13 == temp[3] % 13 || temp[3] % 13 == temp[4] % 13) // if a pair is found…
{
for (int i = 0; i != 4; i++) // …check two, three, four of a kind
{
if (temp[i] % 13 == temp[i + 1] % 13)
{
if (temp[i] % 13 == temp[i + 1] % 13 == temp[i + 2] % 13)
{
if (temp[i] % 13 == temp[i + 1] % 13 == temp[i + 2] % 13 == temp[i + 3] % 13)
{
return 21;
}
return 17;
}
return 15;
}
}
}
else if (temp[0] % 13 == (temp[1]-1) % 13 == (temp[2]-2) % 13 == (temp[3]-3) % 13 == (temp[4]-4) % 13) // check for Straights
{
if (temp[0] == (temp[1] – 1) == (temp[2] – 2) == (temp[3] – 3) == (temp[4] – 4))
{
if (temp[0] % 13 == 10)
{
return 23;
}
return 22;
}
return 18;
}
else if ((temp[0] <= 13 && temp[1] <= 13 && temp[2] <= 13 && temp[3] <= 13 && temp[4] <= 13) ||
(temp[0] = 14 && temp[1] = 14 && temp[2] = 14 && temp[3] = 14 && temp[4] = 14) ||
(temp[0] = 27 && temp[1] = 27 && temp[2] = 27 && temp[3] = 27 && temp[4] = 27) ||
(temp[0] = 40 && temp[1] = 40 && temp[2] = 40 && temp[3] = 40 && temp[4] = 40))
{
return 19;
}
else if (temp[0] == 1) // check for ace high
{
std::cout << ”Ace High”;
return 14;
}
else // return high card
{
std::cout << ”High Card” << std::endl;
return temp[4];
}
}
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// card.h
#include
#include
class Card
{
public:
Card();
void Print(int card);
private:
std::string m_highs[4];
std::string m_colour[4];
};
About Flovin Michaelsen
2014 Programming
|