Spoiler(Clique para mostrar/esconder)
################################################################################
##### M I N I - G A M E ########################################################
########## v1.0.0 ##############################################################
############################### # O # X ######################################
############################### ######### ######################################
########## By: LB ############# # O # X ######################################
############################### ######### ######################################
############################### O # # X ######################################
################################################################################
class Velha_Game < Scene_Base
def initialize(var)
@var = var
end
def start
super
create_menu_background
end
def post_start
l = 544
v = 4
for i in 0...(544-416)/v
l -= v
Graphics.resize_screen(l,416)
end
@pos = [
[1,2,3],
[4,5,6],
[7,8,9],
[1,4,7],
[2,5,8],
[3,6,9],
[1,5,9],
[3,5,7]]
@pos2 = [
[1,5,9,3,7],
[9,5,1,7,3],
[3,5,7,1,9],
[7,5,3,9,1],
[1,9,5,4,8],
[3,7,5,6,2]]
@pos3 = [
1,
3,
9,
7]
@jogou = []
@jogada = 0
@w = Window_Velha.new
end
def update
super
update_menu_background
@w.update
if Input.trigger?(Input::C) and @jogou[@w.index] == nil
@jogada += 1
@w.draw("O")
@jogou[@w.index] = 1
t = 0
for i in 0...9
t += 1 if @jogou[i] != nil
end
if t != 9
h = @w.index
ia
@w.draw("X")
@jogou[@w.index] = 0
@w.index = h
end
end
for i in 0...2
@v = i
if f(1,2,3) or f(4,5,6) or f(7,8,9) or
f(1,4,7) or f(2,5,8) or f(3,6,9) or
f(1,5,9) or f(3,5,7)
$game_variables[@var] = (@v == 0 ? 2 : 1)
$scene = Scene_Map.new
end
end
t = 0
for i in 0...9
t += 1 if @jogou[i] != nil
end
if t == 9
$game_variables[@var] = 3
$scene = Scene_Map.new
end
end
def ia
for t in 0...2
@v = t
for i in 0...@pos.size
a = @pos[i][0]
b = @pos[i][1]
c = @pos[i][2]
if (j(a) and j(b) and !j(c))
next if @jogou[c-1] != nil
@w.index = c-1
return
elsif (j(a) and !j(b) and j(c))
next if @jogou[b-1] != nil
@w.index = b-1
return
elsif (!j(a) and j(b) and j(c))
next if @jogou[a-1] != nil
@w.index = a-1
return
end
end
end
if s != false
@w.index = s-1
return
end
@v = 1
@w.index = 3
if @jogada == 1
for i in 0...4
@w.index = 4 if j(@pos3[i])
end
end
@v = 0
return if @w.index == 4
loop do
@w.index = rand(9)
next if @jogada == 1 and (@w.index == 1 or @w.index == 3 or @w.index == 5 or @w.index == 7)
return if @jogou[@w.index] == nil
end
end
def s
for i in 0...6
@v = 1
a = j(@pos2[i][0]) and j(@pos2[i][1])
@v = 0
for h in 0...2
r = @pos2[i][3+h] if a and j(@pos2[i][2]) and @jogou[@pos2[i][3+h]] == nil
end
end
return (r == nil ? false : r)
end
def f(a,b,c)
return (j(a) and j(b) and j(c))
end
def j(i)
return @jogou[i-1] == @v
end
def terminate
super
Graphics.freeze
@w.dispose
perform_transition
l = 416
v = 4
for i in 0...(544-416)/v
l += v
Graphics.resize_screen(l,416)
end
dispose_menu_background
end
end
class Window_Velha < Window_Selectable
def initialize
super(0, 0, 416, 416, 32)
@item_max = 9
@column_max = 3
self.index = 0
self.contents.font.size = 50
end
def draw(symbol)
a = (416-32)/3
x = define_x(a)
y = define_y(a)
self.contents.draw_text(x,y+((a-50)/2),a,50,symbol.to_s,1)
end
def define_x(a)
case @index
when 0,3,6
x = a*0
when 1,4,7
x = a*1
when 2,5,8
x = a*2
end
return x
end
def define_y(a)
case @index
when 0,1,2
y = a*0
when 3,4,5
y = a*1
when 6,7,8
y = a*2
end
return y
end
def update_cursor
if @index < 0
self.cursor_rect.empty
else
a = (416-32)/3
x = define_x(a)
y = define_y(a)
self.cursor_rect.set(x, y, a, a)
end
end
end