added map and nice travel sentences

This commit is contained in:
Anselme 2016-03-14 17:03:30 +01:00
parent 455455dca7
commit afa0b3f90f
2 changed files with 91 additions and 35 deletions

View File

@ -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)

View File

@ -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");}
};