my dog learned polymorphism*
The moose likes Game Development and the fly likes Connect-four Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Game Development
Bookmark "Connect-four" Watch "Connect-four" New topic
Author

Connect-four

Kabir Shah
Ranch Hand

Joined: Aug 04, 2009
Posts: 125


This is the solution for your test problem.
I was happy with the evals that it gave me.
it sees a win in more than one way.
but it returns 1 for square 6(0-8 notation) on first search, I cannot find how is this winning blocking straight at 2.
rest all solution is correct. at depth of 2, it return 0 for all squares on first move.
Also after this I played many games against online AI computer programs and it resulted either win or draw, but no loss.
Mich Robinson
Ranch Hand

Joined: Jun 28, 2009
Posts: 251
    
    1
So you're saying the code is correct now???

You make your debug hard to read because your positions go from 0-8 rather than the expected 1-9. The format of the output means it has to be formatted by hand to print it. Worst of all though you don't appear to be even looking at the debug output and attempting to understand what it means ie in the first example it played initially in the corner and these were the score returned for a 6 ply search for the 2nd move by the 2nd player.

# Player2
# Eval= -1 played at 1
# Eval= -1 played at 2
# Eval= -1 played at 3
# Eval= 0 played at 4
# Eval= 0 played at 5
# Eval= 0 played at 6
# Eval= 0 played at 7
# Eval= 0 played at 8

However all moves other than in the centre result in a loss within 6 ply ie 0,7,4,8,6,3,2 or perhaps 0,6,8,4,2,1,5 etc etc. Each of these wins is forced yet your program returns a draw.

Mike

012
345
678


Arcade : Alien Swarm
Board : Chess - Checkers - Connect 4 - Othello
Kabir Shah
Ranch Hand

Joined: Aug 04, 2009
Posts: 125
@Mich

I guess one small change that caused huge change in evals.
was using beta cutoff as
alpha>=beta
You make your debug hard to read because your positions go from 0-8 rather than the expected 1-9.


Well now you can see it from 1-9.
Worst of all though you don't appear to be even looking at the debug output and attempting to understand what it means ie in the first example it played initially in the corner and these were the score returned for a 6 ply search for the 2nd move by the 2nd player.

# Player2
# Eval= -1 played at 1
# Eval= -1 played at 2
# Eval= -1 played at 3
# Eval= 0 played at 4
# Eval= 0 played at 5
# Eval= 0 played at 6
# Eval= 0 played at 7
# Eval= 0 played at 8

However all moves other than in the centre result in a loss within 6 ply ie 0,7,4,8,6,3,2 or perhaps 0,6,8,4,2,1,5 etc etc. Each of these wins is forced yet your program returns a draw


This was due to the way I implemented beta cutoff . I referred the code atwww.hamedahmadi.com
I put there alpha>=beta(On site, it said that it will speed up the search a bit, so I thought the evals of -1 changed to 0 was part of the algorithm) Now I changed it to alpha>beta and its giving proper evaluations.

For your test case.



Here is the complete game set played at 6plys.



Board format:
123
456
789
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Connect-four