1
0
mirror of https://github.com/andre-wojtowicz/torcs-client-fuzzy-cpp synced 2024-11-26 15:45:28 +01:00

Minor changes

This commit is contained in:
Andrzej Wójtowicz 2016-08-10 20:41:23 +02:00
parent 5cc2616ad0
commit 673fda542a
3 changed files with 62 additions and 33 deletions

1
.gitignore vendored
View File

@ -234,3 +234,4 @@ _Pvt_Extensions
# FAKE - F# Make # FAKE - F# Make
.fake/ .fake/
torcs-client-fuzzy-cpp.VC.db

View File

@ -53,12 +53,12 @@ void FuzzyDriver::init(float *angles)
void FuzzyDriver::onShutdown() void FuzzyDriver::onShutdown()
{ {
std::cout << "Bye bye!" << std::endl; std::cout << std::endl << "Bye bye!" << std::endl;
} }
void FuzzyDriver::onRestart() void FuzzyDriver::onRestart()
{ {
std::cout << "Restarting the race!" << std::endl; std::cout << std::endl << "Restarting the race!" << std::endl;
} }
/* Gear Changing Constants*/ /* Gear Changing Constants*/

View File

@ -57,13 +57,14 @@ typedef struct sockaddr_in tSockAddrIn;
class __DRIVER_CLASS__; class __DRIVER_CLASS__;
typedef __DRIVER_CLASS__ tDriver; typedef __DRIVER_CLASS__ tDriver;
void parse_args(int argc, char *argv[], std::string &hostName, unsigned int &serverPort, std::string &id, unsigned int &maxEpisodes, void parse_args(int argc, char *argv[], std::string &serverName, unsigned int &serverPort,
unsigned int &maxSteps, std::string &trackName, BaseDriver::tstage &stage, std::string &fclFile) std::string &driverId, std::string &trackName, BaseDriver::tstage &stage,
unsigned int &maxEpisodes, unsigned int &maxSteps, std::string &fclFile)
{ {
// Set default values // Set default values
hostName = "localhost"; serverName = "localhost";
serverPort = 3001; serverPort = 3001;
id = "SCR_Fuzzy"; driverId = "SCR_Fuzzy";
trackName = "unknown"; trackName = "unknown";
maxEpisodes = 0; maxEpisodes = 0;
maxSteps = 0; maxSteps = 0;
@ -76,13 +77,13 @@ void parse_args(int argc, char *argv[], std::string &hostName, unsigned int &ser
while (i < argc) while (i < argc)
{ {
if (args[i].find("host:") == 0) if (args[i].find("host:") == 0)
hostName = args[i].substr(5); serverName = args[i].substr(5);
else if (args[i].find("port:") == 0) else if (args[i].find("port:") == 0)
serverPort = std::stoi(args[i].substr(5)); serverPort = std::stoi(args[i].substr(5));
else if (args[i].find("id:") == 0) else if (args[i].find("id:") == 0)
id = args[i].substr(3); driverId = args[i].substr(3);
else if (args[i].find("maxEpisodes:") == 0) else if (args[i].find("maxEpisodes:") == 0)
maxEpisodes = std::stoi(args[i].substr(12)); maxEpisodes = std::stoi(args[i].substr(12));
@ -113,37 +114,42 @@ int main(int argc, char *argv[])
{ {
// ---------------------------- config init ---------------------------- // ---------------------------- config init ----------------------------
std::string hostName; std::string serverName;
unsigned int serverPort; unsigned int serverPort;
std::string id; std::string driverId;
unsigned int maxEpisodes;
unsigned int maxSteps;
std::string trackName; std::string trackName;
BaseDriver::tstage stage; BaseDriver::tstage stage;
unsigned int maxEpisodes;
unsigned int maxSteps;
std::string fclFile; std::string fclFile;
parse_args(argc, argv, hostName, serverPort, id, maxEpisodes, maxSteps, trackName, stage, fclFile); parse_args(argc, argv, serverName, serverPort, driverId, trackName, stage, maxEpisodes, maxSteps, fclFile);
std::cout << "Config:" << std::endl; std::cout << "Config:" << std::endl;
std::cout << "\thost: " << hostName << std::endl; std::cout << " * server name: " << serverName << std::endl;
std::cout << "\tport: " << serverPort << std::endl; std::cout << " * server port: " << serverPort << std::endl;
std::cout << "\tid: " << id << std::endl; std::cout << " * driver id " << driverId << std::endl;
std::cout << "\tmax steps: " << maxSteps << std::endl; std::cout << " * track name: " << trackName << std::endl;
std::cout << "\tmax episodes: " << maxEpisodes << std::endl;
std::cout << "\ttrack name: " << trackName << std::endl; std::string switchStage;
std::cout << "\tstage: ";
if (stage == BaseDriver::WARMUP) switch (stage)
std::cout << "warm-up" << std::endl; {
else if (stage == BaseDriver::QUALIFYING) case BaseDriver::WARMUP:
std::cout << "qualifying" << std::endl; switchStage = "warm-up" ; break;
else if (stage == BaseDriver::RACE) case BaseDriver::QUALIFYING:
std::cout << "race" << std::endl; switchStage = "qualifying"; break;
else case BaseDriver::RACE:
std::cout << "unknown" << std::endl; switchStage = "race"; break;
default:
switchStage = "unknown";
}
std::cout << "\tfcl file: " << fclFile << std::endl << std::endl; std::cout << " * stage: " << switchStage << std::endl;;
std::cout << " * max episodes: " << maxEpisodes << std::endl;
std::cout << " * max steps: " << maxSteps << std::endl;
std::cout << " * fcl file: " << fclFile << std::endl << std::endl;
// ---------------------------- socket init ---------------------------- // ---------------------------- socket init ----------------------------
@ -171,10 +177,10 @@ int main(int argc, char *argv[])
} }
#endif #endif
hostInfo = gethostbyname(hostName.c_str()); hostInfo = gethostbyname(serverName.c_str());
if (hostInfo == NULL) if (hostInfo == NULL)
{ {
std::cerr << "Problem interpreting host: " << hostName << std::endl; std::cerr << "Problem interpreting server name: " << serverName << std::endl;
exit(1); exit(1);
} }
@ -211,15 +217,19 @@ int main(int argc, char *argv[])
{ {
// Initialising driver on the server // Initialising driver on the server
bool already_reconnecting = false;
do do
{ {
// Set angles of rangefinders // Set angles of rangefinders
float angles[19]; float angles[19];
d.init(angles); d.init(angles);
std::string initString = SimpleParser::stringify(std::string("init"), angles, 19); std::string initString = SimpleParser::stringify(std::string("init"), angles, 19);
initString.insert(0, id); initString.insert(0, driverId);
#ifdef _DEBUG
std::cout << "Sending init: " << initString << std::endl; std::cout << "Sending init: " << initString << std::endl;
#endif
if (sendto(socketDescriptor, initString.c_str(), (int)initString.length(), 0, if (sendto(socketDescriptor, initString.c_str(), (int)initString.length(), 0,
(struct sockaddr *) &serverAddress, (struct sockaddr *) &serverAddress,
@ -243,18 +253,32 @@ int main(int argc, char *argv[])
numRead = recv(socketDescriptor, buf, UDP_MSGLEN, 0); numRead = recv(socketDescriptor, buf, UDP_MSGLEN, 0);
if (numRead < 0) if (numRead < 0)
{ {
std::cerr << "Didn't get response from server. Reconnecting..." << std::endl; if (!already_reconnecting)
{
already_reconnecting = true;
std::cerr << "Didn't get response from server. Reconnecting...";
}
else
std::cerr << ".";
std::this_thread::sleep_for(std::chrono::seconds(1)); std::this_thread::sleep_for(std::chrono::seconds(1));
} }
else else
{ {
if (already_reconnecting)
std::cout << std::endl;
if (std::string(buf) == "***identified***") if (std::string(buf) == "***identified***")
{ {
#ifdef _DEBUG
std::cout << "Driver identified" << std::endl; std::cout << "Driver identified" << std::endl;
#endif
break; break;
} }
#ifdef __UDP_CLIENT_VERBOSE__
else else
std::cout << "Received: " << buf << std::endl; std::cout << "Received: " << buf << std::endl;
#endif
} }
} }
@ -290,7 +314,9 @@ int main(int argc, char *argv[])
if (std::string(buf) == "***shutdown***") if (std::string(buf) == "***shutdown***")
{ {
#ifdef _DEBUG
std::cout << std::endl << "Client shutdown" << std::endl; std::cout << std::endl << "Client shutdown" << std::endl;
#endif
d.onShutdown(); d.onShutdown();
shutdownClient = true; shutdownClient = true;
@ -299,7 +325,9 @@ int main(int argc, char *argv[])
if (std::string(buf) == "***restart***") if (std::string(buf) == "***restart***")
{ {
#ifdef _DEBUG
std::cout << std::endl << "Client restart" << std::endl; std::cout << std::endl << "Client restart" << std::endl;
#endif
d.onRestart(); d.onRestart();
break; break;