[HN Gopher] Play against the computer - Connect Four game in Jav...
       ___________________________________________________________________
        
       Play against the computer - Connect Four game in JavaScript
        
       Author : pebcakID10T
       Score  : 14 points
       Date   : 2022-10-20 22:57 UTC (1 days ago)
        
 (HTM) web link (flydaddy.net)
 (TXT) w3m dump (flydaddy.net)
        
       | gus_massa wrote:
       | It would be nice to be able to click in any square in the board,
       | instead of just the ones in the bottom.
        
         | pebcakID10T wrote:
         | Good idea. Done.
        
           | TedDoesntTalk wrote:
           | I've thought about winning algorithms for this game before.
           | The best I could come up with is roughly "get the highest
           | locations you can while still defending against 3-in-a-row".
        
             | pebcakID10T wrote:
             | The computer AI code is in this file:
             | http://flydaddy.net/games/connect-
             | four/js/computerOpponent.j...
             | 
             | Basically when it's the computer's turn it evaluates every
             | possible move and assigns an attack and defense value for
             | each move. The attack value is based on how many in a row
             | and whether it can win on next turn, and the defense value
             | is how many opponent's chips in a row and whether it will
             | lose on opponent's turn. And if 2 or more moves are equal,
             | favor the move closest to the center of the board.
        
       | pebcakID10T wrote:
       | Just a fun little project I did. It's beatable, but not easy.
        
         | POiNTx wrote:
         | How good is the AI and how was it made?
        
           | pebcakID10T wrote:
           | The computer AI code is in this file:
           | http://flydaddy.net/games/connect-
           | four/js/computerOpponent.j...
           | 
           | Basically when it's the computer's turn it evaluates every
           | possible move and assigns an attack and defense value for
           | each move. The attack value is based on how many in a row and
           | whether it can win on next turn, and the defense value is how
           | many opponent's chips in a row and whether it will lose on
           | opponent's turn. And if 2 or more moves are equal, favor the
           | move closest to the center of the board.
           | 
           | It's fairly difficult, but not perfect, and you can win as
           | the second player.
        
             | [deleted]
        
         | duderific wrote:
         | It seems like going first is a disadvantage, since the AI can
         | just play defensively until you are backed into a corner.
        
           | drewnoakes wrote:
           | I've found that the only way to win is to go first, just like
           | in tic tac toe. Going second can produce a draw at best,
           | against an optimal opponent. This is just my experience
           | though, not a strong assertion.
        
             | pebcakID10T wrote:
             | With perfect play the first player will always win. My AI
             | is not perfect and you can win as the second player.
        
           | POiNTx wrote:
           | I think first is an advantage since the opposite side has to
           | react to your moves, a bit like chess.
           | 
           | A strategy that works for me is building a tower. In that
           | tower try to construct 2 rows of 3 length, can be one
           | horizontal and one diagonal but doesn't have to be, that when
           | you go to one side of the tower, it would give you 4 in a row
           | _2 times_ right after another circle is placed on top of the
           | first one. While doing this also making sure the opponent isn
           | 't doing the same below your rows.
           | 
           | Doing this makes it impossible for the other to defend as
           | when you're building on the side of the tower, it gives the
           | opponent 2 options:
           | 
           | - Defending the first row and placing a circle, allowing you
           | to place another on that circle and making the second 4 in a
           | row.
           | 
           | - Or not defending and you can obviously finish your first in
           | a row.
           | 
           | Following this strategy I was able to win both as player 1
           | and 2.
        
             | jbluepolarbear wrote:
             | The fastest I could beat this AI was going first and
             | playing 7,4,4,3,6,7,5. The computer always plays the same
             | moves and has to block a connect, but gives up a connect.
        
       | isquaredr wrote:
       | Thanks for sharing! This sent me down the solvability path. It
       | would be cool to have an 'expert' mode that plays the optimal
       | strategy.
        
       | Pxtl wrote:
       | Ran into bug - AI beat me by creating a diagonal with the piece
       | in the top rank and it did not count that as endgame. I was able
       | to keep playing.
        
         | pebcakID10T wrote:
         | Yes, I need a bug report button.
        
       | i13e wrote:
       | ICYI Connect Four is a solved game, you can read about it here:
       | https://en.wikipedia.org/wiki/Connect_Four#Mathematical_solu...
        
         | pebcakID10T wrote:
         | Yes, I may do a minimax version with a difficulty setting. That
         | would be fun to do.
        
       ___________________________________________________________________
       (page generated 2022-10-21 23:00 UTC)