From d175404e190c67d1ca6e8a7d8f46c7d1fdc8a312 Mon Sep 17 00:00:00 2001 From: kuchy Date: Sat, 6 Nov 2021 00:02:38 +0100 Subject: [PATCH] Show stats and attributes, add change hp option --- dungeonWorld/a.out | Bin 0 -> 106720 bytes dungeonWorld/dungeonWorld.cpp | 258 ++++++++++++++++++++++++++++++++++ dungeonWorld/makefile | 2 + dungeonWorld/stats.txt | 11 ++ 4 files changed, 271 insertions(+) create mode 100755 dungeonWorld/a.out create mode 100644 dungeonWorld/dungeonWorld.cpp create mode 100644 dungeonWorld/makefile create mode 100644 dungeonWorld/stats.txt diff --git a/dungeonWorld/a.out b/dungeonWorld/a.out new file mode 100755 index 0000000000000000000000000000000000000000..cca96f2e853633800b311a7e2993ae7dc006b554 GIT binary patch literal 106720 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 literal 0 HcmV?d00001 diff --git a/dungeonWorld/dungeonWorld.cpp b/dungeonWorld/dungeonWorld.cpp new file mode 100644 index 0000000..0e99256 --- /dev/null +++ b/dungeonWorld/dungeonWorld.cpp @@ -0,0 +1,258 @@ +#include +#include +#include +#include +const int STAT_LENGTH = 3; +const int NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD = 6; +const int NUMBER_OF_STATS_IN_DUNGEON_WORLD = 5; +const char STAT_SEPARATOR = ' '; + +const int STR_POSITION = 0; +const int DEX_POSITION = 1; +const int CON_POSITION = 2; +const int INT_POSITION = 3; +const int WIS_POSITION = 4; +const int CHA_POSITION = 5; + +const int HP_POSITION = 0; +const int ARMOR_POSITION = 1; +const int LVL_POSITION = 2; +const int XP_POSITION = 3; +const int XPNEEDED_POSITION = 4; + +const int QUIT = 0; +const int CHANGE_HP_CODE = 1; +const std::string MENU = "What do you want to do? \n 0. QUIT \n 1. Change HP"; + + + +void print(const std::string s) +{ + std::cout << s << std::endl; +} + +void printNoEndline(const std::string s) +{ + std::cout << s << " "; +} + +void printInt(const int i) +{ + std::cout << i << std::endl; +} + +void printIntInfo(const std::string s, const int i) +{ + printNoEndline(s); + printInt(i); +} + +void showHP(const int hp) +{ + printIntInfo("Current HP:", hp); +} + +std::string enterString() +{ + std::string s; + std::cin >> s; + return s; +} + +std::string printAndEnterString(const std::string s) +{ + print(s); + return enterString(); +} + +void printStringVector(const std::vector v) +{ + for(unsigned int i = 0; i < v.size(); i++) print(v[i]); +} + +bool isNumber(const char c) +{ + return (c >= '0' && c <= '9'); +} + +int changeHpLogic(const std::string changeS) +{ + char c = changeS[0]; + if(!isNumber(c)) + { + if(c == '+') return std::stoi(changeS); + else return -std::stoi(changeS.substr(1, changeS.length())); + }else return -std::stoi(changeS); + +} + +int changeHp(int hp) +{ + return hp + changeHpLogic(printAndEnterString("Enter hp change: ('+' for positive, '' or '-' for negative):")); +} + +int calculateHp(int constitution) { return constitution + 8; } + +std::vector fileToVector(std::ifstream &file) +{ + std::string line; + std::vector strings; + if(file.is_open()) + { + while(getline(file, line)) + { + strings.push_back(line); + } + file.close(); + } + return strings; +} + +void vectorToFile(const std::vector strings, std::ofstream &file) +{ + for(unsigned int i = 0; i < strings.size(); i++) + { + file << strings.at(i) << std::endl; + } +} + +std::vector > stringToAttributes(const std::vector stats) +{ + std::vector > statsAndValues(NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD); + for(int i = 0; i < NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD; i++) + { + + std::string currentString = stats[i]; + statsAndValues[i].first = currentString.substr(0, STAT_LENGTH); + std::size_t findSpace = currentString.find(STAT_SEPARATOR); + statsAndValues[i].second = std::stoi(currentString.substr(findSpace + 1)); + } + return statsAndValues; +} + +std::vector > stringToStats(const std::vector stats) +{ + std::vector > statsAndValues(NUMBER_OF_STATS_IN_DUNGEON_WORLD); + + for(int i = NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD; i < NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD + NUMBER_OF_STATS_IN_DUNGEON_WORLD; i++) + { + + std::string currentString = stats[i]; + std::size_t findSpace = currentString.find(STAT_SEPARATOR); + statsAndValues[i - NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD].first = currentString.substr(0, findSpace); + statsAndValues[i - NUMBER_OF_ATTRIBUTES_IN_DUNGEON_WORLD].second = std::stoi(currentString.substr(findSpace + 1)); + } + return statsAndValues; +} + +void printPair(const std::pair pair) +{ + printIntInfo(pair.first, pair.second); +} + +void printPairVector(const std::vector > v) +{ + for(unsigned int i = 0; i < v.size(); i++) printPair(v[i]); +} + +std::vector > attributesAndStatsTogether(const std::vector > attributesNumbers, const std::vector > statsNumbers) +{ + std::vector > v; + v.reserve( attributesNumbers.size() + statsNumbers.size() ); + v.insert( v.end(), attributesNumbers.begin(), attributesNumbers.end() ); + v.insert( v.end(), statsNumbers.begin(), statsNumbers.end() ); + return v; +} + +std::vector pairToStringVector(const std::vector > v) +{ + std::vector stringVector; + stringVector.reserve(v.size()); + for(unsigned int i = 0; i < v.size(); i++) + { + stringVector.push_back(v[i].first + ' ' + std::to_string(v[i].second)); + } + return stringVector; +} + +int charToInt(const char c) { return c - '0'; } + +bool charIsNumber(const char c) { return c >= '0' && c <= '9'; } + +void printNotValidStringLength(const std::string s, const long unsigned int desiredLength) +{ + std::cout << "String: \"" << s << "\" is too short/too long, it is: " + << s.length() << " characters long but should be: " << desiredLength + << " characters long " << std::endl; +} + +bool validStringLength(const std::string s, const long unsigned int desiredLength) +{ + if(s.length() != desiredLength) + { + printNotValidStringLength(s, desiredLength); + return 0; + } + return 1; +} + +bool checkMenu(const std::string input) +{ + if(!validStringLength(input, 1)) return 0; + if(!charIsNumber(input.at(0))) return 0; + return 1; +} + +void printAttributesAndStats(const std::vector > attributesNumbers, const std::vector > statsNumbers) +{ + printPairVector(attributesNumbers); + std::cout << std::endl; + printPairVector(statsNumbers); +} + +int inputMenu(const std::vector > attributesNumbers, const std::vector > statsNumbers) +{ + std::string choiceS; + do{ + std::system("clear"); + printAttributesAndStats(attributesNumbers, statsNumbers); + print(MENU); + getline(std::cin, choiceS); + }while(!checkMenu(choiceS)); + return charToInt(choiceS.at(0));; +} + +bool menuLoop(std::vector > attributesNumbers, std::vector > &statsNumbers) +{ + int userChoice = inputMenu(attributesNumbers, statsNumbers); + if(userChoice == QUIT) return 1; + else if(userChoice == CHANGE_HP_CODE) + { + statsNumbers[HP_POSITION].second = changeHp(statsNumbers[HP_POSITION].second); + } + return 0; +} + + +int main() +{ + std::ifstream InputstatsFile ("stats.txt"); + + std::vector stats = fileToVector(InputstatsFile); + InputstatsFile.close(); + std::vector > attributesNumbers = stringToAttributes(stats); + std::vector > statsNumbers = stringToStats(stats); + + bool end = 0; + while(!end) { end = menuLoop(attributesNumbers, statsNumbers); }; + + + std::vector > v = attributesAndStatsTogether(attributesNumbers, statsNumbers); + std::vector newStats = pairToStringVector(v); + std::ofstream OutputstatsFile ("stats.txt"); + vectorToFile(newStats, OutputstatsFile); + OutputstatsFile.close(); + + + return 0; +} diff --git a/dungeonWorld/makefile b/dungeonWorld/makefile new file mode 100644 index 0000000..10c4287 --- /dev/null +++ b/dungeonWorld/makefile @@ -0,0 +1,2 @@ +dungeonWorld: + g++ dungeonWorld.cpp -Wextra -Wall -Wfloat-equal -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wstrict-overflow=5 -Wwrite-strings -Wcast-qual -Wswitch-default -Wswitch-enum -Wconversion -Wunreachable-code -pedantic diff --git a/dungeonWorld/stats.txt b/dungeonWorld/stats.txt new file mode 100644 index 0000000..c2a2e24 --- /dev/null +++ b/dungeonWorld/stats.txt @@ -0,0 +1,11 @@ +STR 9 +DEX 8 +CON 16 +INT 13 +WIS 17 +CHA 12 +HP 1 +ARMOR 1 +LVL 3 +XP 2 +XPNEEDED 10