🧠 Connect 4 AI
LucHutton (193)

Just a simple but fast connect four AI made using HTML, CSS, JS.

How To Play:
The aim of the game is to get four of your counters (red) in row, this can be diagonally, horizontally or vertically. Each move click on one of the seven columns to drop your counter into that column.

How It Works:
1) Each potential place the AI can place a counter is scored based on the amount of counters around that place and the length of the segments around it also.
2) The move above is also checked to make sure that by moving to that position that the AI doesn't cause the player to win, or for the AI to sacrifice a potentially good move, if this is true then the score of that move becomes 0.
3) If there is one distinct highest score, that one is chosen, else the AI just picks a random move from the highest scoring moves.


PLAY HERE: https://Connect-4-AI--luchutton.repl.co

You are viewing a single comment. View All
spagmeat (1)

Also found an edge case where there is a very obvious placement for the AI, but it goes in the wrong spot. Maybe something to investigate:

LucHutton (193)

@spagmeat I've fixed the issue, apparently the last move it took was so much "better" than where it should go, that it went there. The problem was that it raised the length of the segments it found to the power of five, which in this case added to bigger than 100 / 101 which indicated in order a red win or a blue win. It was probably a bad idea to do set numbers to indicate a winning move.

LucHutton (193)

@spagmeat Also your method of winning every time has been fixed.

spagmeat (1)

@LucHutton Bummer! I'll have to find another during my break today. ;)

spagmeat (1)

@LucHutton - I had a break. :)
What's particularly interesting about this one is that I couldn't get the same results when I shift the whole thing by one to the right or when I try to mirror it. I'll take a look at the code later if I have time to try to see whats up. :)

LucHutton (193)

@spagmeat Turns out I missed something from the previous bug, the new method no longer works. :)