Compare commits
No commits in common. "development" and "master" have entirely different histories.
developmen
...
master
|
|
@ -1,30 +0,0 @@
|
||||||
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()
|
|
||||||
|
|
@ -0,0 +1,122 @@
|
||||||
|
#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;
|
||||||
|
}
|
||||||
77
src/Bag.cpp
77
src/Bag.cpp
|
|
@ -1,77 +0,0 @@
|
||||||
//
|
|
||||||
// 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;
|
|
||||||
32
src/Bank.cpp
32
src/Bank.cpp
|
|
@ -1,32 +0,0 @@
|
||||||
//
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
16
src/Game.cpp
16
src/Game.cpp
|
|
@ -1,16 +0,0 @@
|
||||||
//
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
//
|
|
||||||
// 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));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
//
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
//
|
|
||||||
// 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;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
//
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
//
|
|
||||||
// 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
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
//
|
|
||||||
// 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
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
//
|
|
||||||
// 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();
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
//
|
|
||||||
// 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
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
//
|
|
||||||
// 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
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
//
|
|
||||||
// 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();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
//
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
src/main.cpp
12
src/main.cpp
|
|
@ -1,12 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define MAX_TURNS 30
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue