From b35fad408613a8be751daa272a9d5babcf41a165 Mon Sep 17 00:00:00 2001 From: myitinos Date: Thu, 3 Jan 2019 23:28:13 +0800 Subject: [PATCH] i seriously forgot what I did since last commit --- .vscode/c_cpp_properties.json | 16 +++ .vscode/settings.json | 7 ++ .vscode/tasks.json | 12 +++ Makefile | 44 ++++++++ README.md | 2 +- beta.test | 1 + class/character.hpp | 95 ------------------ class/monster.hpp | 36 ------- class/player.hpp | 88 ---------------- cpp-base64 | 1 + main.cpp | 33 ------ main001.cpp | 58 +++++++++++ obj/betatest.o | Bin 0 -> 2024 bytes obj/character001.o | Bin 0 -> 3544 bytes obj/creation001.o | Bin 0 -> 7368 bytes obj/info001.o | Bin 0 -> 8816 bytes obj/main001.o | Bin 0 -> 4152 bytes obj/player001.o | Bin 0 -> 3480 bytes peda-session-version001.txt | 1 + src/class/character.cpp | 73 ++++++++++++++ src/class/character.hpp | 36 +++++++ src/class/monster.cpp | 24 +++++ src/class/monster.hpp | 19 ++++ src/class/player.cpp | 81 +++++++++++++++ src/class/player.hpp | 28 ++++++ .../battle0.hpp => src/interface/battle0.cpp | 18 ++-- src/interface/battle0.hpp | 11 ++ src/interface/creation.cpp | 43 ++++++++ src/interface/creation.hpp | 9 ++ src/interface/info.cpp | 49 +++++++++ src/interface/info.hpp | 21 ++++ src/system/betatest.cpp | 29 ++++++ src/system/betatest.hpp | 6 ++ version001 | Bin 0 -> 27560 bytes 34 files changed, 576 insertions(+), 265 deletions(-) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 Makefile create mode 100644 beta.test delete mode 100644 class/character.hpp delete mode 100644 class/monster.hpp delete mode 100644 class/player.hpp create mode 160000 cpp-base64 delete mode 100644 main.cpp create mode 100644 main001.cpp create mode 100644 obj/betatest.o create mode 100644 obj/character001.o create mode 100644 obj/creation001.o create mode 100644 obj/info001.o create mode 100644 obj/main001.o create mode 100644 obj/player001.o create mode 100644 peda-session-version001.txt create mode 100644 src/class/character.cpp create mode 100644 src/class/character.hpp create mode 100644 src/class/monster.cpp create mode 100644 src/class/monster.hpp create mode 100644 src/class/player.cpp create mode 100644 src/class/player.hpp rename system/battle0.hpp => src/interface/battle0.cpp (76%) create mode 100644 src/interface/battle0.hpp create mode 100644 src/interface/creation.cpp create mode 100644 src/interface/creation.hpp create mode 100644 src/interface/info.cpp create mode 100644 src/interface/info.hpp create mode 100644 src/system/betatest.cpp create mode 100644 src/system/betatest.hpp create mode 100755 version001 diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..0b0eed0 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c11", + "cppStandard": "c++17", + "intelliSenseMode": "clang-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ff26cf0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "files.associations": { + "limits": "cpp", + "type_traits": "cpp", + "ostream": "cpp" + } +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..6c28385 --- /dev/null +++ b/.vscode/tasks.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6c5a358 --- /dev/null +++ b/Makefile @@ -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 diff --git a/README.md b/README.md index e820513..3a8294d 100644 --- a/README.md +++ b/README.md @@ -5,4 +5,4 @@ This repo depends on: ### cpp-base64 -here: https://github.com/ReneNyffenegger/cpp-base64 \ No newline at end of file +here: https://github.com/ReneNyffenegger/cpp-base64 diff --git a/beta.test b/beta.test new file mode 100644 index 0000000..c43bd64 --- /dev/null +++ b/beta.test @@ -0,0 +1 @@ +GKSK{4re_Y0u_53ri0usly_checking_f0r_b3t4_t3sT?} diff --git a/class/character.hpp b/class/character.hpp deleted file mode 100644 index bb055d7..0000000 --- a/class/character.hpp +++ /dev/null @@ -1,95 +0,0 @@ -#ifndef _2EASY4ME_CHARACTER_H_ -#define _2EASY4ME_CHARACTER_H_ - -#include - -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 \ No newline at end of file diff --git a/class/monster.hpp b/class/monster.hpp deleted file mode 100644 index 9cd0474..0000000 --- a/class/monster.hpp +++ /dev/null @@ -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 \ No newline at end of file diff --git a/class/player.hpp b/class/player.hpp deleted file mode 100644 index 704cb90..0000000 --- a/class/player.hpp +++ /dev/null @@ -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 \ No newline at end of file diff --git a/cpp-base64 b/cpp-base64 new file mode 160000 index 0000000..6420804 --- /dev/null +++ b/cpp-base64 @@ -0,0 +1 @@ +Subproject commit 6420804f7ba10e8c3049c6e3b59ec88c88d808a6 diff --git a/main.cpp b/main.cpp deleted file mode 100644 index cb9d1fb..0000000 --- a/main.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include - -#include -#include - -#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; -} \ No newline at end of file diff --git a/main001.cpp b/main001.cpp new file mode 100644 index 0000000..2db5e6f --- /dev/null +++ b/main001.cpp @@ -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 + +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; + } +} \ No newline at end of file diff --git a/obj/betatest.o b/obj/betatest.o new file mode 100644 index 0000000000000000000000000000000000000000..1b8653c02877d67acd2f7d72d1e142021ce76452 GIT binary patch literal 2024 zcmbtT&1(}u6o1L~OHHMU2cZh_P>E=lq-jYlsA+1Ng+_~QiYS$JlWt6H^TF;!T17=l zg{1_%c=za0^wLYA;Gy^r_#X&@UcB`n#P?=r+I6$N=v!vqd%tZvv-?* z;YT+oYFoGVm$YPrm&Uqz_?OS4mZ{&1H}$ckwH$BStLu8HVwP5xYmfAD+|r9lHmb9v zUAO@j6isHR%(NNgX69#}4JAfW_H%&T)YL>Ywoq)=STmYZlWKf;B-P|@;zeRyjgMY( zVJiO&O(>zKa}Zh^2n|Mh``%!c=MbYo!pogJIq*6>)!!5Tgb^+tG}8}u!LN4EniAMS z00qAwQ7}`GD8M_|v7|t62S$Jb!38VO(-D6Xk<*?!`M)D}0mnc`G(hSIoUT(){LLfq znImxCWa_b6YBWHF<+a@mJp6#j@0j|rd7frL7C0*B1= zfIt+PU-BQjFprO*E#o&lc)th#=)tK+GCnGB%1`4!RC~S3j3TJ`_pYu;%Q9E#-K;TC zmkefrTC{CYt-9-!>eZ@Q!?jwSnQHF#!Z1HJ3?Q0W(aV-mH4parPa}$adNcl;m`035 z-aprKW2H@c5C@%k8i!XZ;z{ia@HlGPN4|u!0;j$b?tg*%V%@JO)+<-gp`8E9Pav0a z{?$A5<^CD8y&~(E*i|%$AD4j86QWRgkL9wgUuw!PZ5cz_3<3jU?+VOce?{=eDVaz7 z_0Qp2Q2$~CqR2i`|A;I35~pqadm{wz#Qw4ldXvX+`1yqSdxsG832>1dkNA(}6s`sF N)1rRE!zI(t{{vb7?)3lw literal 0 HcmV?d00001 diff --git a/obj/character001.o b/obj/character001.o new file mode 100644 index 0000000000000000000000000000000000000000..0920b0572d8d746bebbc4b9cecb6d64120d730a4 GIT binary patch literal 3544 zcmbuC-)kI29KdI9+a_vTuT?ObKAaHcN|WU_R?~=vOD>yS>6wOHPo=dko6Y2M^nS5B z*ItU+LQrx9q%T5IK_7gO_FwQph!FeYW9gIRMF{AFed~h|zu(=NyUFZb!Sf4q-|u|B zzjkM5c9UCHZZ4*2M2JSFNM|M}A$OnY*y+GblM^H!#16t7-GyxHk9>CHuc2(~)4gn~ zv76npK=15fd|+=CcC)RAGTKQeR=9U3J<>6g&$j94VKD!ECEMCQP_Ol+0;NnYJ1`}^A9nZq9wA20Es z%x5xhCz6HbMwK-Z6UG}xYHWO>5lqd`%yUNS?CB7PX{UI$c5^YeM6_mn;2R{v!$$`O z@4y2Yfe8+jTQClxF?~G#MJ#jdh_#`|8W0HRMdTpb&7g`V^0B_?aT)_e?n;=4zITv= zoWLL9&vpDCAqVN@|0Hzx^nd#lKX*kG?!`mo@qWYsKqs+o7o`Aq0!AQF#2C-?-SqLb&M5Qt8W_TaerqoQ{?nPU)kQd$Sx8z>%(S7V*)5!RQ$ z;~1dG4>0e>fA7Ih!Gd&)f4>J`?@@ZMYq;nwTKzMN+{bFyBdF1=CmsqNOPKJywb1J}Z2 zM#N{vt%W?Bux+>5G);4S+3`!R4Uwg4@w}U7rirC(<~b$ipLeai13#8UWV zvDvii)bndqr(9y|_VpC8=W`clrgQeixw*V`$-Xo_le27W``;U7OzV1onNHqXx{yEH zXW!YNZ=rglR9&%`sNbkiW!=pF*6qOJPZTLza4K}>&0zKWy;WGG_N{iFtT_(VGY!w9 zRhC^0Yj?co!1Gj_><%|avVZTZXlE2mTMA6-)%nMRJb_DKPp_D z<6jjn&hehYcln$c{(6Nu%b=MT>NR0`wCos+HW@Ki9Oe*X+4qUz)xt^9b#2;oX`R`S zSEk^>cyyv=lxwb2HlB7`4YyXQz#bt+wZ^D1zfc(Snd4sLmFSwi>cJi*M$xM^>f(a` zpT_rj@SRr5r1@NYdGJ}{zF?G4a2}%X&AEH<(r|& zA@;`HK|UYi`gPFQU*~h7-bL6&RE*~YYxbLu`xk4f_a*wP{nYtnkNhbfDApgs0#Wl9 zfg;nD3s~fVV!gub&iaY@1u%m3SMuXLQLHnrKO#|2aQs^iTcu#g@*(ekMuuQ>+}58< zOb*=;fimn8`!#3E<&#a3FEp3XE?1FUbRc=7D(s_$)-exPL6K_QsS=4!`I6 nd0@w2sQLK+kh=E(ktF{Uw5$|YZYMaq-SYQ%qx)D)5;gx{loIqE literal 0 HcmV?d00001 diff --git a/obj/creation001.o b/obj/creation001.o new file mode 100644 index 0000000000000000000000000000000000000000..74197dade52a658fda8fbbd8d903b1b1b539068d GIT binary patch literal 7368 zcmbtYeQX>@6`#9v5(r6?h6Y;7$GW5?hI;GsN8*%{+Ho#EldEfdcAF**oAr8auYA6> z?)DPf5K1vEJsCr!3dJfCN@*qXU*Hc)|A5pap%jUrN=T%lLZF}`msUs>Lb6a4^WN+{ z-^<)>nuaIM&dhIq?_=K1?#%8Jsm#83EG9@|Vz;RD2o>U)k5$?ove_Z-5VuS2hoQe7 z3hI3X$_CZm4E3#02GixYItQ}p*>{f&r|0VK-VRv0oLWjQrsq?q(&gVS0U*-zZDI8# ztU{=KE+J;0|3=B_ zxx)+Tr``;^!nesnY>18k`>Cu_g zGE_4qbEyS#cf<3TPo31#xapH_~$tEe)qzHpt}= zbidQlQ@(Ib7Bc0(zmrIp&-1AfP+2u#NZsc!GqV?t9O``h@OfNxu;MnCk6$U5mS>M& ziItk4JiffLB1Ea-+S|TWt}vA$T5n-0Py9|AI*V$r;QC&Aab;!Y@Ojjb@~E40{0Y|x ze8U;D3$_!u1;Z)0cHsGWqrSdg@%nPEU33jMkK@yR2}rB-yglLGZ)|_ao-&ecM$Qd@ zQ*2ld&(v;1Jce9k7+w*)_(smpkJgJW=^{U>*)mO2?Dg|5)aymps)wHZh=0E!IvvNI z42__Eo>dqecJ>4`gkQGT1j68yn>P!Ar>O=A4lMSj=;Awlbvvb~z z+-NO3KWq)Vp&o3!R+Hxmt2^`Xp3V%Yl!mMx%Q~2Blg{1Meeo#R?A^86-P@Lu$d108 zJ?$2#%LvU#P-Y+Aw=bI-um(E!WKtFy$_6_v%bA)=CX>xWb`gSvc)a{*kCP3ON!;$O zpkRAJvBybeZMdZNCPRnJgF+|->F{7Lb#Zj>qh`S!F)eF!YRZ~~lY*azJOtC$(WaY= zqAT>74O$()6lOhF?5U19)el%pI5Qun=GqfI&VZH5wpo4q9q>OxehOQ-r&kj6qwq*zI6ucj#+@)Sn@cI#-fpP_o>nIHh z$5$90P;nfkDXip>-8$g5}ggV09#JQVar{4XO2g8a`yA^a-{f{T6|VaoW_*nQi0bE5t@DctC%;3g|FsDIQwqmw)LLh2i|ZcQc&x4@BS& z!%gr(`59yQeGLDB!m+}bi2oepCmH@c<2N(>G{d=_GYZFiwlMxLnEh6U)0dc@AHq@X zn zQ4@AccA~^1B%BzPDh|?VQjUx|j^$3_e<2Ip!Co73@qBIBg@Qe;0Ca*wX3lr)oO!)d zs0n|>Cg4w(F!O%kn%%vFjc{sr#+4;^%o-`c4=rJi7W~qrO2q$Jy$kyI4?~v@1#D0? z{>DZgt}_&>qx3T&P5#ryChFtYKIu^%rBC}j_mAs|^r$uf!!@h_$r%O=<&S)^K_9tX z@Vgytb#M^cud81rFXKxY1mi~@Jp;ER2!eYx+Du@F$xaEke+}YmG_eZ?Wd5{)XVeRb@`U-r_XPPT{19NZ z{C@(Cg1n#qM}Sky|EU`O@o$apA0MMy`D;`D>tUP=a=Cm5I=EEy`*%R;lRwg-KGolX z0U19LRQ+;|_|XsPQT`SH!LoS*)2ff_7a`K8 z{9`=2Z&aC5?~P>@2kyaGbbWj#^tA(!m{gnLAuSL3{PCS!OaFxW@%wKy#zfcuA3BCu ALI3~& literal 0 HcmV?d00001 diff --git a/obj/info001.o b/obj/info001.o new file mode 100644 index 0000000000000000000000000000000000000000..dcb0b56780a75c4fafdb81f15b196a3833707ef7 GIT binary patch literal 8816 zcmd^EeQX>@6`%9DO&!uSAN>doY1hz{q-_qL2A+CM@k9`6rF-YB%tC`fRt895Ya!{Qi-SyqFRG)Gt#T|E^mT~6Dd%Sbj@m)%TrO3xBs&ZuTyYhLdAyIkHI zG=I5jS895k!ue5e1!{r)zcuUS`&6`=U>jRkJ$k8HzIgoTrC7Q314l0|E(%fJzHA4Z zzd4XbYu#wAbqF8^{c_wj}ph;gl0vhnj(gkhd&L zvV=(PwtBsBOR}Kfu?jh7Zn7AZ^N~5?4SwlfIN2z7aOI~~^mTXdwYH6o zm-AuSYESG;wCreYFUw}~Sh6G0(zZQeTUgybuFs#2LgskXsw-@NQ_3yz3*1h#isMV&n(opjZ;% zr{*KRT{^(NyOnM~mJ~xnkF<;Z2UWjZ4Aeg?yH(H10$nwVKf~HsDRBV;qEY=bAp>=2H9aj^=EWzr6<2Ke_~`C^2SxdCia;pdthqTi~l|Y{y_u&F$4a2L*7mU zAKw?fCtT|&&l&9e)PP?w;EnOf{->ctk$VA@w?Mnzcy}YNVvq{zPq%^pkO3Edej;dT zNhaJvLD&yw!olR8g73NBVZY?rZjdj9#j+blT^+XV2Y%kiW?Ry>OQ93`u8oKfpNu2W z3i7s-&)Qip(!+L(?+d$c@W8&VK~O1=+x@ov;80sXI8G*miS8+<=(wR*Obzd;)kV+! ziJ~`=uk+HP7K^ekOW)JlCW>TZ}XxF~Mlr8&nrT$EqOuAs) z4vUT-mipaPY6P&I<4y^J4j@3!ndx^&?Nnx$Jv`uo-q2D6?UP=JXM}yb+)5>xOwE#6 zcctBoV=xXOwSf6{dt_iJ6Smv7w3Td)LVyV1tJj}tvmt=dq@7AF4yx}*D@Ggem$nar?-^B3y6;6KD=Tg{=&+SiWeENdt4g8}F-vo7v^TP~(Gs90R zoZ_J`?4yj&<9UqXH#0k5WjMG0w8F_gjTgU@D0)7>6~XdLjPK<-)&8L>b^fmz4yV-G zc>l<79?z=^*W>vs;e1{EnAyko zPV?lKjL+@=PUBt64gAkCobO|gGn~hBMzc@**i($p<9VLpd>{J}!?}GtKcZm4=jU%2pWA;)n}OfTaK4Y-&2S!1ufp|x?A?sd z_pw6^=lj?(172mg1!Jc9d6MDH4F96SDL*~Xhw>$c^L^|Lv%~ZDB;)fupEdB$Yy4c~ zR{X%g|B1$@b@VF(|MwdI5oYK0>g&-R2vRSFIh=QQ10MJV2h3Gr5HK#6+@3UW8d zTJ#5FMnN1OlBB92Mt4aF(eDM~)4j$68lU`~VmRv1J;f6mPWN#yXn1X0iPGFm=!}a5 z{Q8Z`DXJB{oRff`OQA?)ozM}9@lr`7ib2$vbY0u4xLzT&K@Wa+!36>E@$$iTibZEm z0m#O#L@schT;ktdBqZEmW(Iy-i$p#My+q&8*bcbTaHo|eZ_1u1!WDo>;Kh1Djp)BC zo&xptbxd?BjBXIuK^xz%nr5}q0u1K_ooApbh3=qlSM!W;J{J(fZ#~-Vgon$5IxuWf z0ib`>r8$FVA{0EUp?|e)BP6A$`6V2=T<(Gf+BE6we7%kH88Lla73H6PPXI*<#ZT=$ zP^qWCUR^Qc__*l)hoKX1fA#n~l)mnd+EfmJZoT}|e*#dRG5@GTdW1WGVN7u?0iFNB zKd4AK2!Ex2O@9*}xJDKf#YfrC$D9)cDUSB90&5GwD-aFdp4Es=QYbEi?{-YaAb4zX>pX f?f@j-uh!j^)~SylZE6%$7q6-K&&t-)A6@@n$LaAL literal 0 HcmV?d00001 diff --git a/obj/main001.o b/obj/main001.o new file mode 100644 index 0000000000000000000000000000000000000000..b0eb976445353d89ef2194c09489a8d98bb41879 GIT binary patch literal 4152 zcmbtXO>7%Q6duPd(2}O1KTs$?+e2wu=*rt9ZBuBK#NA{KAq{cLA)#6}>v6q`?X`Ai z)3gu}azR*8q;LRncy;T=pJ6r@kE6=5|GK_%V%<}}Z8W|S0WLQqF6g)G zD{X9NePt6nRbNR3FNYg7^yORQMty#n1P6@8UgY1kdE+Z%VIxN&XyZrjbZd{Xpf4MZ z>!G$ioZ6#)u-!XX*{(nLt*xy^ah}kvjeIf|URo&_-R-0ER?pY0)|E>m)qTA5a8mC=H#s@zlfouy2% zlxav!Wz=WN3_Y(DJ-4E`RjRl}#SJ{AKxb*$tx->5uEHH`oBBR#=%}Eh3@fsNX*iob zrgWX24yr6rj;P&g=HQ_t0avv*wWDgLXMYHXE<1#0>cTil&2^@Bx8MK364du`z;U1) z!+H;NbiUh`-Ev>LHw6@Kd!Abf$>A*RZ70#p?XLaFaS^%vNKCrhD z-?pknWc7wUuh}hUd5%4{8-&@G{al`D8akQGv!H$EY+WA*tb5w>A#E2@q*f(oPndeX z*BpD%4kOTNp`5e-oiC)F0q?_@_h{ZN`})|>c;3yMIs!e|z%|V+Hj~uH`kL!?Mz>oW zsMX4j%?qf*NwBo`jA@r<%%bI#d31KvaeWhVrx4d+S&b75zH64CyJ*(YY~O!&QCg|`^WVS(dU3%ir-T+ay{^@m_c{-D4m|A5ek#T@64#`syG=M(so zG5#w;Hxu~97=K#mGYR}4f^UPhJXc-d@?6q?F~Z*-;a`g2_%4%i_=N;?8Am>VD}s+W z_GZcdTHsi>ha>oR0>}D362b9;hl2cFFl3xR5ClQ|Q5X{c3qcUXAA=$BzYzqHd43S8 zWL3<_k3RRU&`(e#|FcjfI|Lr*_eAjBz?J)ApG3hp=p%76!pHZ&#ETLB6A`=;!J~1Q zz_D&mM)=r=QIPu-3>hCW6f|Q_^8Km68U-;NQu@V0;_`j>S`3$Qi0YrOFl!oS=7n=f zt~^@CYuFqkYQbU_QKx;MsGb`t+={K%v^>u`PgL8j;GK@BRhLn9c=Yr^-Za1i z^x*y}^7y}#0s*il@tZ?GU??AndWKram1~^wnPaW{VMOIUafR3=u1@%G4~CLA3;a%_ zJPiZ!_zml)*uKa`iNntVhB1@;f8?Ox|4|(<;`{$90>=4L zmvbNZwyNL94}t+i)(Pu}&q(@7`~|=;#SDz7+!Xsi69r){k0WR7&vG55ZjT>G7~|ZM z@Q>F|KKHq3P*}_SC2Yf@)%h=r^BaPQ=idxN`pffUKJmTLWl82QX1ssnbBg=p%~(=l d*_0*mgSZnra7^XBvz0%=gh9M;YJSH3{{aAGuxbDR literal 0 HcmV?d00001 diff --git a/obj/player001.o b/obj/player001.o new file mode 100644 index 0000000000000000000000000000000000000000..ff749a3a0116a7cca661b0e9e81a4efce5e5c5bb GIT binary patch literal 3480 zcmbuCUuauZ7{E`GZmqg*-JGCy#THaLb(h>WtgHV>o89(~g|0LW4re*s-kv70X%cR3 zy0q#PiqcCE`=W?~^kEML9~}CUm%(O>)3<>jJ_!0E3v4gG?LnyDckVgO%}pX$KR7wx z`F(%Rx#xWMPu|z!6Tv`$NC}YFNqrrt*o$#K%deY;?c=A`cYnb6lC=(_V> zRd-4^7W7KTbAw>f9j&I`(kpXSy^_44f2`foonLh4P7O1;!yk0#ch69mDq8hUG|auY z8o{+~>J_cFpbxvb?ScDG>&}jwMT9xO%H(d!^Eh7MoN6BUQ^F0;mBzhyJ4q9bYN{dK0^ZKp3X0k z^!6U?hi3VsHTfKDO@39Ruf0U3|^YxOWw<%L~w*@a)5uh|EGi z5Uj69Y8$|NgparTsty0G4IhA|w90d(4S%~0FSg154*0jauA72yK^zLNMd*JP{98`z z{GQ;ug7ex0JqV@4^Mf6Q*CZ;1tg*_ha9CB$LV?gX6Lwr3Eo7L6v@v%6)G%=CTX6fwMcwD16=YO9lrfM@66A>Og z8iSP>rp>H_F8V-AIIn6egeG%WGr0vi!-}P4Mkwr%VJ=ZKy+jv{OxC-h>cKX&ekA8o z%#O1amc@DZ59%yXtz2ke>JTdzX7k)R={K2aW-f742~8lw_ydAZ7_9%l_gooA2!b4I zQt~N;AjnTZll()3Ab!5-V$L52UHX6O;rI-f{G_N~d=ft8;liE2ub+?u=rJb>`XA+* z`!gtXZLs#ZChfD&leP#N8XRyF5c(6V*I0z?|+Oa#nolom?sL{M{b{% zn#Hn)VzaVMlm){!h%#R+62;29gOq7fRyJ9|rVy89U_pO0qNZf?rjb?t?cP(&{PHr( zLHbP)j^9=|RT!FAHpKiddLifn@AvpTlFaM+T`Sna_Y1*%%O_P4|A#jz z=yLrM6ule%EzF^T*@=8Gr2oBK_i%vCo&> Uzb#lFt>U-EL|OV literal 0 HcmV?d00001 diff --git a/peda-session-version001.txt b/peda-session-version001.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/peda-session-version001.txt @@ -0,0 +1 @@ + diff --git a/src/class/character.cpp b/src/class/character.cpp new file mode 100644 index 0000000..b671ee8 --- /dev/null +++ b/src/class/character.cpp @@ -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; + } +} \ No newline at end of file diff --git a/src/class/character.hpp b/src/class/character.hpp new file mode 100644 index 0000000..f533833 --- /dev/null +++ b/src/class/character.hpp @@ -0,0 +1,36 @@ +#ifndef HACKTHEGAME_CHARACTER_HPP +#define HACKTHEGAME_CHARACTER_HPP + +#include + +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 \ No newline at end of file diff --git a/src/class/monster.cpp b/src/class/monster.cpp new file mode 100644 index 0000000..ce6aff5 --- /dev/null +++ b/src/class/monster.cpp @@ -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; +} \ No newline at end of file diff --git a/src/class/monster.hpp b/src/class/monster.hpp new file mode 100644 index 0000000..814813e --- /dev/null +++ b/src/class/monster.hpp @@ -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 \ No newline at end of file diff --git a/src/class/player.cpp b/src/class/player.cpp new file mode 100644 index 0000000..6aa509c --- /dev/null +++ b/src/class/player.cpp @@ -0,0 +1,81 @@ +#include "src/class/player.hpp" + +#include + +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; +} \ No newline at end of file diff --git a/src/class/player.hpp b/src/class/player.hpp new file mode 100644 index 0000000..41ed9a4 --- /dev/null +++ b/src/class/player.hpp @@ -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 \ No newline at end of file diff --git a/system/battle0.hpp b/src/interface/battle0.cpp similarity index 76% rename from system/battle0.hpp rename to src/interface/battle0.cpp index d2bdb8e..d2383a9 100644 --- a/system/battle0.hpp +++ b/src/interface/battle0.cpp @@ -1,20 +1,16 @@ -#ifndef _2EASY4ME_BATTLE_SYSTEM_LEVEL0_ -#define _2EASY4ME_BATTLE_SYSTEM_LEVEL0_ - -#include "../class/monster.hpp" -#include "../class/player.hpp" - -#include +#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 \ No newline at end of file +} \ No newline at end of file diff --git a/src/interface/battle0.hpp b/src/interface/battle0.hpp new file mode 100644 index 0000000..11f3007 --- /dev/null +++ b/src/interface/battle0.hpp @@ -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 + +int startBattle(Player *player, Monster *monster); + +#endif \ No newline at end of file diff --git a/src/interface/creation.cpp b/src/interface/creation.cpp new file mode 100644 index 0000000..bd7ca8b --- /dev/null +++ b/src/interface/creation.cpp @@ -0,0 +1,43 @@ +#include "src/interface/creation.hpp" +#include "src/interface/info.hpp" + +#include + +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; +} \ No newline at end of file diff --git a/src/interface/creation.hpp b/src/interface/creation.hpp new file mode 100644 index 0000000..fc8cf37 --- /dev/null +++ b/src/interface/creation.hpp @@ -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 \ No newline at end of file diff --git a/src/interface/info.cpp b/src/interface/info.cpp new file mode 100644 index 0000000..07abaea --- /dev/null +++ b/src/interface/info.cpp @@ -0,0 +1,49 @@ +#include "src/interface/info.hpp" + +#include + +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; +} \ No newline at end of file diff --git a/src/interface/info.hpp b/src/interface/info.hpp new file mode 100644 index 0000000..f1c5ad0 --- /dev/null +++ b/src/interface/info.hpp @@ -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 \ No newline at end of file diff --git a/src/system/betatest.cpp b/src/system/betatest.cpp new file mode 100644 index 0000000..1e1cf4a --- /dev/null +++ b/src/system/betatest.cpp @@ -0,0 +1,29 @@ +#include "src/system/betatest.hpp" + +#include +#include + +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; +} \ No newline at end of file diff --git a/src/system/betatest.hpp b/src/system/betatest.hpp new file mode 100644 index 0000000..b8b42b4 --- /dev/null +++ b/src/system/betatest.hpp @@ -0,0 +1,6 @@ +#ifndef HACKTHEGAME_BETATEST_HPP +#define HACKTHEGAME_BETATEST_HPP + +bool checkBetaTest(); + +#endif \ No newline at end of file diff --git a/version001 b/version001 new file mode 100755 index 0000000000000000000000000000000000000000..78408cfa16a583efe18bda795edd3ac42b8bdabe GIT binary patch literal 27560 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 ZrrK4!_}VS2{4lTJNdEgGQXo_QzX5vBvZ??8 literal 0 HcmV?d00001