class Ticktacktoe
Public Instance Methods
jugar(tamaño, tab)
click to toggle source
# File lib/ticktacktoe.rb, line 50 def jugar (tamaño, tab) fin = 0 mov = 0 turno = "O" while fin != "2" if turno == "O" turno = "X" else turno = "O" end r = "" c = "" loop do muestraTab(tamaño, tab) puts "Jugador " + turno puts "Renglon:" r = gets.chomp if r.to_i == 0 || r.to_i > tamaño puts "Posicion no valida" gets.chomp else puts "Columna:" c = gets.chomp if c.to_i == 0 || c.to_i > tamaño puts "Posicion no valida" gets.chomp else break if tab[(r.to_i - 1)][(c.to_i - 1)] == " " puts "Lugar ya ocupado" gets.chomp muestraTab(tamaño, tab) puts "Se lleno o.o" end end end mov = mov + 1 tab[(r.to_i - 1)][(c.to_i - 1)] = turno gana = valGana(tamaño, tab, r.to_i - 1, c.to_i - 1, turno) if gana != " " muestraTab(tamaño, tab) puts "Gano el " + gana.to_s gets.chomp if turno == "O" turno = "X" else turno = "O" end end loop do if mov == (tamaño ** 2) or gana != " " puts "¿Seguir jugando?" puts "1: Si" puts "2: No" fin = gets.chomp if (fin.to_i <= 0 and fin.to_i >= 3) puts "opcion no valida" muestraTab(tamaño, tab) else if fin == "1" mov = 0 tab = tablero(tamaño) end break end else break end end muestraTab(tamaño, tab) end end
muestraTab(tamaño, tab)
click to toggle source
# File lib/ticktacktoe.rb, line 22 def muestraTab(tamaño, tab) system("cls") puts "Tick Tack Toe" col = " " for k in 1...(tamaño+1) col = col + k.to_s + " " end puts col for i in 0...tamaño ren = "" number = i + 1 for j in 0...tamaño if (j + 1) < tamaño ren = ren + " " + tab[i][j] + " " + "|" else ren = ren + " " + tab[i][j] + " " end end puts number.to_s + ren ren = "" for k in 0...tamaño ren = ren + " " + "---" end if (i + 1) < tamaño puts ren end end end
tablero()
click to toggle source
# File lib/ticktacktoe.rb, line 2 def tablero tamaño = "" while tamaño.to_i < 3 puts "Tamaño del tablero" tamaño = gets.chomp if tamaño.to_i < 3 puts "Tamaño no valido" gets.chomp system("cls") end end tab = Array.new(tamaño){Array.new(tamaño)} for i in 0...tamaño for j in 0...tamaño tab[i][j] = " " end end jugar(tamaño, tab) return tab end
valGana(tamaño, tab, r, c, turno)
click to toggle source
# File lib/ticktacktoe.rb, line 122 def valGana(tamaño, tab, r, c, turno) i = val = 0 while i < 4 case i when 0 rMov = -1 cMov = 0 rlim = 1 clim = 0 when 1 rMov = 0 cMov = -1 rlim = 0 clim = 1 when 2 rMov = -1 cMov = -1 rlim = 1 clim = 1 else rMov = -1 cMov = 1 rlim = 1 clim = -1 end for mov in 0...3 if (r + (rlim*mov)) < tamaño and (c + (clim*mov)) < tamaño and tab[(r + (rlim*mov))][(c + (clim*mov))] == turno r2 = r + (rlim*mov) c2 = c + (clim*mov) for j in 1...3 if (r2+(j*rMov) >= 0 and c2+(j*cMov) >= 0) and (r2+(j*rMov) < tamaño and c2+(j*cMov) < tamaño) and tab[r2+(j*rMov)][c2+(j*cMov)] == turno val = val + 1 else break end end if val == 2 return "Jugador " + turno else val = 0 end end end i += 1 end return " " end