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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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();
};
+33
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
View File
@@ -0,0 +1,12 @@
#define MAX_TURNS 30
int main() {
return 0;
}