Browse Source

i seriously forgot what I did since last commit

master
myitinos 1 year ago
parent
commit
b35fad4086
34 changed files with 576 additions and 265 deletions
  1. +16
    -0
      .vscode/c_cpp_properties.json
  2. +7
    -0
      .vscode/settings.json
  3. +12
    -0
      .vscode/tasks.json
  4. +44
    -0
      Makefile
  5. +1
    -1
      README.md
  6. +1
    -0
      beta.test
  7. +0
    -95
      class/character.hpp
  8. +0
    -36
      class/monster.hpp
  9. +0
    -88
      class/player.hpp
  10. +1
    -0
      cpp-base64
  11. +0
    -33
      main.cpp
  12. +58
    -0
      main001.cpp
  13. BIN
      obj/betatest.o
  14. BIN
      obj/character001.o
  15. BIN
      obj/creation001.o
  16. BIN
      obj/info001.o
  17. BIN
      obj/main001.o
  18. BIN
      obj/player001.o
  19. +1
    -0
      peda-session-version001.txt
  20. +73
    -0
      src/class/character.cpp
  21. +36
    -0
      src/class/character.hpp
  22. +24
    -0
      src/class/monster.cpp
  23. +19
    -0
      src/class/monster.hpp
  24. +81
    -0
      src/class/player.cpp
  25. +28
    -0
      src/class/player.hpp
  26. +6
    -12
      src/interface/battle0.cpp
  27. +11
    -0
      src/interface/battle0.hpp
  28. +43
    -0
      src/interface/creation.cpp
  29. +9
    -0
      src/interface/creation.hpp
  30. +49
    -0
      src/interface/info.cpp
  31. +21
    -0
      src/interface/info.hpp
  32. +29
    -0
      src/system/betatest.cpp
  33. +6
    -0
      src/system/betatest.hpp
  34. BIN
      version001

+ 16
- 0
.vscode/c_cpp_properties.json View File

@ -0,0 +1,16 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}

+ 7
- 0
.vscode/settings.json View File

@ -0,0 +1,7 @@
{
"files.associations": {
"limits": "cpp",
"type_traits": "cpp",
"ostream": "cpp"
}
}

+ 12
- 0
.vscode/tasks.json View File

@ -0,0 +1,12 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
}
]
}

+ 44
- 0
Makefile View File

@ -0,0 +1,44 @@
COMPILER=g++
#FLAGS=-g -I. -pedantic -Wall -Wextra -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wnoexcept -Wold-style-cast -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -Wno-unused
#FLAGS=-g -I.
FLAGS=-I.
O_DIR=obj
CLASS_DIR=src/class
INTER_DIR=src/interface
SYS_DIR=src/system
OBJ_CMD=$(COMPILER) $(FLAGS) -c $< -o $@
.PHONY : clean
version001 : main001.o character.o player.o monster.o creation.o info.o betatest.o
$(COMPILER) $(FLAGS) -o $@ \
main001.o \
character.o player.o monster.o \
info.o creation.o \
betatest.o
main001.o : main001.cpp $(CLASS_DIR)/player.hpp $(INTER_DIR)/creation.hpp $(INTER_DIR)/info.hpp $(SYS_DIR)/betatest.hpp
$(OBJ_CMD)
character.o : $(CLASS_DIR)/character.cpp $(CLASS_DIR)/character.hpp
$(OBJ_CMD)
player.o : $(CLASS_DIR)/player.cpp $(CLASS_DIR)/player.hpp $(CLASS_DIR)/character.hpp
$(OBJ_CMD)
monster.o : $(CLASS_DIR)/monster.cpp $(CLASS_DIR)/monster.hpp $(CLASS_DIR)/character.hpp
$(OBJ_CMD)
creation.o : $(INTER_DIR)/creation.cpp $(INTER_DIR)/creation.hpp $(CLASS_DIR)/player.hpp $(INTER_DIR)/info.hpp
$(OBJ_CMD)
info.o : $(INTER_DIR)/info.cpp $(INTER_DIR)/info.hpp $(CLASS_DIR)/player.hpp $(CLASS_DIR)/character.hpp $(CLASS_DIR)/monster.hpp
$(OBJ_CMD)
betatest.o : $(SYS_DIR)/betatest.cpp $(SYS_DIR)/betatest.hpp
$(OBJ_CMD)
clean :
rm -f *.o

+ 1
- 1
README.md View File

@ -5,4 +5,4 @@
This repo depends on:
### cpp-base64
here: https://github.com/ReneNyffenegger/cpp-base64
here: https://github.com/ReneNyffenegger/cpp-base64

+ 1
- 0
beta.test View File

@ -0,0 +1 @@
GKSK{4re_Y0u_53ri0usly_checking_f0r_b3t4_t3sT?}

+ 0
- 95
class/character.hpp View File

@ -1,95 +0,0 @@
#ifndef _2EASY4ME_CHARACTER_H_
#define _2EASY4ME_CHARACTER_H_
#include <cstring>
class Character
{
protected:
char name[16];
int maxHp;
int hp;
int att;
int def;
public:
Character(char *name)
{
strncpy(this->name, name, sizeof(this->name));
this->maxHp = 100;
this->hp = 100;
this->att = 10;
this->def = 5;
}
Character(char *name, int hp, int att, int def)
{
strncpy(this->name, name, sizeof(this->name));
this->maxHp = hp;
this->hp = hp;
this->att = att;
this->def = def;
}
bool isDead()
{
return hp <= 0;
}
bool isAlive()
{
return hp > 0;
}
bool restoreHP()
{
this->hp = this->maxHp;
}
int checkHP()
{
return hp;
}
int getMaxHP()
{
return maxHp;
}
int getDef()
{
return def;
}
char *getName()
{
return name;
}
int getAtt()
{
return att;
}
int defend(int dmg)
{
dmg -= def;
if (dmg > 0)
{
hp -= dmg;
return dmg;
}
else
{
return 0;
}
}
int attack()
{
return att;
}
};
#endif

+ 0
- 36
class/monster.hpp View File

@ -1,36 +0,0 @@
#ifndef _2EASY4ME_MONSTER_H_
#define _2EASY4ME_MONSTER_H_
#include "character.hpp"
class Monster : public Character
{
protected:
int bounty;
public:
Monster(char *name)
: Character(name)
{
this->bounty = 0;
}
Monster(char *name, int hp, int att, int def)
: Character(name, hp, att, def)
{
this->bounty = 0;
}
Monster(char *name, int hp, int att, int def, int bounty)
: Character(name, hp, att, def)
{
this->bounty = bounty;
}
int drop()
{
return bounty;
}
};
#endif

+ 0
- 88
class/player.hpp View File

@ -1,88 +0,0 @@
#ifndef _2EASY4ME_PLAYER_H_
#define _2EASY4ME_PLAYER_H_
#include "character.hpp"
#include "string.h"
class Player : public Character
{
protected:
int xp;
int level;
public:
Player(char *name)
: Character(name)
{
this->xp = 0;
this->level = 1;
}
Player(char *name, int hp, int att, int def, int level, int xp)
: Character(name, hp, att, def)
{
this->xp = xp;
this->level = level;
}
int getLevel()
{
return level;
}
bool checkLevelup()
{
return xp > (level * level);
}
bool levelUp(int stat)
{
switch (stat)
{
case 1:
hp += 10;
break;
case 2:
att += 2;
break;
case 3:
def += 1;
break;
}
xp -= level * level;
}
int generateCode(char *dst)
{
return sprintf(dst,
"PlayerName:%15s;PlayerHp:%d;PlayerAtt:%d;PlayerDef:%d;PlayerLvl:%d;PlayerExp:%d;",
this->name, this->hp, this->att, this->def, this->level, this->xp);
}
Player *loadCode(char *dst)
{
char name[16];
int hp;
int att;
int def;
int lvl;
int exp;
int result = sscanf(dst,
"PlayerName:%15s;PlayerAtt:%d;PlayerDef:%d;PlayerLvl:%d;PlayerExp:%d;",
name, &hp, &att, &def, &lvl, &exp);
if (result == 5)
{
return new Player(name, hp, att, def, lvl, exp);
}
else
{
return nullptr;
}
}
};
#endif

+ 1
- 0
cpp-base64

@ -0,0 +1 @@
Subproject commit 6420804f7ba10e8c3049c6e3b59ec88c88d808a6

+ 0
- 33
main.cpp View File

@ -1,33 +0,0 @@
#include <iostream>
#include <cstring>
#include <math.h>
#include "cpp-base64/base64.h"
#include "cpp-base64/base64.cpp"
#include "class/monster.hpp"
#include "class/player.hpp"
Player* createNewPlayer()
{
char name[16];
printf("Input character name (MAX 15): ");
scanf("%15s", name);
return new Player(name);
}
int main(int argc, char const *argv[])
{
char name[16];
printf("Input name: ");
scanf("%15s", name);
Player *player = new Player(name);
printf("Created new player with name %s at %p\n", name, (void *)player);
return 0;
}

+ 58
- 0
main001.cpp View File

@ -0,0 +1,58 @@
#include "src/class/player.hpp"
#include "src/interface/creation.hpp"
#include "src/interface/info.hpp"
#include "src/system/betatest.hpp"
#include <iostream>
int main(int argc, char const *argv[])
{
Player *player = nullptr;
if (checkBetaTest())
{
int choice;
do
{
printf("===== HackTheGame v0.0.1 (Beta) =====\n");
printf("[1] Create new Character\n");
printf("[2] Character Info\n");
printf("[9] Credits\n");
printf("[0] Exit\n");
printf(">");
scanf("%d", &choice);
switch (choice)
{
case 1:
player = createCharacter();
break;
case 2:
if (player == nullptr)
{
std::cout << "Please create a character first!" << std::endl;
}
else
{
Info::ofPlayer(player);
}
break;
case 9:
Info::ofApplication();
break;
case 0:
break;
default:
printf("Not Implemented...\n");
}
} while (choice != 0);
}
else
{
printf("Please get a beta.test key from one of our developer to get access to beta test...\n");
return 0;
}
}

BIN
obj/betatest.o View File


BIN
obj/character001.o View File


BIN
obj/creation001.o View File


BIN
obj/info001.o View File


BIN
obj/main001.o View File


BIN
obj/player001.o View File


+ 1
- 0
peda-session-version001.txt View File

@ -0,0 +1 @@

+ 73
- 0
src/class/character.cpp View File

@ -0,0 +1,73 @@
#include "src/class/character.hpp"
Character::Character(std::string characterName)
{
name = characterName;
maxHP = 100;
currentHP = 100;
atk = 10;
def = 5;
}
Character::Character(std::string characterName, int characterMaxHP, int characterAtk, int characterDef)
{
name = characterName;
maxHP = characterMaxHP;
currentHP = maxHP;
atk = characterAtk;
def = characterDef;
}
bool Character::isDead()
{
return currentHP <= 0;
}
bool Character::isAlive()
{
return currentHP > 0;
}
std::string Character::getName()
{
return name;
}
void Character::restoreHP()
{
currentHP = maxHP;
}
int Character::getCurrentHP()
{
return currentHP;
}
int Character::getMaxHP()
{
return maxHP;
}
int Character::getDef()
{
return def;
}
int Character::getAtk()
{
return atk;
}
int Character::defend(int dmg)
{
int cleanDamage = dmg - def;
if (cleanDamage <= 0)
{
return 0;
}
else
{
currentHP = currentHP - cleanDamage;
return cleanDamage;
}
}

+ 36
- 0
src/class/character.hpp View File

@ -0,0 +1,36 @@
#ifndef HACKTHEGAME_CHARACTER_HPP
#define HACKTHEGAME_CHARACTER_HPP
#include <string>
class Character
{
protected:
std::string name;
int maxHP;
int currentHP;
int atk;
int def;
public:
Character(std::string characterName);
Character(std::string characterName, int characterMaxHP, int characterAtk, int characterDef);
bool isDead();
bool isAlive();
std::string getName();
void restoreHP();
int getCurrentHP();
int getMaxHP();
int getDef();
int getAtk();
int defend(int dmg);
};
#endif

+ 24
- 0
src/class/monster.cpp View File

@ -0,0 +1,24 @@
#include "src/class/monster.hpp"
Monster::Monster(std::string monsterName)
: Character(monsterName)
{
bounty = 0;
}
Monster::Monster(std::string monsterName, int monsterMaxHP, int monsterAtk, int monsterDef)
: Character(monsterName, monsterMaxHP, monsterAtk, monsterDef)
{
bounty = 0;
}
Monster::Monster(std::string monsterName, int monsterMaxHP, int monsterAtk, int monsterDef, int monsterBounty)
: Character(monsterName, monsterMaxHP, monsterAtk, monsterDef)
{
bounty = monsterBounty;
}
int Monster::getBounty()
{
return bounty;
}

+ 19
- 0
src/class/monster.hpp View File

@ -0,0 +1,19 @@
#ifndef HACKTHEGAME_MONSTER_HPP
#define HACKTHEGAME_MONSTER_HPP
#include "src/class/character.hpp"
class Monster : public Character
{
protected:
int bounty;
public:
Monster(std::string monsterName);
Monster(std::string monsterName, int monsterMaxHP, int monsterAtk, int monsterDef);
Monster(std::string monsterName, int monsterMaxHP, int monsterAtk, int monsterDef, int monsterBounty);
int getBounty();
};
#endif

+ 81
- 0
src/class/player.cpp View File

@ -0,0 +1,81 @@
#include "src/class/player.hpp"
#include <string.h>
Player::Player(std::string playerName)
: Character(playerName)
{
experience = 0;
level = 1;
}
Player::Player(std::string playerName, int playerMaxHP, int playerAtk, int playerDef, int playerLevel, int playerExp)
: Character(playerName, playerMaxHP, playerAtk, playerDef)
{
experience = playerExp;
level = playerLevel;
}
int Player::getLevel()
{
return level;
}
int Player::getExp()
{
return experience;
}
int Player::expToLevelUp()
{
if (level >= PLAYER_MAX_LEVEL)
{
return 0;
}
else
{
return (level * level) - experience;
}
}
bool Player::checkLevelup()
{
return expToLevelUp() < 0;
}
bool Player::levelUp(int stat)
{
if (checkLevelup())
{
switch (stat)
{
case 1:
maxHP += 10;
restoreHP();
break;
case 2:
atk += 2;
break;
case 3:
def += 1;
break;
}
return true;
}
else
{
return false;
}
}
int Player::takeExperience(int bounty)
{
experience = experience + bounty;
if (experience > PLAYER_MAX_EXPERIENCE)
{
experience = PLAYER_MAX_EXPERIENCE;
}
return experience;
}

+ 28
- 0
src/class/player.hpp View File

@ -0,0 +1,28 @@
#ifndef HACKTHEGAME_PLAYER_HPP
#define HACKTHEGAME_PLAYER_HPP
#define PLAYER_MAX_LEVEL 1000
#define PLAYER_MAX_EXPERIENCE 9999999
#include "src/class/character.hpp"
class Player : public Character
{
protected:
int experience;
int level;
public:
Player(std::string playerName);
Player(std::string playerName, int playerMaxHP, int playerAtt, int playerDef, int playerLevel, int playerExp);
int getLevel();
int getExp();
int expToLevelUp();
int takeExperience(int drop);
bool checkLevelup();
bool levelUp(int stat);
};
#endif

system/battle0.hpp → src/interface/battle0.cpp View File

@ -1,20 +1,16 @@
#ifndef _2EASY4ME_BATTLE_SYSTEM_LEVEL0_
#define _2EASY4ME_BATTLE_SYSTEM_LEVEL0_
#include "../class/monster.hpp"
#include "../class/player.hpp"
#include <cstdio>
#include "src/interface/battle0.hpp"
int startBattle(Player *player, Monster *monster)
{
printf(" ===== BATTLE INFO ===== \n");
printf("%15s (Lv.%n):\n", player->getName(), player->getLevel());
printf(" HP : %n/%n\n", player->checkHP(), player->getMaxHP());
printf(" HP : %n/%n\n", player->getCurrentHP(), player->getMaxHP());
printf(" Att: %n\n", player->getAtt());
printf(" Def: %n\n", player->getDef());
printf("%15s:\n", monster->getName());
printf(" HP : %n/%n\n", monster->checkHP(), monster->getMaxHP());
printf(" HP : %n/%n\n", monster->getCurrentHP(), monster->getMaxHP());
printf(" Att: %n\n", monster->getAtt());
printf(" Def: %n\n", monster->getDef());
@ -38,6 +34,4 @@ int startBattle(Player *player, Monster *monster)
printf("YOU LOSE !!!\n");
return 0;
}
}
#endif
}

+ 11
- 0
src/interface/battle0.hpp View File

@ -0,0 +1,11 @@
#ifndef HACKTHEGAME_BATTLESYSTEM_VERSION_000_HPP
#define HACKTHEGAME_BATTLESYSTEM_VERSION_000_HPP
#include "src/class/monster.hpp"
#include "src/class/player.hpp"
#include <cstdio>
int startBattle(Player *player, Monster *monster);
#endif

+ 43
- 0
src/interface/creation.cpp View File

@ -0,0 +1,43 @@
#include "src/interface/creation.hpp"
#include "src/interface/info.hpp"
#include <iostream>
Player *createCharacter()
{
std::string name;
char choice;
Player *newPlayer = new Player("HackTheGame");
std::cout << "Welcome to character creation !!!" << std::endl;
do
{
std::cout << "Please enter your character name: (Max 15 letters)\n"
<< "> " << std::flush;
std::cin >> name;
if (name.size() > 15)
{
std::cout << "Your name is too long!" << std::endl;
continue;
}
std::cout << "Creating your character..." << std::endl;
delete newPlayer;
newPlayer = new Player(name);
std::cout << "Done...\n"
<< "Character Info: " << std::endl;
Info::ofCharacter(newPlayer);
std::cout << "Accept (y/N)?: " << std::flush;
std::cin >> choice;
} while (choice != 'Y' && choice != 'y');
return newPlayer;
}

+ 9
- 0
src/interface/creation.hpp View File

@ -0,0 +1,9 @@
#ifndef HACKTHEGAME_CHARACTER_CREATION_HPP
#define HACKTHEGAME_CHARACTER_CREATION_HPP
#include "src/class/player.hpp"
#include "src/class/monster.hpp"
Player *createCharacter();
#endif

+ 49
- 0
src/interface/info.cpp View File

@ -0,0 +1,49 @@
#include "src/interface/info.hpp"
#include <iostream>
void Info::ofCharacter(Character *character)
{
std::cout << "Name: " << character->getName() << "\n"
<< " HP : " << character->getCurrentHP() << "/" << character->getMaxHP() << "\n"
<< " Atk: " << character->getAtk() << "\n"
<< " Def: " << character->getDef() << std::endl;
}
void Info::ofPlayer(Player *player)
{
std::cout << "Name: " << player->getName() << "\n"
<< " Lvl: " << player->getLevel() << "\n"
<< " Experience: " << player->getExp() << "\n"
<< " to LevelUp: " << player->expToLevelUp() << "\n"
<< " HP : " << player->getCurrentHP() << "/" << player->getMaxHP() << "\n"
<< " Atk: " << player->getAtk() << "\n"
<< " Def: " << player->getDef() << std::endl;
}
void Info::ofMonster(Monster *monster)
{
std::cout << "Name: " << monster->getName() << "\n"
<< " HP : " << monster->getCurrentHP() << "/" << monster->getMaxHP() << "\n"
<< " Atk: " << monster->getAtk() << "\n"
<< " Def: " << monster->getDef() << "\n"
<< " Lvl: " << monster->getBounty() << std::endl;
}
void Info::ofApplication()
{
std::cout << "=================================\n"
<< "========== HackTheGame ==========\n"
<< "=================================\n"
<< "This stupid app is developed for \n"
<< "CTF @GKSK2019 that was held on \n"
<< "16 Feb 2019 as a playground for \n"
<< "Kelompok Studi Linux Members of \n"
<< "STMIK STIKOM Bali-> \n"
<< "Developed by: \n"
<< " myitinos \n"
<< " \n"
<< "Thanks for Playing !!! \n"
<< "=================================\n"
<< std::endl;
}

+ 21
- 0
src/interface/info.hpp View File

@ -0,0 +1,21 @@
#ifndef HACKTHEGAME_CHARACTER_INFO_HPP
#define HACKTHEGAME_CHARACTER_INFO_HPP
#include "src/class/character.hpp"
#include "src/class/monster.hpp"
#include "src/class/player.hpp"
class Info
{
private:
Info(){};
public:
static void ofCharacter(Character *);
static void ofPlayer(Player *);
static void ofMonster(Monster *);
static void ofApplication();
};
#endif

+ 29
- 0
src/system/betatest.cpp View File

@ -0,0 +1,29 @@
#include "src/system/betatest.hpp"
#include <fstream>
#include <string>
bool checkBetaTest()
{
std::string betaFlag = "4re_Y0u_53ri0usly_checking_f0r_b3t4_t3sT?";
std::string tmp;
int result = -1;
try
{
std::fstream betaFile("beta.test");
if (betaFile) {
betaFile >> tmp;
result = tmp.compare("GKSK{" + betaFlag + "}");
}
}
catch(...)
{
return false;
}
return result == 0;
}

+ 6
- 0
src/system/betatest.hpp View File

@ -0,0 +1,6 @@
#ifndef HACKTHEGAME_BETATEST_HPP
#define HACKTHEGAME_BETATEST_HPP
bool checkBetaTest();
#endif

BIN
version001 View File


Loading…
Cancel
Save