Ir a contenido

0

Tres en Raya


3 las respuestas a este tema

#1 Fegarur

    Vago

  • Moderador Power!
  • 2,331 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Guion

Publicado el 26 June 2007 - 06:23 AM

Descripción:
Permite jugar al minijuego Tres en Raya en el RPG Maker. Está pensado para jugarlo entre dos jugadores, no contra el ordenador.

Screen:
Spoiler

Script:
CODE

######################################
# Juego Tic-tac-toe hecho por sadho, traducido por TN-69 - 27 Julio 2006
# Version : 1.3
######################################

class Tictactoe

@@turn = "x"
@@font_name = "Arial"
@@font_size = 40

def initialize(menu_index = 0)
@menu_index = menu_index
end
######################
def main
@turnWindow = Turn_Window.new(@@turn)
@turnWindow.x = 450
@turnWindow.y = 370
setSquares
setMenu

Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end

Graphics.freeze
@command_window.dispose
@turnWindow.dispose

for x in 0..8
@sqr[x].dispose
end
end
######################
def update
@command_window.update
@turnWindow.update(@@turn)

for x in 0..8
@sqr[x].update
end

if @command_window.active
update_command
return
end
end

######################
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 0..8
$game_system.se_play($data_system.decision_se)
doAction(@command_window.index)
when 9
$game_system.se_play($data_system.decision_se)
$scene = Tictactoe.new
when 10
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
end
return
end
end
######################
def setMenu
s1 = "Arriba izquierda"
s2 = "Arriba medio"
s3 = "Arriba derecha"
s4 = "Centro izquierda"
s5 = "Centro medio"
s6 = "Centro derecha"
s7 = "Abajo izquierda"
s8 = "Abajo medio"
s9 = "Abajo derecha"
s10 = "Repetir"
s11 = "Salir"
@command_window = Window_Command.new(175, [s1, s2, s3, s4, s5, s6,s7,s8,s9,s10,s11])
@command_window.index = @menu_index
@command_window.x = 440
end
######################
def setSquares
@sqr = []
for x in 0..2
@sqr[x] = Square.new(@@font_name,@@font_size)
@sqr[x].x = (x+1)*100
@sqr[x].y = 50
end

for x in 3..5
@sqr[x] = Square.new(@@font_name,@@font_size)
@sqr[x].x = (x-2)*100
@sqr[x].y = 150
end

for x in 6..8
@sqr[x] = Square.new(@@font_name,@@font_size)
@sqr[x].x = (x-5)*100
@sqr[x].y = 250
end

end
######################
def doAction(squareId)
if (@sqr[squareId].getOwner == "none")
@sqr[squareId].setOwner(@@turn)
verifyScore
else
$game_system.se_play($data_system.buzzer_se)
end
end
######################
def verifyScore
gameIsFinish = false
#check all --
for x in 0..2
if (@sqr[x*3].getOwner == @@turn && @sqr[x*3+1].getOwner == @@turn && @sqr[x*3+2].getOwner == @@turn)
print "El "[email protected]@turn+" ha ganado!"
gameIsFinish = true
end
end

#check all |
for x in 0..2
if (@sqr[x].getOwner == @@turn && @sqr[x+3].getOwner == @@turn && @sqr[x+6].getOwner == @@turn)
print "El "[email protected]@turn+" ha ganado!"
gameIsFinish = true
end
end

#check \
if (@sqr[0].getOwner == @@turn && @sqr[4].getOwner == @@turn && @sqr[8].getOwner == @@turn)
print "El "[email protected]@turn+" ha ganado!"
gameIsFinish = true
end

#check /
if (@sqr[2].getOwner == @@turn && @sqr[4].getOwner == @@turn && @sqr[6].getOwner == @@turn)
print "El "[email protected]@turn+" ha ganado!"
gameIsFinish = true
end

if noMoreSpace && !gameIsFinish
print "¡Empate!"
$scene = Scene_Restart.new
end

if gameIsFinish
$scene = Scene_Restart.new
elsif (@@turn == "x")
@@turn = "o"
else @@turn = "x"
end
end
######################
def noMoreSpace
for x in 0..8
if (@sqr[x].getOwner == "none")
return false
end
end
return true
end
######################
end

#----------------------------------------------------------------------
#Squares
#----------------------------------------------------------------------
class Square < Window_Base

def initialize(fontName,fontSize)
@owner = "none"

super(0, 0, 100,100)
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name = fontName
self.contents.font.size = fontSize
refresh
end

def refresh
self.contents.clear
if (@owner == "x")
self.contents.font.color = text_color(2)
self.contents.draw_text(22, 15, 100, 32, "X")
elsif (@owner == "o")
self.contents.font.color = text_color(1)
self.contents.draw_text(22, 15, 100, 32, "O")
end
end

def update
refresh
end
#############
def setOwner(newOwner)
@owner = newOwner
end
#############
def getOwner
return @owner
end
#############
end

#----------------------------------------------------------------------
#Turn Window
#----------------------------------------------------------------------
class Turn_Window < Window_Base

def initialize(turn)
super(0, 0, 165,60)
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name = "Arial"
self.contents.font.size = 30
refresh(turn)
end

def refresh(turn)
self.contents.clear
if (turn == "x")
self.contents.font.color = text_color(2)
self.contents.draw_text(0,0,100,32,"Turno de: X")
elsif
self.contents.font.color = text_color(1)
self.contents.draw_text(0,0,100,32,"Turno de: O")
end
end

def update(turn)
refresh(turn)
end
end
#----------------------------------------------------------------------
#scene restart
#----------------------------------------------------------------------
class Scene_Restart

@@font_name = "Arial"
@@font_size = 40

def initialize(menu_index = 0)
@menu_index = menu_index
end
######################
def main
setMenu

Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end

Graphics.freeze
@command_window.dispose
end
######################
def update
@command_window.update

if @command_window.active
update_command
return
end
end
######################
def update_command
if Input.trigger?(Input::C)
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
$scene = Tictactoe.new
when 1
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
end
return
end
end
######################
def setMenu
s1 = "Repetir"
s2 = "Salir"
@command_window = Window_Command.new(180, [s1, s2])
@command_window.index = @menu_index
@command_window.x = 250
@command_window.y = 200
end
end


Instrucciones:
user posted image Para jugarlo, utiliza en llamar script:
QUOTE
$scene = Tictactoe.new


Crédito:
Script creado por Sadho.

Editado por Fegarur, 26 June 2007 - 06:25 AM.


#2 JosySasuke

    Heroe errante

  • voidzonero
  • 61 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Guion

Publicado el 14 July 2007 - 10:48 AM

Lo hiciste tú? Porque si lo hiciste o no, ¿puedes mejorarlo para que en vez de elegir algo como: "centro" "izquierda derecha" y eso, se pueda elegir directamente en los cuadros?
No sé, lo veo como una propuesta, hay gente que al jugar en los juegos que pones este script, se lían... xD

#3 Fegarur

    Vago

  • Moderador Power!
  • 2,331 Mensajes:
  • Genero:Chico
  • Nivel maker: Experto
  • Especialidad: Guion

Publicado el 14 July 2007 - 11:02 AM

No, como he puesto en el apartado Crédito, el script lo hizo Sadho.
Hombre, yo creo que es sencillo entenderlo (es un simple 3 en raya xD.png) pero en fin... reconozco que es más intuitivo seleccionar directamente en el tablero.

PD: Tampoco sabría cambiarlo... ni se cómo contactar con el autor por si ha hecho actualizaciones o podría hacer esto. Tenía el script guardado y el otro día lo vi. xD.png

#4 JosySasuke

    Heroe errante

  • voidzonero
  • 61 Mensajes:
  • Genero:Chico
  • Nivel maker: Crack
  • Especialidad: Guion

Publicado el 14 July 2007 - 11:06 AM

Ok, respecto a lo de la firma, ahora la cambio, la llevo puesta desde 2006, tengo nuevas firmas xD