Repository navigation
Expand file tree
/
Copy pathplayer.cpp
More file actions
129 lines (117 loc) · 2.31 KB
/
Copy pathplayer.cpp
File metadata and controls
129 lines (117 loc) · 2.31 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
120
121
122
123
124
125
126
127
128
129
#include "player.h"
#include "exit.h"
#include "globals.h"
#include "item.h"
#include <iostream>
#include <string>
#include <vector>
Player::Player(const char * title, const char * description, Room* room) :
Creature(title, description, room)
{
type = PLAYER;
}
Player::~Player()
{
}
void Player::look(const std::vector<std::string>& args) const
{
if (args.size() == 2)
{
if (Same(args[1], "me"))
{
std::cout << "\n" << name << "\n";
std::cout << description << "\n";
}
else
{
std::cout << "I only understood you as far as wanting to \"" << args[0] << "\"\n";
}
}
else
{
room->look();
}
}
void Player::go(const std::vector<std::string>& args)
{
if (args.size() == 2) {
Exit* exit = room->getExit(args[1]);
if (exit == nullptr)
{
std::cout << "There is no exit at '" << args[1] << "'.\n";
}
else
{
room = exit->destination;
room->look();
}
}
else
{
std::cout << "I only understood you as far as wanting to \"" << args[0] << "\"\n";
}
}
void Player::examine(const std::vector<std::string>& args)
{
if (args.size() == 2) {
for (std::vector<Entity*>::const_iterator it = room->container.begin(); it != room->container.cend(); ++it)
{
if (Same((*it)->name, args[1]) && (*it)->type == ITEM)
{
Item *item = (Item*)*it;
item->look();
return;
}
}
}
else
{
std::cout << "I only understood you as far as wanting to \"" << args[0] << "\"\n";
}
}
void Player::inventory() const
{
if (container.size() == 0)
{
std::cout << "You are empty handed.\n";
return;
}
else
{
for (std::vector<Entity*>::const_iterator it = container.begin(); it != container.cend(); ++it)
{
std::cout << (*it)->name << "\n";
}
}
}
void Player::take(const std::vector<std::string>& args)
{
if (args.size() == 2)
{
Item* item = (Item*)room->getItem(args[1]);
if (item == nullptr)
{
std::cout << "There is no item here like this.\n";
}
else
{
std::cout << item->name << " taken.\n";
container.push_back(item);
room->popItem(item);
}
}
}
void Player::drop(const std::vector<std::string>& args)
{
if (args.size() == 2)
{
for (std::vector<Entity*>::const_iterator it = container.begin(); it != container.cend(); ++it)
{
if (Same((*it)->name, args[1]) && (*it)->type == ITEM)
{
Item* ex = (Item*)*it;
container.erase(it);
}
}
}
}