There are a couple of problems. First, changing '_' to 0 is the correct fix to one of them. When you compare to an underscore, you're actually comparing to the numeric ASCII value of an underscore. It needs to be compared against 0.
But, fixing that problem reveals another, larger problem. The logic of checking all of the non-blank tiles is flawed. As written, the code checks to see that the numbers are in sequence. The problem is that when a number is found to be out of sequence, it doesn't do anything about it. The loop just keeps going until the end and then a
return true; is executed. Instead, when a number is found to be out of sequence, it should immediately return false.
This should also teach you a hidden lesson. Making a change that seems to make a lot more errors isn't necessarily a bad thing. Sometimes, big errors or a lot of errors can be hidden by a small one. It may appear that the change was breaking code when it was actually fixing one bug and revealing more bugs! You have to develop the skill to recognize the difference between a fix and a non-fix.
If this answers your question, please click on the check mark to accept. Let's keep up on forum maintenance. ;-)