Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 tic tac toe AI
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
alnamy




PostPosted: 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
Sponsor
Sponsor
Sponsor
sponsor
Tony




PostPosted: 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
Latest from compsci.ca/blog: Tony's programming blog. DWITE - a programming contest.
alnamy




PostPosted: Sun Jun 06, 2004 8:29 pm   Post subject: please help

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:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 3 Posts ]
Jump to:   


Style:  
Search: