>> e.g. if you align the compass with a Cartesian plane, 0@1 is North, 0@-1 is >> South, 1@0 is East, and -1@0 is West.
On Fri, 19 Apr 2019 at 01:01, Roelof Wobben <r.wob...@home.nl> wrote: > > yep, I have read that one > but I never gets a answer how I can "convert" a point to something like > north, east Maybe you are looking for something like this... map := Dictionary newFromPairs: { 'north'. 0 @ 1 . 'south'. 0 @ -1 . 'east'. 1 @ 0 . 'west' . -1 @ 0 }. (map at: 'north') inspect. (map keyAtValue: 0 @ -1) inspect. cheers -ben > > because the challenge wants this to be the answer : > > (Dictionary new > add: 'direction' -> 'north'; > add: > 'position' > -> > (Dictionary new > add: 'x' -> 0; > add: 'y' -> 0; > yourself); > yourself) > > > and I think I need then to use if then , which I try to avoid as much as > possible. > > Roelof > > > > Op 18-4-2019 om 18:33 schreef Richard Sargent: > > On Thu, Apr 18, 2019 at 8:57 AM Roelof Wobben <r.wob...@home.nl> wrote: >> >> Hello, >> >> I know I have asked earlier but im still stuck on this one : >> https://github.com/exercism/problem-specifications/blob/master/exercises/robot-simulator/description.md >> >> I tried with all double dispatch but that will be a lot of duplicate classes >> >> The problem I cannot solve right is that a robot can move or turn. when a >> robot turns only the direction the robot is facing changes and the position >> not. when a robot moves the facing direction stays the same but the position >> changes. but the change is dependend on the facing. Also the new facing >> direction is dependend on the old facing direction/ >> How can I model this the best. >> >> I already have a object Robot that contains the facing direction and the >> current position >> or tried without it but then I use a lot of if then's >> >> >> so it there a better way to model this problem so it will be all nice and >> readable code. > > > If I remember correctly, Richard O'Keefe gave you a viable design. 1) Use a > Point for your direction vector. 2) Use a second Point for your position. > > e.g. if you align the compass with a Cartesian plane, 0@1 is North, 0@-1 is > South, 1@0 is East, and -1@0 is West. When you move, you add the direction > vector to your current position. If you allow movements of greater than a > single unit, you multiply the direction vector by the distance before adding > that product to the position. > >> >> Roelof >> >