-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add solver option "active robot must ricochet before reaching the goal" #13
Comments
my reply at BoardGameGeek
|
Is this included by now? Where do I find the code for this? because I have a problem in my Roboyard, that the solver rejects to find a solution if the target doesn't sit in a corner and the robot would have its last move directly: |
Generally, the active robot has to stop at the goal. If, like in your screenshot, there is no wall behind the goal space then you have to move another robot there, in order to make the active robot stop. The code change discussed in this issue is not done yet. I started something some months ago but haven't finished it. I should continue that some day... |
Yes, exactly, It needs another robot there, I find a solution with 11 moves, for example, where the blue goes right to give way for the green robot to pass and stop down there, then the blue goes left and down. but the AI doesn't find any solution because that last move is not allowed, I guess. Where could that code be in your solver? |
For custom-made boards we don't apply the rule "active robot must ricochet before reaching the goal" as strictly as for the standard Ricochet Robots boards. This is achieved by detecting the "solution in 0 or 1 move" situation only if the active robot stops at the goal in a single move, because there is a wall or another robot behind the goal space. On all standard Ricochet Robots boards there are two walls next to each goal, so this condition is always met and we have to enforce this rule to avoid the trivial single-move solution. But on custom boards the goals can have no walls next to them and then some helper robot(s) are required to reach the goal. In these cases we allow the active robot to move straight to the goal, because moving the helper robot(s) to the required is not a trivial single-move solution.
commit smack42/DriftingDroids@67057cf For custom-made boards we don't apply the rule "active robot must ricochet before reaching the goal" as strictly as for the standard Ricochet Robots boards. This is achieved by detecting the "solution in 0 or 1 move" situation only if the active robot stops at the goal in a single move, because there is a wall or another robot behind the goal space. On all standard Ricochet Robots boards there are two walls next to each goal, so this condition is always met and we have to enforce this rule to avoid the trivial single-move solution. But on custom boards the goals can have no walls next to them and then some helper robot(s) are required to reach the goal. In these cases we allow the active robot to move straight to the goal, because moving the helper robot(s) to the required is not a trivial single-move solution.
closed by release 1.3.8 |
Should I update the solver in roboyard as well? Or did the functionality stay the same since the last commit I used? |
The relevant code change was committed in May 2019, more than a year ago. You had already merged it into your app. |
feature request via BoardGameGeek
https://boardgamegeek.com/article/30145862#30145862
The custom board on that screenshot is this one:
!DriftingDroids_game!C290C2E0!AAABM3jaY2BgYOAAYVYgYQDEJkCsCsRmQCwExAyMU
ABkMcABEhNNkJERizxYMyOSTka4ClRxmCEQmhHBJN1eRoTDKXIAlDICs4AkIwAm6QGF!
The text was updated successfully, but these errors were encountered: