Mercurial > repo
view interps/rail/src/Dir.cpp @ 5674:91d4a5b788c9
<tswett> echo \'[11,11,11,15,15,23,12],[5,5,5,3,53,45,16,26,00,20,15,16,22,25,45,91,32,11,15,27,06,01,11,01,47,22,30,13,43,21,11,13,29,61,65,17,19,12,28,17,11,01,23,20,16,20,81,18,32,25,58,22.,1985,10.301350435,1555466973690094680980000956080767,13720946704494913791885940266665466978579582015128512190078...\' > wisdom/code
author | HackBot |
---|---|
date | Wed, 24 Jun 2015 14:47:46 +0000 |
parents | 859f9b4339e6 |
children |
line wrap: on
line source
// Dir.cpp #include "lib.h" #include "Dir.h" using namespace std; namespace Dir { t back(t current) { static t result[] = {south, southwest, west, northwest, north, northeast, east, southeast}; check(current, "Dir::back()"); return result[current]; } t left(t current) { static t result[] = {northwest, north, northeast, east, southeast, south, southwest, west}; check(current, "Dir::left()"); return result[current]; } t right(t current) { static t result[] = {northeast, east, southeast, south, southwest, west, northwest, north}; check(current, "Dir::right()"); return result[current]; } string dirToString(t current) { static string result[] = {"north", "northeast", "east", "southeast", "south", "southwest", "west", "northwest"}; if (current >= min && current <= max) { return result[current]; } else { return intToString(current); } } Vec dirToVec(t current) { static Vec result[] = {Vec(0, -1), Vec(1, -1), Vec(1, 0), Vec(1, 1), Vec(0, 1), Vec(-1, 1), Vec(-1, 0), Vec(-1, -1)}; check(current, "Dir::dirToVec()"); return result[current]; } void check(t current, string const & name) { if (current < min || current > max) { throw InternalException(name + ": Invalid Direction: " + dirToString(current)); } } }