diff options
| author | SemperVinco <w.deweijer@hotmail.com> | 2017-03-01 23:51:26 +0100 | 
|---|---|---|
| committer | SemperVinco <w.deweijer@hotmail.com> | 2017-03-01 23:51:26 +0100 | 
| commit | fea3a0eed32db67ef435e7317727ca27f93ae31a (patch) | |
| tree | 3899dd231b4742a520591ec7fa785e99155cc07f | |
| parent | 19fc81c988af048c90ffcc4109c4264da128f978 (diff) | |
include heading in -p option, pair -> tuple
| -rw-r--r-- | main.cpp | 10 | ||||
| -rw-r--r-- | world.cpp | 9 | ||||
| -rw-r--r-- | world.h | 2 | 
3 files changed, 11 insertions, 10 deletions
| @@ -5,7 +5,7 @@  #include <unordered_map>  #include <unistd.h>  #include <cstdlib> -#include <array> +#include <tuple>  #include <cctype>  #include <cassert>  #include <sys/time.h> @@ -219,7 +219,7 @@ int main(int argc,char **argv){  	vector<Team> teams;  	bool opt_pos = false; -	vector<pair<int,int>> positions; +	vector<tuple<int,int,int>> positions;  	int k = 1; // Increase past options; @@ -233,14 +233,14 @@ int main(int argc,char **argv){  		assert(f);  		teams.push_back(assemble(preprocess(f)));  		if(opt_pos) { -			positions.emplace_back((int)strtol(argv[i+1],NULL,10), (int)strtol(argv[i+2],NULL,10)); // TODO: check if i>argc -			i += 2; +			positions.emplace_back((int)strtol(argv[i+1],NULL,10), (int)strtol(argv[i+2],NULL,10), (int)strtol(argv[i+3],NULL,10)); // TODO: check if i>argc +			i += 3;  		}  	}  	for(int i=0; i<(int)teams.size(); i++) {  		const Team &t = teams[i]; -		Robot &r = opt_pos ? world.create(&t,2,t.banks.size(),false, positions[i].first, positions[i].second) +		Robot &r = opt_pos ? world.create(&t,2,t.banks.size(),false, get<0>(positions[i]), get<1>(positions[i]), get<2>(positions[i]))  		                   : world.create(&t,2,t.banks.size(),false);  		for(int i=0;i<(int)t.banks.size();i++){ @@ -232,17 +232,18 @@ World::~World(){  }  Robot& World::create(const Team *team,int iset,int nbanks,bool mobile){ -	int x,y; +	int x,y,heading;  	while(true){  		x=rand()%SIZE;  		y=rand()%SIZE;  		if(!board[y][x])break;  	} +	heading = rand()%4; -	return create(team, iset, nbanks, mobile, x, y); +	return create(team, iset, nbanks, mobile, x, y, heading);  } -Robot& World::create(const Team *team,int iset,int nbanks,bool mobile,int x,int y){ +Robot& World::create(const Team *team,int iset,int nbanks,bool mobile,int x,int y,int heading){  	x = (x%SIZE + SIZE)%SIZE; // Negative values are wrapped  	y = (y%SIZE + SIZE)%SIZE;  	assert(!board[y][x]); @@ -251,7 +252,7 @@ Robot& World::create(const Team *team,int iset,int nbanks,bool mobile,int x,int  	board[y][x]->banks.resize(nbanks);  	board[y][x]->iset=iset;  	board[y][x]->mobile=mobile; -	board[y][x]->heading=rand()%4; +	board[y][x]->heading=heading%4;  	return *board[y][x];  } @@ -94,7 +94,7 @@ public:  	~World();  	Robot& create(const Team *team,int iset,int nbanks,bool mobile); -	Robot& create(const Team *team,int iset,int nbanks,bool mobile,int x,int y); +	Robot& create(const Team *team,int iset,int nbanks,bool mobile,int x,int y,int heading);  	Robot& createInFront(const Robot *caller,const Team *team,int iset,int nbanks,bool mobile);  	void tick(); | 
