-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathCards.h
169 lines (156 loc) · 4.43 KB
/
Cards.h
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#pragma once
#include "Orders.h"
#include "Player.h"
#include "map.h"
#include<vector>
#include<iostream>
class Deck;
class Hand;
class Order;
class Orderlist;
class Advanceorder;
class Airliftorder;
class Bomborder;
class Blockadeorder;
class Negotiateorder;
class Card
{
protected:
string name;
public:
Card();
Card(string name);
virtual ~Card();
//creates an order based on the card
virtual void play(Deck* deck, Hand* hand, Orderlist* orderList);
//just deletes the card and returns it to the deck
virtual void deletecard(Deck* deck, Hand* hand, Player* player) {};
string getName();
Card* find(Hand* hand, string cardName);
//copy ocnstructor
Card(const Card& c);
//assignment operator
Card& operator = (const Card& o);
friend istream &operator >> (istream &stream, Card& o);
friend ostream &operator << (ostream &out, const Card &o);
};
class BombCard : public Card
{
private:
Bomborder* bombOrderPtr;
public:
BombCard(string name);
~BombCard();
//creates an order based on the card
void play(Deck* deck, Player* player, Territory* territory);
//like play but doesnt create an order
void deletecard(Deck* deck, Hand* hand, Player* player);
//copy ocnstructor
BombCard(const BombCard& c);
//assignment operator
BombCard& operator = (const BombCard& o);
};
class ReinforcementCard : public Card
{
private:
Order* reinforcementOrderPtr;
public:
ReinforcementCard(string name);
~ReinforcementCard();
//creates an order based on the card
void play(Deck* deck, Player* player);
//like play but doesnt issue order
void deletecard(Deck* deck, Hand* hand,Player* player);
//copy ocnstructor
ReinforcementCard(const ReinforcementCard& c);
//assignment operator
ReinforcementCard& operator = (const ReinforcementCard& o);
};
class BlockadeCard : public Card
{
private:
Order* blockadeOrderPtr;
public:
BlockadeCard(string name);
~BlockadeCard();
//creates an order based on the card
void play(Deck* deck, Player* player, Territory* territory);
//like play but doesnt issue order
void deletecard(Deck* deck, Hand* hand, Player* player);
//copy ocnstructor
BlockadeCard(const BlockadeCard& c);
//assignment operator
BlockadeCard& operator = (const BlockadeCard& o);
};
class AirliftCard : public Card
{
private:
Order* airliftOrderPtr;
public:
AirliftCard(string name);
~AirliftCard();
//creates an order based on the card
void play( Deck* deck, Player* player, Territory* territorySource, Territory* territoryDestination, int* i);
//like player but it doesnt issue the order, only returns the card to the deck
void deletecard(Deck* deck, Hand* hand, Player* player);
//copy ocnstructor
AirliftCard(const AirliftCard& c);
//assignment operator
AirliftCard& operator = (const AirliftCard& o);
};
class DiplomacyCard : public Card
{
private:
Order* diplomacyOrderPtr;
public:
DiplomacyCard(string name);
~DiplomacyCard();
//creates an order based on the card
void play(Deck* deck, Player* player, Player* targetPlayer);
//like player but it doesnt issue the order, only returns the card to the deck
void deletecard(Deck* deck, Hand* hand, Player* player);
//copy ocnstructor
DiplomacyCard(const DiplomacyCard& c);
//assignment operator
DiplomacyCard& operator = (const DiplomacyCard& o);
};
class Hand
{
private:
vector<Card*>* handOfCardsPtr;
public:
Hand();
~Hand();
vector<Card*> getHandContainer();
void setHand(vector<Card*> h);
//copy ocnstructor
Hand(const Hand& h);
//assignment operator
Hand& operator = (const Hand& h);
friend istream &operator >> (istream& stream, Hand& o);
friend ostream &operator << (ostream &out, const Hand& o);
};
class Deck
{
private:
vector<Card*>* deckOfCardsPtr;
vector<Card*>::iterator itFront;
public:
Card* bombCrdPtr;
Card* reinCrdPtr;
Card* alftCrdPtr;
Card* dpcyCrdPtr;
Card* blkdCrdPtr;
Deck();
Deck(int);
~Deck();
void draw(Hand* hand);
vector<Card*> getDeck();
void setDeck(vector<Card*> h);
//copy ocnstructor
Deck(const Deck& d);
//assignment operator
Deck& operator = (const Deck& d);
friend istream &operator >> (istream& stream, Deck& o);
friend ostream &operator << (ostream &out, const Deck& o);
};