class Apokochito::Tictactoe::Tablero

Basic file

Public Instance Methods

clave() click to toggle source

Las posibles soluciones de victoria

# File lib/apokochito/tictactoe.rb, line 44
def clave
  [[@uno,@dos,@tres],[@cuatro,@cinco,@seis],[@siete,@ocho,@nueve],[@uno,@cinco,@nueve],[@uno,@cuatro,@siete],[@dos,@cinco,@ocho],[@tres,@seis,@nueve],[@tres,@cinco,@siete]]
end
computadora() click to toggle source

Declarar los tiros disponibles a la computadora

# File lib/apokochito/tictactoe.rb, line 24
def computadora
  pc = [@uno,@dos,@tres,@cuatro,@cinco,@seis,@siete,@ocho,@nueve]
end
enemigo() click to toggle source

Tiro del usuario computadora O

# File lib/apokochito/tictactoe.rb, line 99
def enemigo
  computadora.shuffle.each do |pc|
      posibletiro(pc)
      pc.gsub!(" ","O")
      break
  end
end
ganador() click to toggle source

condiciones de victoria, empate y perdida

# File lib/apokochito/tictactoe.rb, line 108
def ganador
  clave.each do |soluc|
    soluc.each do |index|
      if soluc[0] == "O" && soluc[1] == "O" && soluc[2] == "O" then
        puts "~~~~~~~¡Has perdido, quizá la próxima!~~~~~~~"
        puts "Quieres jugar de nuevo? <<(y/n)>>"
        resp = gets.chomp
        if resp == "y" or resp == "Y" then
          nuevo
        elsif resp == "n" or resp == "N" then
          exit 100
        end
      elsif soluc[0] == "X" && soluc[1] == "X" && soluc[2] == "X" then
        puts "~~~~~~~¡¡Has ganado!!~~~~~~~"
        puts "Quieres jugar de nuevo? <<(y/n)>>"
        resp = gets.chomp
        if resp == "y" or resp == "Y" then
          nuevo
        elsif resp == "n" or resp == "N" then
          exit 100
        end
      elsif @cont==5 && soluc[0] == "O" && soluc[1] == "O" && soluc[2] == "O" then
        puts "~~~~~~~¡Has perdido, quizá la próxima!~~~~~~~"
        puts "Quieres jugar de nuevo? <<(y/n)>>"
        resp = gets.chomp
        if resp == "y" or resp == "Y" then
          nuevo
        elsif resp == "n" or resp == "N" then
          exit 100
        end
      elsif @cont==5 then
        puts "Empate!"
        puts "Quieres jugar de nuevo? <<(y/n)>>"
        resp = gets.chomp
        if resp == "y" or resp == "Y" then
          nuevo
        elsif resp == "n" or resp == "N" then
          exit 100
        end
      end
    end
  end
end
instrucciones() click to toggle source

Instrucciones al usuario del juego

# File lib/apokochito/tictactoe.rb, line 49
def instrucciones
puts "¡Bienvenido a Tres en Raya, comenzamos!"
puts "↓ Tablero base ↓"
puts "  *************\n"
puts   "  * 1 | 2 | 3 *",
       "  * --------- *",
       "  * 4 | 5 | 6 *",
       "  * --------- *",
       "  * 7 | 8 | 9 *"
  puts "  *************\n"
end
juego() click to toggle source

Estructura y orden del juego

# File lib/apokochito/tictactoe.rb, line 158
def juego
@cont=0
instrucciones
tabvacio
  while true do
    @cont+=1
    jugador
    if @cont==5 then
      ganador
    end
    enemigo
    tabjugador
    if @cont>=3 then
      ganador
    end
  end
end
jugador() click to toggle source

Tiro del usuario X

# File lib/apokochito/tictactoe.rb, line 81
def jugador
  puts "Escoge una casilla (1-9)"
  casilla = gets.chomp
  valid=/\d/.match(casilla)
  if valid != nil then
    tiros.each do |num,var|
      if casilla == num then
        #Regreso el tiro en str
        var.sub!(" ", "X")
      end
    end
  else
      puts "<< Ingresa un dígito válido entre 1-9 >>"
      jugador
  end
end
nuevo() click to toggle source

Iniciar una nueva partida

# File lib/apokochito/tictactoe.rb, line 153
def nuevo
juego
end
posibletiro(tiro) click to toggle source

Comprobacion de que el tiro esta disponible

# File lib/apokochito/tictactoe.rb, line 72
def posibletiro(tiro)
  if tiro == " " then
    true
  else
    enemigo
  end
end
tabjugador() click to toggle source

Tablero dinamico donde los valores cambian depende los tiros del usuario y la computadora

# File lib/apokochito/tictactoe.rb, line 62
def tabjugador
puts "    #{@uno} | #{@dos} | #{@tres}"
puts "   ---|---|---"
puts "    #{@cuatro} | #{@cinco} | #{@seis}"
puts "   ---|---|---"
puts "    #{@siete} | #{@ocho} | #{@nueve}"
puts "  *************\n"
end
tabvacio() click to toggle source

Declarar a las todas las casillas vacias

# File lib/apokochito/tictactoe.rb, line 11
def tabvacio
  @uno = " "
  @dos = " "
  @tres = " "
  @cuatro = " "
  @cinco = " "
  @seis = " "
  @siete = " "
  @ocho = " "
  @nueve = " "
end
tiros() click to toggle source

Declarar cada casilla en blanco con su identificador

# File lib/apokochito/tictactoe.rb, line 29
def tiros
  @casillas = {
      "1" => @uno,
      "2" => @dos,
      "3" => @tres,
      "4" => @cuatro,
      "5" => @cinco,
      "6" => @seis,
      "7" => @siete,
      "8" => @ocho,
      "9" => @nueve
  }
end