-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomplayer.cpp
More file actions
119 lines (100 loc) · 2.58 KB
/
complayer.cpp
File metadata and controls
119 lines (100 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "complayer.h"
#include "randgen.h"
Computer::Computer() {}
Card Computer::playACard(Deck deck, Pile pile, Card::Suit currentSuit) {
int counter(1);
while(!myHand.isAtEnd() && counter < myHand.getLength() &&
(!(myHand.lookAtCard().GetRank() == pile.getTopCard().GetRank())
|| !(myHand.lookAtCard().GetSuit() == pile.getTopCard().GetSuit()))
&& !(myHand.lookAtCard().GetSuit() == currentSuit))
{
myHand.nextCard();
++counter;
}
if(myHand.lookAtCard().GetRank() == 8)
{
RandGen random;
switch(random.RandInt(1, 4))
{
case 1: myChosenSuit = Card::clubs;
break;
case 2: myChosenSuit = Card::hearts;
break;
case 3: myChosenSuit = Card::spades;
break;
case 4: myChosenSuit = Card::diamonds;
break;
}
}
return myHand.removeCard();
/*int drawCounter(0);
do
{
int counter(1);
myHand.firstCard();
while(!myHand.isAtEnd() && counter < myHand.getLength())
{
if(myHand.lookAtCard().GetRank() == 8)
{
RandGen random;
switch(random.RandInt(1, 4))
{
case 1: myChosenSuit = Card::clubs;
break;
case 2: myChosenSuit = Card::hearts;
break;
case 3: myChosenSuit = Card::spades;
break;
case 4: myChosenSuit = Card::diamonds;
break;
}
drawCounter = 3;
return myHand.removeCard();
}
else if(myHand.lookAtCard().GetRank() == pile.getTopCard().GetRank()
|| myHand.lookAtCard().GetSuit() == pile.getTopCard().GetSuit()
&& myHand.lookAtCard().GetSuit() == currentSuit)
{
myChosenSuit = myHand.lookAtCard().GetSuit();
drawCounter = 3;
return myHand.removeCard();
}
else
{
myHand.nextCard();
++counter;
}
}
if(drawCounter != 3)
{
myHand.addACard(deck.dealACard());
++drawCounter;
}
}while(drawCounter != 3);*/
}
bool Computer::iCanPlay(Pile pile, Card::Suit currentSuit) {
int counter(1);
bool canPlay(false);
while(!canPlay && !myHand.isAtEnd() && counter <= myHand.getLength())
{
if(myHand.lookAtCard().GetRank() == pile.getTopCard().GetRank()
|| myHand.lookAtCard().GetSuit() == pile.getTopCard().GetSuit()
|| myHand.lookAtCard().GetSuit() == currentSuit)
canPlay = true;
myHand.nextCard();
++counter;
}
return canPlay;
}
void Computer::drawACard(Deck deck) {
myHand.addACard(deck.dealACard());
}
Card::Suit Computer::getMyChoice() {
return myChosenSuit;
}
bool Computer::iAmAWinner() {
return (myHand.getLength() == 0);
}
void Computer::addCard(Card card) {
myHand.addACard(card);
}