Jump to content

  • Log In with Google      Sign In   
  • Create Account

Trouble with Simple Checkers


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 0Circle0   Members   -  Reputation: 343

Like
0Likes
Like

Posted 08 December 2012 - 02:24 PM

Everything works perfect, so far, except reds bottom row cannot move. The code is 283 lines so I wont post it, rather just attatch it to this post. I included the source/run and the auto compile bat. I've tried flipping the board and making every piece king and black cannot move off reds bottom row either. Everything I comment out to barebones the program, which it nearly already is, either does nothing or breaks the program globally. I've been looking at it for 12 hours and I cannot see the problem. I don't get any errors in the console either.

If anyone wants to take a quick look maybe someone will see something that I am not.

Attached Files


Sprite Creator 3 VX & XP

WARNING: I edit my posts constantly.


Sponsor:

#2 j-locke   Members   -  Reputation: 816

Like
0Likes
Like

Posted 08 December 2012 - 05:04 PM

I took a look at the code. I added a console print statement just before the first if statement in the checkMove() method. From there I could see that for that bottom row, the checkY value being calculated was 0. Since you seem to be built around using the 1-8 subscripts of the array, I would think that number isn't correct. I'm not sure about how that's getting set but since you know the logic in the checkClick() method that seems to be setting that lookup value (hasSelection), maybe that info will be enough for you to know where to go to solve it.

#3 0Circle0   Members   -  Reputation: 343

Like
0Likes
Like

Posted 08 December 2012 - 05:48 PM

I did what you did. I see what you mean. Every square works except the bottom row which seems to be 1 row down and 1 row left which makes it invalid. Hmm this points me in a direction. I'll see what I can't find out. Thanks for catching that.


EDIT: I figured it out. Now my math may be wrong but I thought this was correct.

HasSelection = X * 8 + Y
Then
X = HasSelection / 8
Y = HasSelection % 8

Is that not right?

Basically to fix it I eliminated HasSelection and instead put a X and Y placeholder that is transfered. That works. Something with this line
CheckY = ToLookUp % 8;
Guess that is not correct? Yet it works for every other square except the last row the 8th row.

Edited by 0Circle0, 08 December 2012 - 06:12 PM.

Sprite Creator 3 VX & XP

WARNING: I edit my posts constantly.


#4 Paradigm Shifter   Crossbones+   -  Reputation: 5370

Like
1Likes
Like

Posted 09 December 2012 - 01:16 PM

Do you want to return a number fro 1-8? The modulo (%) operator always returns a number from 0-7 for modulo 8, you probably want

x = (y % 8) + 1

or if you count from 1-8 not 0-7

x = ((y-1)%8) + 1
"Most people think, great God will come from the sky, take away everything, and make everybody feel high" - Bob Marley

#5 0Circle0   Members   -  Reputation: 343

Like
0Likes
Like

Posted 11 December 2012 - 12:49 AM

Do you want to return a number fro 1-8? The modulo (%) operator always returns a number from 0-7 for modulo 8, you probably want

x = (y % 8) + 1

or if you count from 1-8 not 0-7

x = ((y-1)%8) + 1


Not sure what you mean. HasSelection = X * 8 + Y. You don't know Y to get X from HasSelection.

Only way I can think of is to do it by hand rather than letting the computer do it for me.
//Like say x = 5 and y = 6
int HasSelection = 5 * 8 + 6; // or 46
int HSHolder = 0;
HSHolder = HasSelection / 8; // 46 / 8 = (int)5.75 = 5
y = ((HasSelection - 1) / 8 - HSHolder) * 8 + 1; // 45 / 8 = 5.625 - 5 = .625 * 8 = 5 + 1 = 6

Edited by 0Circle0, 11 December 2012 - 01:31 AM.

Sprite Creator 3 VX & XP

WARNING: I edit my posts constantly.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS