Compare commits

...

11 Commits

Author SHA1 Message Date
Gustavo Henrique Santos Souza de Miranda bade63dbc3 Changed how to implement the headers Region.h, RegionManager.h and Game.h by using pragma once 2024-09-27 23:01:57 -03:00
Gustavo Henrique Santos Souza de Miranda c5fdcbe373 updated the CMakeLists.txt 2024-09-27 22:42:12 -03:00
Gustavo Henrique Santos Souza de Miranda 24d1e5b779 Added Few Classes:
Game
Region
and RegionManager
These classes are the main core of the game to make it work.

Also added the main.cpp inside the src folder
2024-09-27 22:33:34 -03:00
Gustavo Henrique Santos Souza de Miranda 2b2d4931fc Commited the Bank::setTax Method that was missing. 2024-09-27 17:07:17 -03:00
Gustavo Henrique Santos Souza de Miranda db58957c85 Commited the Player.h that was missing in the #9786d5b661 commit 2024-09-27 15:01:51 -03:00
Gustavo Henrique Santos Souza de Miranda 9786d5b661 Created the LoanShark.cpp and LoanShark.h to be used as the LoanShark class and also add a new method on the Player class that check if a value is less the money owned by the player 2024-09-27 15:00:13 -03:00
Gustavo Henrique Santos Souza de Miranda 250d8523ec Added Missing CMakeLists.txt to the project 2024-09-27 10:55:04 -03:00
Gustavo Henrique Santos Souza de Miranda a4993b02bc Created Bank.h and Bank.cpp to be used as the Bank Class of the game. 2024-09-27 10:50:20 -03:00
Gustavo Henrique Santos Souza de Miranda 09810d6449 Added a Missing method on Player.cpp to set the Money Value 2024-09-27 10:15:33 -03:00
Gustavo Henrique Santos Souza de Miranda 7887ee2678 Created the Player.cpp and Player.h that will be used as player class in the game. 2024-09-27 01:12:43 -03:00
Gustavo Henrique Santos Souza de Miranda 9bd09b0483 Created the Bag Class used to be used as inventory and stash for the game. 2024-09-27 00:41:52 -03:00
17 changed files with 492 additions and 122 deletions

30
CMakeLists.txt Normal file
View File

@ -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
View File

@ -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;
}

77
src/Bag.cpp Normal file
View File

@ -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;

32
src/Bank.cpp Normal file
View File

@ -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;
}

16
src/Game.cpp Normal file
View File

@ -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);
}

52
src/LoanShark.cpp Normal file
View File

@ -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));
}

40
src/Player.cpp Normal file
View File

@ -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;
}

23
src/Region.cpp Normal file
View File

@ -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;
}

13
src/RegionManager.cpp Normal file
View File

@ -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;
}

41
src/include/Bag.h Normal file
View File

@ -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

22
src/include/Bank.h Normal file
View File

@ -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

22
src/include/Game.h Normal file
View File

@ -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();
};

24
src/include/LoanShark.h Normal file
View File

@ -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

27
src/include/Player.h Normal file
View File

@ -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

28
src/include/Region.h Normal file
View File

@ -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();
};

View File

@ -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);
};

12
src/main.cpp Normal file
View File

@ -0,0 +1,12 @@
#define MAX_TURNS 30
int main() {
return 0;
}