Computer Science Canada Programming C, C++, Java, PHP, Ruby, Turing, VB   Username:   Password: Wiki   Blog   Search   Turing   Chat Room  Members
tic tac toe AI
Author Message
alnamy

Posted: Sun Jun 06, 2004 5:16 pm   Post subject: tic tac toe AI

hey i am currently taking grade 10 science and i am having a lot of difficulties making a 1 person tic tac toe game (against computer). I have completed a 1v1 (two players) tic tac toe game . but i am stuck on where to start a 1 person tic tac toe game. Could someone kindly show me the programming logic or if possible, show me the source code? Thank you very much

Tony

Posted: Sun Jun 06, 2004 7:02 pm   Post subject: (No subject)

basics of AI

doesn't cover tic-tac-toe really, but might be of use anyways...

as for AI... there're 3 possible moves

defend - block player's 2 in a row to prevent lose

attack - if no need for defend, form 2 in a row of own

random - if no place to attack ether, just place your sign randomly
Tony's programming blog. DWITE - a programming contest.
alnamy

Here's what I have now. I understand the logic now but i am not sure how to modify it for the comp

% By BTSP
% The Tic Tac Toe Game

%Sets the screen size
setscreen ("graphics:400;400")

%Makes the background
drawfillbox (0, 0, maxx, maxy, black)

%Draws the large box
drawbox (5, 5, maxx - 5, maxy - 5, yellow)

%Draws the smaller boxes
drawline (maxx div 3, maxy - 5, maxx div 3, 5, yellow)
drawline (maxx div 1.5, maxy - 5, maxx div 1.5, 5, yellow)
drawline (maxx - 5, maxy div 3, 5, maxy div 3, yellow)
drawline (maxx - 5, maxy div 1.5, 5, maxy div 1.5, yellow)

var x, y, button : int
var squares : array 1 .. 9 of int
var playerturn : int := 1
var deemah : int :=0

for a : 1 .. 9
squares (a) := a+2
end for

var players : array 1 .. 2 of string
players (1) := "Judy"
players (2) := "Alice"

loop

mousewhere (x, y, button)
if x >= 5 and x <= maxx div 3 and y >= maxy div 1.5 and y <= maxy - 5 and button = 1 and squares (1) = 3 then
% First square
drawfilloval (maxx div 6, maxy div 1.2, 30, 30, yellow)
drawfilloval (maxx div 6, maxy div 1.2, 20, 20, playerturn)
if playerturn = 1 then
squares (1) := 1
playerturn := 2
elsif playerturn = 2 then
squares (1) := 2
playerturn := 1
end if
elsif x > maxx div 3 and x <= maxx div 1.5 and y >= maxy div 1.5 and y <= maxy - 5 and button = 1 and squares (2) = 4 then
% Second Square
drawfilloval (maxx div 2, maxy div 1.2, 30, 30, yellow)
drawfilloval (maxx div 2, maxy div 1.2, 20, 20, playerturn)
if playerturn = 1 then
squares (2) := 1
playerturn := 2
elsif playerturn = 2 then
squares (2) := 2
playerturn := 1
end if
elsif x > maxx div 1.5 and x <= maxx - 5 and y >= maxy div 1.5 and y <= maxy - 5 and button = 1 and squares (3) = 5 then
% Third Square
drawfilloval (maxx div 1.2, maxy div 1.2, 30, 30, yellow)
drawfilloval (maxx div 1.2, maxy div 1.2, 20, 20, playerturn)
if playerturn = 1 then
squares (3) := 1
playerturn := 2
elsif playerturn = 2 then
squares (3) := 2
playerturn := 1
end if
elsif x >= 5 and x <= maxx div 3 and y >= maxy div 3 and y <= maxy div 1.5 and button = 1 and squares (4) = 6 then
% Fourth Square
drawfilloval (maxx div 6, maxy div 2, 30, 30, yellow)
drawfilloval (maxx div 6, maxy div 2, 20, 20, playerturn)
if playerturn = 1 then
squares (4) := 1
playerturn := 2
elsif playerturn = 2 then
squares (4) := 2
playerturn := 1
end if
elsif x > maxx div 3 and x <= maxx div 1.5 and y >= maxy div 3 and y <= maxy div 1.5 and button = 1 and squares (5) = 7 then
% Fifth Square
drawfilloval (maxx div 2, maxy div 2, 30, 30, yellow)
drawfilloval (maxx div 2, maxy div 2, 20, 20, playerturn)
if playerturn = 1 then
squares (5) := 1
playerturn := 2
elsif playerturn = 2 then
squares (5) := 2
playerturn := 1
end if
elsif x > maxx div 1.5 and x <= maxx - 5 and y >= maxy div 3 and y <= maxy div 1.5 and button = 1 and squares (6) = 8 then
% Sixth Square
drawfilloval (maxx div 1.2, maxy div 2, 30, 30, yellow)
drawfilloval (maxx div 1.2, maxy div 2, 20, 20, playerturn)
if playerturn = 1 then
squares (6) := 1
playerturn := 2
elsif playerturn = 2 then
squares (6) := 2
playerturn := 1
end if
elsif x >= 5 and x <= maxx div 3 and y > 5 and y <= maxy div 3 and button = 1 and squares (7) = 9 then
% Seventh Square
drawfilloval (maxx div 6, maxy div 6, 30, 30, yellow)
drawfilloval (maxx div 6, maxy div 6, 20, 20, playerturn)
if playerturn = 1 then
squares (7) := 1
playerturn := 2
elsif playerturn = 2 then
squares (7) := 2
playerturn := 1
end if
elsif x > maxx div 3 and x <= maxx div 1.5 and y > 5 and y <= maxy div 3 and button = 1 and squares (8) = 10 then
% Eighth Square
drawfilloval (maxx div 2, maxy div 6, 30, 30, yellow)
drawfilloval (maxx div 2, maxy div 6, 20, 20, playerturn)
if playerturn = 1 then
squares (8) := 1
playerturn := 2
elsif playerturn = 2 then
squares (8) := 2
playerturn := 1
end if
elsif x > maxx div 1.5 and x <= maxx - 5 and y > 5 and y <= maxy div 3 and button = 1 and squares (9) = 11 then
% Ninth Square
drawfilloval (maxx div 1.2, maxy div 6, 30, 30, yellow)
drawfilloval (maxx div 1.2, maxy div 6, 20, 20, playerturn)
if playerturn = 1 then
squares (9) := 1
playerturn := 2
elsif playerturn = 2 then
squares (9) := 2
playerturn := 1
end if
end if

if squares (1) = squares (2) and squares (2) = squares (3) then
deemah := squares (1)
exit
elsif squares (1) = squares (4) and squares (4) = squares (7) then
deemah := squares (1)
exit
elsif squares (3) = squares (6) and squares (6) = squares (9) then
deemah := squares (3)
exit
elsif squares (7) = squares (8) and squares (8) = squares (9) then
deemah := squares (7)
exit
elsif squares (2) = squares (5) and squares (5) = squares (8) then
deemah := squares (2)
exit
elsif squares (4) = squares (5) and squares (5) = squares (6) then
deemah := squares (4)
exit
elsif squares (1) = squares (5) and squares (5) = squares (9) then
deemah := squares (1)
exit
elsif squares (3) = squares (5) and squares (5) = squares (7) then
deemah := squares (3)
exit
end if

delay (50)
exit when squares (1) not= 3 and squares (2) not= 4 and squares (3) not= 5 and squares (4) not= 6 and squares (5) not= 7 and squares (6) not= 8 and squares (7) not= 9 and squares (8) not= 10 and
squares (9) not= 11
end loop
 Display posts from previous: All Posts1 Day7 Days2 Weeks1 Month3 Months6 Months1 Year Oldest FirstNewest First

Page 1 of 1  [ 3 Posts ]
 Jump to:  Select a forum  CompSci.ca ------------ - Network News - General Discussion     General Forums   -----------------   - Hello World   - Featured Poll   - Contests     Contest Forums   -----------------   - DWITE   - [FP] Contest 2006/2008   - [FP] 2005/2006 Archive   - [FP] 2004/2005 Archive   - Off Topic     Lounges   ---------   - User Lounge   - VIP Lounge     Programming -------------- - General Programming     General Programming Forums   --------------------------------   - Functional Programming   - Logical Programming   - C     C   --   - C Help   - C Tutorials   - C Submissions   - C++     C++   ----   - C++ Help   - C++ Tutorials   - C++ Submissions   - Java     Java   -----   - Java Help   - Java Tutorials   - Java Submissions   - Ruby     Ruby   -----   - Ruby Help   - Ruby Tutorials   - Ruby Submissions   - Turing     Turing   --------   - Turing Help   - Turing Tutorials   - Turing Submissions   - PHP     PHP   ----   - PHP Help   - PHP Tutorials   - PHP Submissions   - Python     Python   --------   - Python Help   - Python Tutorials   - Python Submissions   - Visual Basic and Other Basics     VB   ---   - Visual Basic Help   - Visual Basic Tutorials   - Visual Basic Submissions     Education ----------- - Student Life   Graphics and Design ----------------------- - Web Design     Web Design Forums   ---------------------   - (X)HTML Help   - (X)HTML Tutorials   - Flash MX Help   - Flash MX Tutorials   - Graphics     Graphics Forums   ------------------   - Photoshop Tutorials   - The Showroom   - 2D Graphics   - 3D Graphics     Teams ------ - dTeam Public

 Style: Appalachia blueSilver eMJay subAppalachia subBlue subCanvas subEmjay subGrey subSilver subVereor Search: