From afa0b3f90fc375cfd369be54681ff22156398971 Mon Sep 17 00:00:00 2001 From: Anselme Date: Mon, 14 Mar 2016 17:03:30 +0100 Subject: [PATCH] added map and nice travel sentences --- app/rpgmodule.cpp | 64 ++++++++++++++++++++++++++++++++++++++++------- app/rpgmodule.h | 62 ++++++++++++++++++++++++++------------------- 2 files changed, 91 insertions(+), 35 deletions(-) diff --git a/app/rpgmodule.cpp b/app/rpgmodule.cpp index f027494..820f6e4 100644 --- a/app/rpgmodule.cpp +++ b/app/rpgmodule.cpp @@ -24,30 +24,76 @@ void RPGModule::playerLeave(User *user) } } +QString RPGModule::getTerrainName(int type) +{ + switch(type) + { + case FOREST : + return QString("the forest"); + case MOUNTAINS : + return QString("the mountains"); + case PLAINS : + return QString("the plains"); + case ROAD : + return QString("a road"); + case VILLAGE : + return QString("a village"); + default : + return QString("Hell"); + } +} + QString RPGModule::playerTravel(RPGCharacter *c, QString dir) { + char terrainType = WORLDMAP[c->x][c->y]; + QString direction; + QString currentArea = getTerrainName(terrainType); + bool blocked = false; + if(dir.compare("north") == 0 || dir.compare("n") == 0) { - c->y -= 1; - return QString("%1 walks north and is still in the forest").arg(c->pseudo); + if(c->y == 0) + blocked = true; + else + c->y -= 1; + direction = "north"; } else if(dir.compare("south") == 0 || dir.compare("s") == 0) { - c->y += 1; - return QString("%1 walks south and is still in the forest").arg(c->pseudo); + if(c->y == 24) + blocked = true; + else + c->y += 1; + direction = "south"; } else if(dir.compare("west") == 0 || dir.compare("w") == 0) { - c->x -= 1; - return QString("%1 walks west and is still in the forest").arg(c->pseudo); + if(c->x == 0) + blocked = true; + else + c->x -= 1; + direction = "west"; } else if(dir.compare("east") == 0 || dir.compare("e") == 0) { - c->x += 1; - return QString("%1 walks east and is still in the forest").arg(c->pseudo); + if(c->x == 24) + blocked = true; + else + c->x += 1; + direction = "east"; } else - return QString("%1 is not a valid direction, use : north, south, west, east"); + return QString("%1 is not a valid direction, use : north, south, west, east").arg(dir); + + if(blocked) + return QString("%1 cannot go %2, a hill is blocking his way").arg(c->pseudo).arg(direction); + + char newTerrainType = WORLDMAP[c->x][c->y]; + if(terrainType == newTerrainType) + return QString("%1 is traveling %2 and is still in %3").arg(c->pseudo).arg(direction).arg(currentArea); + else + return QString("%1 is traveling %2, leaving %3 and entering %4") + .arg(c->pseudo).arg(direction).arg(currentArea).arg(getTerrainName(WORLDMAP[c->x][c->y])); } bool RPGModule::messageHandler(Message msg) diff --git a/app/rpgmodule.h b/app/rpgmodule.h index 4d74985..142e59e 100644 --- a/app/rpgmodule.h +++ b/app/rpgmodule.h @@ -6,32 +6,41 @@ class User; +enum +{ + FOREST = 'X', + MOUNTAINS = '^', + PLAINS = ' ', + ROAD = '#', + VILLAGE = 'O' +}; + const char WORLDMAP[25][26] = { - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX", - "XXXXXXXXXXXXXXXXXXXXXXXXX"}; + "^^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^XXXXXXX^^^^^^^^", + "^^^^^XXXXXXXXXXXXXX^^^^^^", + "^^^XXXXOXXXXXXXXXXXXXXXXX", + "^^^XXXX#XXXXXXXXXXXXXXXXX", + "^^XXXXX#XXXXXXXXXXXXXXXXX", + "XXXXXXX#XXXXXXXXXXXXXXXXX", + "XXXXXXX##########OXXXXXXX", + "XXXXXXX#XXXXXXX#XXXXXXXXX", + "XXXXXXX#XXXXXXX#XXXXXXXXX", + "XO######XXXXXXX#XXXXXXXXX", + "XXXXXXX#XXXXXXX#XXXXXXXXX", + "XXXXXXX# # XXXXXXXX", + "XXXX # # XXXX", + "XXXX #####O####### XX", + "XXXX # # ", + "XXXX # # ", + "XXXO#### # ", + "XXXX # ", + "XXXX # ", + "XXXXXXX ^^^#^^^ ", + "XXXXXXXXX^^^^^^^^^^O^^^^^", + "XXXXXX^^^^^^^^^^^^^^^^^^^", + "XX^^^^^^^^^^^^^^^^^^^^^^^"}; struct RPGCharacter @@ -89,7 +98,8 @@ public: void playerJoin(User* user, RPGCharacter *c); void playerLeave(User* user); QString playerTravel(RPGCharacter *c, QString dir); - + QString getTerrainName(int type); + virtual bool messageHandler(Message msg); virtual QString getName() {return QString("rpg");} };