----------------------------------- Cinjection Wed Jun 22, 2005 5:59 pm Tic-Tac-Toe A.I. WalkThrough. ----------------------------------- Warning: If you do not have some exeriance in Visual Basic programming, please don't bother, you'll get too confused. You must know multidimentional arrays and looping. Intorduction: OK so you're making a tic-tac-toe game for yourself. Wonder how to make the player think instead of randomly moving. I will show you how to code a A.I. effectivly. The A.I. : First, we need to delcare a multidimentional array called grid that will track the values of the X and O's. We do this with this code: Dim grid(1 To 3, 1 To 3) As Integer They way this works is, the first array represents the vertical position, while the second represents the horizontal position; It looks like this: 1,1|1,2|1,3 2,1|2,2|2,3 3,1|3,2|3,3 Now when the player does we will assign a value of 2 to the correct grid position. So if, lets say the player goes in the middle, the code would be: grid(2,2) = 2 And for the computer, we will assign a value of 5 so it would be: grid(2,2) = 5 Now for the A.I.. First, we will see if the computer can win, because winning should take priority over blocking. So we will check for a value of 10(5+5) over all the possible 2 possitions. We can do this using two for loop. i and j. We can the use them like this: AIsum = grid(2, i) + grid(3, i) That would see if you could win in the following ways . . . | . . | . . and . . . . | . . | . and . . . . . | . . | You would redo this for all the block and win oppertunities by changing the i value in different places. For some of them, namely the diagonals, you can't use this method and will have to type it out. It will check using a varaible called sumn. For a value of either 10 or 4(4 is needed for a block)(2+2). The difference between the two is the j loop. It works like this: If (j = 1) Then sumn = 4 Else sumn = 10 End If The loop will occur twice. Once to check for a block and one two check for a win. Also you could use this to check for both a computer and player win. Just check for a value of 15 or 6. Conclusion: Well, I hope you learned somthing. A.I.'s are the funnest thing to code, in my opinion, so enjoy. If you want bit++ me other wise tell me what you thought of this tut. Also, if you want to see a working copy, you can download the one i coded [URL=http://www.free30.com/programminganonymous/SPSTicTacToe.zip]here. ----------------------------------- diqua Sat Oct 01, 2005 2:37 pm ----------------------------------- its interesting to see how the math really works in many AI instances Thanks for the superb tutorial ----------------------------------- Tony Tue Oct 04, 2005 8:29 am ----------------------------------- it's an alright start, though the tutorial is vague. Not much actual code or in-depth explanation. win if can't then block if can't then move randomly That's pretty much it. ----------------------------------- wtd Fri Oct 14, 2005 1:59 pm ----------------------------------- Add a step to that. Randomly have the AI choose randomly even when it could move for a win or to block. ----------------------------------- RandomLetters Fri Jun 11, 2010 5:15 pm Re: Tic-Tac-Toe A.I. WalkThrough. ----------------------------------- Also remember to block forks ----------------------------------- A.J Fri Jun 11, 2010 7:13 pm RE:Tic-Tac-Toe A.I. WalkThrough. ----------------------------------- "...and please make sure not to post on threads that date back to over a month or so ago (unless they are popular threads that are constantly replied to, of course" Not cool... ----------------------------------- USEC_OFFICER Fri Jun 11, 2010 8:08 pm RE:Tic-Tac-Toe A.I. WalkThrough. ----------------------------------- Or a sticky of course! ----------------------------------- A.J Fri Jun 11, 2010 10:10 pm RE:Tic-Tac-Toe A.I. WalkThrough. ----------------------------------- You aren't helping USEC_OFFICER...well, frankly neither am I with this post. Well whatever, I guess this isn't as bad as what people usually do, and you are merely adding to the walkthrough, so I am sorry if I overreacted, RandomLetters. ----------------------------------- RandomLetters Fri Jun 11, 2010 10:17 pm Re: Tic-Tac-Toe A.I. WalkThrough. ----------------------------------- Sorry, I did not realize a thread on the front page would have been so old.