From a498f87083e3bd755d630296a1c29fd8c2015c73 Mon Sep 17 00:00:00 2001 From: Declan Soper Date: Fri, 22 Mar 2019 01:32:47 +0000 Subject: [PATCH] Tidy and add comments --- SPOILER_sql_2 (2).cpp | 122 ------------------------------------------ game.db | Bin 77824 -> 0 bytes main.cpp | 51 ++++++++---------- main.hpp | 10 ++-- 4 files changed, 27 insertions(+), 156 deletions(-) delete mode 100644 SPOILER_sql_2 (2).cpp delete mode 100644 game.db diff --git a/SPOILER_sql_2 (2).cpp b/SPOILER_sql_2 (2).cpp deleted file mode 100644 index ae1bdb3..0000000 --- a/SPOILER_sql_2 (2).cpp +++ /dev/null @@ -1,122 +0,0 @@ -//Include following header libraries. - -#include -#include -#include -#include -#include - -//declare Item structure. -typedef struct Item { - int modID; - std::string modName; - int matID; - std::string matName; - int itemID; - std::string itemName; - int total_attack; - int total_strength; - int total_defence; - int total_price; - int total_rarity; -} -Item; - -// function prototypes -Item* getRandomItem(sqlite3*); -int callback(void*, int, char**, char**); - -//Inspired from Diana Hintea tutorial 4005CEM. commented for self-understanding. -//Declare function main. Return integer. Two inputs argC and argV. - -int main(int argc, char** argv) -{ - //Declare structure. - sqlite3* DB; - - //Declare exit as integer and value 0.] - int exit = 0; - - //exit assigned to open function from SQLite3 library. Opens game.DB and uses structure. - exit = sqlite3_open("game.db", &DB); - - //return -1 for unable to open database. - if (exit) { - std::cerr << "Error open DB " << sqlite3_errmsg(DB) << std::endl; - return (-1); - } - //Print out if database opens correctly. - else - std::cout << "Opened Database Successfully!" << std::endl; - - Item *item = getRandomItem(DB); //Get a random item from the database - - // Print out the item details - std::cout << item->modName << " "; - std::cout << item->matName << " "; - std::cout << item->itemName << std::endl; - - sqlite3_close(DB); - delete item; - return (0); -} -//inspired from tutorial END - -//ITEM GENERATOR -//Callback function -int callback(void *data, int cols, char **values, char **colName) -{ - Item *item = (Item*)data; - - // build item with marshalled values - item->modID = atoi(values[0]); - item->modName = values[1]; - item->matID = atoi(values[2]); - item->matName = values[3]; - item->itemID = atoi(values[4]); - item->itemName = values[5]; - item->total_attack = atoi(values[6]); - item->total_strength = atoi(values[7]); - item->total_defence = atoi(values[8]); - item->total_price = atoi(values[9]); - item->total_rarity = atoi(values[10]); - - - return 0; -} - -Item* getRandomItem(sqlite3 *db) -{ - -//Declare variables here. Character pointer as SQL -//SQL commands for generating a random item and returning all values associated with it. -std::string sql = "SELECT" - "`rand_mod`.`ID`, `rand_mod`.`name`," - "`rand_mat`.`ID`, `rand_mat`.`name`," - "`rand_item`.`ID`, `rand_item`.`name`," - "`rand_mod`.`attackAdd` + `rand_mat`.`attackAdd` + `rand_item`.`attackAdd` AS `total_attack`," - "`rand_mod`.`strengthAdd` + `rand_mat`.`strengthAdd` + `rand_item`.`strengthAdd` AS `total_strength`," - "`rand_mod`.`defenceAdd` + `rand_mat`.`defenceAdd` + `rand_item`.`defenceAdd` AS `total_defence`," - "`rand_mod`.`priceAdd` + `rand_mat`.`priceAdd` + `rand_item`.`priceAdd` AS `total_price`," - "`rand_mod`.`rarityAdd` + `rand_mat`.`rarityAdd` + `rand_item`.`rarityAdd` AS `total_rarity`" - "FROM" - "(SELECT * FROM itemModifier ORDER BY RANDOM() LIMIT 1) as `rand_mod`," - "(SELECT * FROM materials ORDER BY RANDOM() LIMIT 1) as `rand_mat`," - "(SELECT * FROM items ORDER BY RANDOM() LIMIT 1) AS `rand_item`;"; - -char *errmsg; -int execute; -Item *item = new Item; -//Line to execute SQL commands and callback routine. -execute = sqlite3_exec(db, sql.c_str(), callback, item, &errmsg); - -//Check if executed correctly. Verification - if (execute != SQLITE_OK) - std::cerr << "DB Error! " << errmsg << std::endl; - else { - std::cout << "Random Items Fetched!" << std::endl; - } - -//Return the struct. - return item; -} \ No newline at end of file diff --git a/game.db b/game.db deleted file mode 100644 index 8a490c11cf78a5b111afba7d3238163c1025da25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 zcmeI*Uu+{s9S3mFuD#yf*!y$*CyQ0mI69p;iwZ7x{E>Q~;y7+Dy4+ow1Wx58+Kcz% zRcxLEcTgFDHe+{{*&WB z{mtMz@%{t;TbzHljm184@$oeME0)#vVswjMx2EW^)Nj*&OMNQ!UGtAA)z~(_rT^TR z(+&MA+FtUlcWV&mApijgK;ZNU>^?P~v?nLo-d5<`Zn|ze^g_?=_J3!q%eBgCt+ZO1 zU96S*M@tvX65kf)M9H@spS?a?TP|JrSeZXqT3)zbS$?{7t@iX|vRd0|xw6{lD$CWY z6<%-VQn_^F<|=>Q;$l>%=|1B&hnu=Ani{Rs4Fk8m5jKXpi=OOkcugeHJwJU|*n{5IW(NDTdtoeTm&6ekRw_03AXKGfi)a&)f$HY3jV2djUs?%r|R z>#ls_{&Stc>zx_Qg#PmahhOma{{Hw|#V1Y8zIOgl-XRK(JM?I*nM~S+0^7MFWm`_C zD}MA5NpWOYupjZkZ_`J;%08rP_Lah6VTyj%W<+W1P9&1{)D(N}3%$5PKGaT=2iM!t z_C?q`JRBw;6R{l~?f=_A&uE%mn>t*u=O7q+yUATsP1?52p6fn%^>pQHGd^P2d$|t& z42bwnnO`}s*`Kx#^OFYAE2NtUSkf*Q+0GM^Eqduir7{8+9UGl_LzC{IxA0#5p(_2) zCuaG>ie^7iJS@EEnQJrAZMEN2*u z8Hri{o%YI|>v< zc~s5jL`|_7tA5Mn$BJq$tFxj!WL|ZfEjLsYmF#hyP0NF0)rQ**J57F90zZ)-&+vu~ z9+Qz;bT>ATZs#(R=M*{cnH%xiCy zuC={8uF7?kOrjszxahyGnwhw6$Tp0Xdw#&RO;W`$@g@wVa^F=|8dpRtykA3IX?Sk4 zuH|z)jH2v0KId#~xPi(&ME>8V`!V_p{hj_v|EBx&EbY;k=&STK`Ubs7-=Xi*59k$o zn|?~K(XZ$?{ND-waLOh*E(Zb-fB*y_009U<00Izz00bcLKN3i&j3sPQY7?SN7DTD% zMQP+jX=X(^HZICkMwDq1rDchd(xS|yM425EWzH03-VkL$7v)4!l(r_y@kCrTSX}HX zswh<@t}-Jo^8Xp@r5OF0eoa5(+5a!o7pXx@^f;X(qL}rL^@jB-uYe5#5P$##AOHaf zKmY;|fB*y_@E!?R8Qm!I#J^!w{Z7XXa{a77Q&vLPZSn-aqD=6#|D?>Nt4sVF173Tp z6&G89C;p?aBg89pz8Y{l)Ww$OY5#(3GjYrJ>sg-jkG`FtEd+jBwpifF{^*&>>t5Ih zyryh0FS7lzBfaY1cAB9)I>B@9QTIlLf03cF-HrMYY5%BUb9w9bw(Q&DX@6VxJyvb{ zVWYqk{ZU8!iw#cLkl&b4lx)2J)bzaHtjlf+Jl`KxwQ4OlaGG`5;s%c!wX#b43YoO(2Fsi>Hju;k6xx9(@*FZ^g6vkZ_@ASPxMao zy@2;D7B%JhF+rvDQ%{jbUNe^RFZ zb(#J*WcuHf>HjgA{!b-D&Oa^l|CY@Elg$5Tu>SuUomRMP2tWV=5P$##AOHafKmY;| zI8y>x|Nl%4H!c$MgBiQZ^!uh{ #include #include +#include +#include #include #include #include #include "main.hpp" -int initialise(void) +void initialise(void) { - int error = setCwd(); - if (error) - { - return error; - } + // set current working directory + setCwd(); - initHub(); + // init db + sqlite3_open((Cwd + "/db/game.db").c_str(), &Db); + + // init map + GrandMaze::DbMapReader r(Db); + CurrentMap = r.load("maps", "data", 1); + // init ncurses initscr(); cbreak(); noecho(); - start_color(); curs_set(0); keypad(stdscr, true); + // init game colours GrandMaze::initColour(); - - return 0; } -int initHub(void) -{ - GrandMaze::FileMapReader r; - CurrentMap = r.load(Cwd + "/maps/final_map.map"); - - return 0; -} - -int setCwd(void) +void setCwd(void) { // set the current working directory char *tmp = new char[1024]; if (getcwd(tmp, 1024) == NULL) { - return errno; + throw strerror(errno); } Cwd = tmp; delete tmp; - - return 0; } int main(int argc, char *argv[]) { - int error = initialise(); - if (error) - { - std::cerr << "An error occurred: " << strerror(error) << std::endl; - return error; - } + // initialise global vars and ncurses + initialise(); + // draw map to stdscr CurrentMap->draw(stdscr); + // pause execution to display map getch(); - endwin(); + delete CurrentMap; - return 0; } + diff --git a/main.hpp b/main.hpp index 20b13f4..db40c54 100644 --- a/main.hpp +++ b/main.hpp @@ -3,14 +3,16 @@ #include +#include #include - +sqlite3 *Db; GrandMaze::Map *CurrentMap; std::string Cwd; -int initialise(void); -int initHub(void); -int setCwd(void); +// initialise ncurses and database +void initialise(void); +// set the current working directory +void setCwd(void); #endif