--TicTacToe PSP
--Field mode: 0 = neutral, 1 = Owned by Player 1, 2 = Owned by Player 2
field_1={x=140, y=35, mode=0}
field_1_mode = 0
field_2={x=215, y=35, mode=0}
field_2_mode = 0
field_3={x=295, y=35, mode=0}
field_3_mode = 0
field_4={x=140, y=110, mode=0}
field_4_mode = 0
field_5={x=215, y=110, mode=0}
field_5_mode = 0
field_6={x=295, y=110, mode=0}
field_6_mode = 0
field_7={x=140, y=190, mode=0}
field_7_mode = 0
field_8={x=215, y=190, mode=0}
field_8_mode = 0
field_9={x=295, y=190, mode=0}
field_9_mode = 0
black = Color.new(0,0,0)
white = Color.new(255,255,255)
current_field_value = 1
current_field = field_1
current_field_mode = field_1_mode
current_field_x = field_1.x
current_field_y = field_1.y
current_player = 1
field = Image.load("field.png")
cross = Image.load("cross.png")
circle = Image.load("circle.png")
marked = Image.load("marked.png")
player_1_won = Image.load("player_1_won.png")
player_2_won = Image.load("player_2_won.png")
while true do
pad = Controls.read()
if pad:right() and current_field_value < 9 then
current_field_value = current_field_value + 1
System.sleep(400)
end
if pad:left() and current_field_value > 1 then
current_field_value = current_field_value - 1
System.sleep(400)
end
if pad:down() and current_field_value < 7 then
current_field_value = current_field_value + 3
System.sleep(400)
end
if pad:up() and current_field_value > 3 then
current_field_value = current_field_value - 3
System.sleep(400)
end
if current_field_value == 1 then
current_field = field_1
current_field_x = field_1.x
current_field_y = field_1.y
current_field_mode = field_1_mode
end
if current_field_value == 2 then
current_field = field_2
current_field_x = field_2.x
current_field_y = field_2.y
current_field_mode = field_2_mode
end
if current_field_value == 3 then
current_field = field_3
current_field_x = field_3.x
current_field_y = field_3.y
current_field_mode = field_3_mode
end
if current_field_value == 4 then
current_field = field_4
current_field_x = field_4.x
current_field_y = field_4.y
current_field_mode = field_4_mode
end
if current_field_value == 5 then
current_field = field_5
current_field_x = field_5.x
current_field_y = field_5.y
current_field_mode = field_5_mode
end
if current_field_value == 6 then
current_field = field_6
current_field_x = field_6.x
current_field_y = field_6.y
current_field_mode = field_6_mode
end
if current_field_value == 7 then
current_field = field_7
current_field_x = field_7.x
current_field_y = field_7.y
current_field_mode = field_7_mode
end
if current_field_value == 8 then
current_field = field_8
current_field_x = field_8.x
current_field_y = field_8.y
current_field_mode = field_8_mode
end
if current_field_value == 9 then
current_field = field_9
current_field_x = field_9.x
current_field_y = field_9.y
current_field_mode = field_9_mode
end
screen:blit(0,0,field,true)
screen:print(15,11,"Player "..current_player,black)
if current_field_mode == 0 then
screen:blit(current_field_x,current_field_y,marked,true )
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current_player == 1 then
screen:blit(current_field_x,current_field_y,cross,true)
current_field_mode = current_field_mode + 1
current_player = current_player + 1
screen.flip()
end
if pad:cross() and oldpad:cross() ~= pad:cross() and current_player == 2 then
screen:blit(current_field_x,current_field_y,circle,true )
current_field_mode = current_field_mode + 2
current_player = current_player - 1
screen.flip()
end
--Case 1: Player 1 won the game
if field_1.mode == 1 and field_2.mode == 1 and field_3.mode == 1 then
screen:clear(white)
screen:blit(0,0,player_1_won,true)
System.sleep(5000)
System.exit()
end
if field_4.mode == 1 and field_5.mode == 1 and field_6.mode == 1 then
screen:clear(white)
screen:blit(0,0,player_1_won,true)
System.sleep(5000)
System.exit()
end
if field_7.mode == 1 and field_8.mode == 1 and field_9.mode == 1 then
screen:clear(white)
screen:blit(0,0,player_1_won,true)
System.sleep(5000)
System.exit()
end
if field_1.mode == 1 and field_5.mode == 1 and field_9.mode == 1 then
screen:clear(white)
screen:blit(0,0,player_1_won,true)
System.sleep(5000)
System.exit()
end
if field_7.mode == 1 and field_5.mode == 1 and field_3.mode == 1 then
screen:clear(white)
screen:blit(0,0,player_1_won,true)
System.sleep(5000)
System.exit()
end
if field_2.mode == 1 and field_5.mode == 1 and field_8.mode == 1 then
screen:clear(white)
screen:blit(0,0,player_1_won,true)
System.sleep(5000)
System.exit()
end
--Case 2: Player 2 won the game
if field_1.mode == 2 and field_2.mode == 1 and field_3.mode == 2 then
screen:clear(white)
screen:blit(0,0,player_2_won,true)
System.sleep(5000)
System.exit()
end
if field_4.mode == 2 and field_5.mode == 1 and field_6.mode == 2 then
screen:clear(white)
screen:blit(0,0,player_2_won,true)
System.sleep(5000)
System.exit()
end
if field_7.mode == 2 and field_8.mode == 2 and field_9.mode == 2 then
screen:clear(white)
screen:blit(0,0,player_2_won,true)
System.sleep(5000)
System.exit()
end
if field_1.mode == 2 and field_5.mode == 2 and field_9.mode == 2 then
screen:clear(white)
screen:blit(0,0,player_2_won,true)
System.sleep(5000)
System.exit()
end
if field_7.mode == 2 and field_5.mode == 2 and field_3.mode == 2 then
screen:clear(white)
screen:blit(0,0,player_2_won,true)
System.sleep(5000)
System.exit()
end
if field_2.mode == 2 and field_5.mode == 2 and field_8.mode == 2 then
screen:clear(white)
screen:blit(0,0,player_2_won,true)
System.sleep(5000)
System.exit()
end
screen.waitVblankStart()
screen.flip()
oldpad = pad
end