Compare commits
11 Commits
master
...
developmen
| Author | SHA1 | Date |
|---|---|---|
|
|
bade63dbc3 | |
|
|
c5fdcbe373 | |
|
|
24d1e5b779 | |
|
|
2b2d4931fc | |
|
|
db58957c85 | |
|
|
9786d5b661 | |
|
|
250d8523ec | |
|
|
a4993b02bc | |
|
|
09810d6449 | |
|
|
7887ee2678 | |
|
|
9bd09b0483 |
|
|
@ -0,0 +1,30 @@
|
|||
cmake_minimum_required(VERSION 3.28)
|
||||
project(Drugwars)
|
||||
find_package(Doxygen REQUIRED)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
|
||||
add_executable(Drugwars src/main.cpp
|
||||
src/Bag.cpp
|
||||
src/Player.cpp
|
||||
src/Bank.cpp
|
||||
src/LoanShark.cpp
|
||||
src/Region.cpp
|
||||
src/Game.cpp
|
||||
src/RegionManager.cpp
|
||||
|
||||
|
||||
)
|
||||
target_include_directories(Drugwars PRIVATE src/include)
|
||||
|
||||
if(DOXYGEN_FOUND)
|
||||
set(DOXYGEN_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs")
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/docs/Doxyfile @ONLY)
|
||||
|
||||
add_custom_target(doc ALL
|
||||
COMMAND ${DOXYGEN_EXECUTABLE} docs/Doxyfile
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMENT "Generating API documentation with Doxygen"
|
||||
VERBATIM)
|
||||
endif()
|
||||
122
main.cpp
122
main.cpp
|
|
@ -1,122 +0,0 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
#define MAX_TURNS 30
|
||||
enum Objects{
|
||||
Acid,
|
||||
Weed,
|
||||
Speed,
|
||||
Cocaine,
|
||||
Ludes
|
||||
|
||||
|
||||
};
|
||||
class Bags{
|
||||
public:
|
||||
|
||||
int max_Number_Items;
|
||||
std::vector<Objects> items;
|
||||
std::map<std::string, std::vector<int>> indexesMap;
|
||||
|
||||
Bags(){
|
||||
indexesMap["Acid"] = std::vector<int>();
|
||||
indexesMap["Weed"] = std::vector<int>();
|
||||
indexesMap["Speed"] = std::vector<int>();
|
||||
indexesMap["Cocaine"] = std::vector<int>();
|
||||
indexesMap["Ludes"] = std::vector<int>();
|
||||
|
||||
}
|
||||
|
||||
void setCapacity(int size){
|
||||
this->max_Number_Items = size;
|
||||
|
||||
};
|
||||
void addItem(Objects item){
|
||||
items.push_back(item);
|
||||
addIndexToIndexesMap(item);
|
||||
|
||||
}
|
||||
void addIndexToIndexesMap(Objects item){
|
||||
switch (item) {
|
||||
case Acid:
|
||||
indexesMap["Acid"].push_back(items.size()-1);
|
||||
break;
|
||||
case Weed:
|
||||
indexesMap["Weed"].push_back(items.size()-1);
|
||||
break;
|
||||
case Speed:
|
||||
indexesMap["Speed"].push_back(items.size()-1);
|
||||
break;
|
||||
case Cocaine:
|
||||
indexesMap["Cocaine"].push_back(items.size()-1);
|
||||
break;
|
||||
case Ludes:
|
||||
indexesMap["Ludes"].push_back(items.size()-1);
|
||||
break;
|
||||
}
|
||||
};
|
||||
void addMultipleItems(Objects item, int n){
|
||||
for (int i = 0; i< n;i++){
|
||||
addItem(item);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class Basic_Trenchcoat: public Bags{
|
||||
public:
|
||||
Basic_Trenchcoat(): Bags(){
|
||||
this->setCapacity(100);
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
class Player{
|
||||
private:
|
||||
int Money = 0;
|
||||
Bags *inventory = new Basic_Trenchcoat();
|
||||
|
||||
public:
|
||||
|
||||
~Player(){
|
||||
delete inventory;
|
||||
}
|
||||
|
||||
void addItemsToInventory(Objects items, int n){
|
||||
inventory->addMultipleItems(items,n);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class Game{
|
||||
private:
|
||||
Player *player = new Player();
|
||||
int current_Turn = 0;
|
||||
|
||||
|
||||
public:
|
||||
void Run(){
|
||||
player->addItemsToInventory(Acid,150);
|
||||
|
||||
|
||||
};
|
||||
~Game(){
|
||||
delete player;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
int main() {
|
||||
Game *main = new Game;
|
||||
main->Run();
|
||||
|
||||
delete main;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#include "Bag.h"
|
||||
|
||||
void Bag::incrementUsedCapacity() {
|
||||
usedCapacity++;
|
||||
}
|
||||
|
||||
void Bag::decrementUsedCapacity() {
|
||||
usedCapacity--;
|
||||
}
|
||||
|
||||
void Bag::setMaxCapacity(int n) {
|
||||
maxCapacity = n;
|
||||
}
|
||||
|
||||
int Bag::getMaxCapacity() {
|
||||
return maxCapacity;
|
||||
}
|
||||
|
||||
int Bag::getUsedCapacity() {
|
||||
return usedCapacity;
|
||||
}
|
||||
|
||||
int Bag::getAvailableCapacity() {
|
||||
return getMaxCapacity() - getUsedCapacity();
|
||||
}
|
||||
|
||||
void Bag::addItem(DrugTypes item) {
|
||||
if (getAvailableCapacity() > 0){
|
||||
items[item] += 1;
|
||||
incrementUsedCapacity();
|
||||
}
|
||||
}
|
||||
|
||||
void Bag::addMultipleItems(DrugTypes item, int n) {
|
||||
if(getAvailableCapacity() >= n && n > 0){
|
||||
for (int i = 0; i < n; i++){
|
||||
addItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int Bag::getAmountInBag(DrugTypes item) {
|
||||
return items[item];
|
||||
}
|
||||
|
||||
void Bag::subtractItem(DrugTypes item) {
|
||||
if (items[item] >= 1){
|
||||
items[item] -= 1;
|
||||
decrementUsedCapacity();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void Bag::subtractMultipleItems(DrugTypes item, int n) {
|
||||
if (items[item] >= n ){
|
||||
for (int i = 0;i < n;i++){
|
||||
subtractItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Bag::Bag(int maxcapacity) {
|
||||
setMaxCapacity(maxcapacity);
|
||||
items[Acid] = 0;
|
||||
items[Weed] = 0;
|
||||
items[Speed] = 0;
|
||||
items[Cocaine] = 0;
|
||||
items[Ludes] = 0;
|
||||
items[Heroin] = 0;
|
||||
}
|
||||
|
||||
Bag::~Bag() = default;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#include <cmath>
|
||||
#include "Bank.h"
|
||||
|
||||
Bank::Bank(double taxvalue) {
|
||||
setTax(taxvalue);
|
||||
money = 0;
|
||||
}
|
||||
|
||||
void Bank::depositMoney(int value) {
|
||||
money += value;
|
||||
}
|
||||
|
||||
void Bank::withdrawMoney(int value) {
|
||||
if (money >= value){
|
||||
money -= value;
|
||||
}
|
||||
}
|
||||
|
||||
int Bank::getMoney() {
|
||||
return money;
|
||||
}
|
||||
|
||||
void Bank::updateMoney() {
|
||||
money = std::round(money * (1+tax));
|
||||
}
|
||||
|
||||
void Bank::setTax(double value) {
|
||||
tax = value;
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#include "Game.h"
|
||||
|
||||
void Game::setup() {
|
||||
Region *ghetto = new Region;
|
||||
Region *centralPark = new Region;
|
||||
Region *manhattan = new Region;
|
||||
Region *conneyIsland = new Region;
|
||||
Region *brooklyn = new Region;
|
||||
regionManager = new RegionManager(ghetto,centralPark,manhattan,
|
||||
conneyIsland,brooklyn);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#include <cmath>
|
||||
#include "LoanShark.h"
|
||||
|
||||
|
||||
LoanShark::LoanShark(int money, double taxvalue) {
|
||||
setOwnedMoney(money);
|
||||
setTax(taxvalue);
|
||||
|
||||
}
|
||||
|
||||
void LoanShark::setTax(double taxvalue) {
|
||||
tax = taxvalue;
|
||||
}
|
||||
|
||||
void LoanShark::setOwnedMoney(int money) {
|
||||
ownedMoney = money;
|
||||
|
||||
}
|
||||
|
||||
int LoanShark::getOwnedMoney() {
|
||||
return ownedMoney;
|
||||
}
|
||||
|
||||
void LoanShark::payLoan(Player *playerreference, int money) {
|
||||
if (playerreference->checkEnoughMoney(money)) {
|
||||
if (money > ownedMoney) {
|
||||
playerreference->decrementMoney(ownedMoney);
|
||||
setOwnedMoney(0);
|
||||
} else {
|
||||
playerreference->decrementMoney(money);
|
||||
ownedMoney -= money;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void LoanShark::getLoan(Player *playerreference, int money) {
|
||||
ownedMoney += money;
|
||||
playerreference->incrementMoney(money);
|
||||
}
|
||||
|
||||
void LoanShark::updateOwnedMoney() {
|
||||
ownedMoney = std::round(ownedMoney * (1+tax));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#include "Player.h"
|
||||
|
||||
void Player::setMoney(int value){
|
||||
money = value;
|
||||
}
|
||||
|
||||
int Player::getCurrentMoney() {
|
||||
return money;
|
||||
}
|
||||
|
||||
void Player::incrementMoney(int value) {
|
||||
money += value;
|
||||
}
|
||||
|
||||
void Player::decrementMoney(int value) {
|
||||
if(money >= value){
|
||||
money -= value;
|
||||
}
|
||||
}
|
||||
Bag* Player::getInventory(){
|
||||
return inventory;
|
||||
}
|
||||
|
||||
Player::Player(){
|
||||
setMoney(2500);
|
||||
inventory = new Bag(100);
|
||||
|
||||
}
|
||||
|
||||
Player::~Player() {
|
||||
delete inventory;
|
||||
}
|
||||
|
||||
bool Player::checkEnoughMoney(int value) {
|
||||
return money >= value;
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#include "Region.h"
|
||||
|
||||
Region::Region(RegionManager *regionmanagerreference, Places regioname) {
|
||||
setRegionManagerReference(regionmanagerreference);
|
||||
setName(regioname);
|
||||
}
|
||||
|
||||
void Region::setRegionManagerReference(RegionManager *reference){
|
||||
regionManager = reference;
|
||||
}
|
||||
|
||||
void Region::setName(Places regionname){
|
||||
name = regionname;
|
||||
}
|
||||
|
||||
RegionManager* Region::getRegionManagerReference(){
|
||||
return regionManager;
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#include "RegionManager.h"
|
||||
|
||||
RegionManager::RegionManager(Region *ghettoref, Region *centralparkref, Region *manhattanref, Region *conneyislandref,
|
||||
Region *brooklynref) {
|
||||
ghetto = ghettoref;
|
||||
centralPark = centralparkref;
|
||||
manhattan = manhattanref;
|
||||
conneyIsland = conneyislandref;
|
||||
brooklyn = brooklynref;
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#ifndef DRUGWARS_BAG_H
|
||||
#define DRUGWARS_BAG_H
|
||||
|
||||
#include <map>
|
||||
|
||||
enum DrugTypes{
|
||||
Acid,
|
||||
Weed,
|
||||
Speed,
|
||||
Cocaine,
|
||||
Ludes,
|
||||
Heroin
|
||||
};
|
||||
|
||||
class Bag {
|
||||
private:
|
||||
int maxCapacity;
|
||||
int usedCapacity;
|
||||
std::map<DrugTypes,int> items;
|
||||
void incrementUsedCapacity();
|
||||
void decrementUsedCapacity();
|
||||
void setMaxCapacity(int n);
|
||||
public:
|
||||
Bag(int maxcapacity);
|
||||
~Bag();
|
||||
int getMaxCapacity();
|
||||
int getUsedCapacity();
|
||||
int getAvailableCapacity();
|
||||
void addItem(DrugTypes item);
|
||||
void addMultipleItems(DrugTypes item, int n);
|
||||
int getAmountInBag(DrugTypes item);
|
||||
void subtractItem(DrugTypes item);
|
||||
void subtractMultipleItems(DrugTypes item, int n);
|
||||
};
|
||||
|
||||
|
||||
#endif //DRUGWARS_BAG_H
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#ifndef DRUGWARS_BANK_H
|
||||
#define DRUGWARS_BANK_H
|
||||
|
||||
class Bank{
|
||||
private:
|
||||
int money;
|
||||
double tax;
|
||||
void setTax(double value);
|
||||
public:
|
||||
Bank(double taxvalue);
|
||||
void depositMoney(int value);
|
||||
void withdrawMoney(int value);
|
||||
int getMoney();
|
||||
void updateMoney();
|
||||
|
||||
};
|
||||
|
||||
#endif //DRUGWARS_BANK_H
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#pragma ONCE
|
||||
|
||||
|
||||
|
||||
#include "RegionManager.h"
|
||||
#include "Player.h"
|
||||
|
||||
class Game {
|
||||
private:
|
||||
Player *player = new Player();
|
||||
RegionManager *regionManager;
|
||||
public:
|
||||
void setup();
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#ifndef DRUGWARS_LOANSHARK_H
|
||||
#define DRUGWARS_LOANSHARK_H
|
||||
|
||||
#include "Player.h"
|
||||
|
||||
class LoanShark{
|
||||
private:
|
||||
int ownedMoney;
|
||||
double tax;
|
||||
void setTax(double taxvalue);
|
||||
void setOwnedMoney(int money);
|
||||
public:
|
||||
LoanShark(int money, double taxvalue);
|
||||
int getOwnedMoney();
|
||||
void payLoan(Player *playerreference, int money);
|
||||
void getLoan(Player *playerreference, int money);
|
||||
void updateOwnedMoney();
|
||||
};
|
||||
|
||||
#endif //DRUGWARS_LOANSHARK_H
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
|
||||
#ifndef DRUGWARS_PLAYER_H
|
||||
#define DRUGWARS_PLAYER_H
|
||||
|
||||
|
||||
#include "Bag.h"
|
||||
|
||||
class Player {
|
||||
private:
|
||||
int money;
|
||||
Bag * inventory;
|
||||
void setMoney(int value);
|
||||
public:
|
||||
Player();
|
||||
~Player();
|
||||
int getCurrentMoney();
|
||||
void incrementMoney(int value);
|
||||
void decrementMoney(int value);
|
||||
Bag *getInventory();
|
||||
bool checkEnoughMoney(int value);
|
||||
};
|
||||
|
||||
|
||||
#endif //DRUGWARS_PLAYER_H
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#pragma ONCE
|
||||
|
||||
|
||||
#include <map>
|
||||
|
||||
#include "Bag.h"
|
||||
#include "RegionManager.h"
|
||||
|
||||
|
||||
class RegionManager;
|
||||
|
||||
class Region{
|
||||
private:
|
||||
RegionManager* regionManager;
|
||||
Places name;
|
||||
std::map<DrugTypes,int> prices;
|
||||
void setRegionManagerReference(RegionManager *reference);
|
||||
void setName(Places regionname);
|
||||
public:
|
||||
Region(RegionManager *regionmanagerreference,Places regioname);
|
||||
|
||||
RegionManager *getRegionManagerReference();
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
//
|
||||
// Created by gustavomiranda on 27/09/24.
|
||||
//
|
||||
#pragma ONCE
|
||||
|
||||
#include "Region.h"
|
||||
|
||||
|
||||
enum Places{
|
||||
Bronx,
|
||||
Ghetto,
|
||||
Central_Park,
|
||||
Manhattan,
|
||||
Conney_Island,
|
||||
Brooklyn
|
||||
};
|
||||
|
||||
class RegionManager{
|
||||
private:
|
||||
Region *ghetto;
|
||||
Region *centralPark;
|
||||
Region *manhattan;
|
||||
Region *conneyIsland;
|
||||
Region *brooklyn;
|
||||
public:
|
||||
RegionManager(Region *ghettoref, Region* centralparkref, Region* manhattanref, Region* conneyislandref, Region* brooklynref);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
|
||||
|
||||
|
||||
#define MAX_TURNS 30
|
||||
|
||||
|
||||
|
||||
int main() {
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue