Thank you Brandon for looking into this, and thanks Ian for bringing Brandon here.
Stratician wrote:I would think there are situations where you can quite easily foul (intentionally) but going in off (i.e. a Billiards-Type Shot). So shouldn't this be a Foul & Intentional Miss too?
The answer is simple: no.
This part of the miss rule is easy to handle: If the correct ball is hit first, no miss will be called.
Contrary to common belief, the referee's opinion does not matter in this case! The white may go in-off, it may jump off the table, other colors may go into pockets, whatever may happen, the shot is not a miss if the correct ball was hit first.
Yes, you are right, the player can intentionally go in-off from a red to go back to the baulk area. However, the referee will say only "foul" and not "foul and a miss". Why? Because the correct ball was hit first.
Regarding iSnooker, the solution looks quite simple:
- Code: Select all
if (correct_ball_was_hit_first() == true) {
miss_is_called = false;
}
There is another small detail which is not correct in iSnooker now: if snookers are needed before the foul stroke but not after the foul stroke (because of the penalty points), iSnooker will call a miss. However,
the rule says:
Section III, Rule 14 wrote:...the referee shall call FOUL AND A MISS unless either player needed snookers before, or as a result of, the stroke played and the referee is satisfied that the miss was not intentional.
It means that iSnooker should check the score difference not only after the shot but also before the penalty points are awarded:
- Code: Select all
if (snookers_needed_by_either_player_before_shot() ||
snookers_needed_by_either_player_after_penalty_points_are_awarded()) {
miss_is_called = false;
}
I believe that with these small modifications iSnooker could become much better from the miss rule point of view. I am aware that the full blown implementation of the whole miss rule is impossible. The computer cannot determine wheter the white failed to hit the correct ball because it was intentional or the player did his best to hit it but failed. In this case, iSnooker's current solution is the best choice: call a miss!
There is another part of the miss rule which talks about a situation where the object ball can be hit full in the face. In this case, if the player fails to hit the correct object ball in three consecutive attempts, he will lose the frame. As far as I know, this is not currently implemented in iSnooker. It may be a nice addition sometime in the future. I think the first two issues (with suggested pseudo code implementation) are much more important.
Please consider putting the suggested improvements in the next version. Thank you very much for your efforts in advance!