mygem_tictactoe 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +15 -0
  2. data/lib/mygem_tictactoe.rb +178 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZGQ3MTZmZGMyYjA2YzBmMjIyODdlNWU1NWIzZWMxNWE2ZTU0NmU0MA==
5
+ data.tar.gz: !binary |-
6
+ OWEzOTI0Y2Y1Y2I5YmZhZDMzNGQzMzI4N2EzZjY2NWIwN2E1MjVkZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YmJlZjE5OWY5ZmM5MzM0M2I5YjNlNTI0Zjc0NGEyMTg1MzUzMmQzNmQ2ZDYx
10
+ YWY2MTBlYjExZGQ3MmE2ZjhmZWMwODE3YzNjNDc0NDNkZmJmMDgzNTc0ZTEx
11
+ ZDAwMmNiOTI1ZDIyMzc2MjNhMWNlMzBjMTcxZmU3YmI1MGFiYjg=
12
+ data.tar.gz: !binary |-
13
+ ZGIxZTJmZjk5YzNlNTI2ZDMxZDA0NmQ4M2U3M2ZmYmQ2ZDM3NjI1MGFiODdj
14
+ OGU5OWQ3NWZmZmE5MTI2Y2JjZDFhMzRiZTkzY2ZiNDBjNTYyOWMyYTBhOTQ5
15
+ NzUzYzhhNDk4MmI0Y2I4NDc0NGFkN2Y2MDAxZTZkZTA0NGUyOGI=
@@ -0,0 +1,178 @@
1
+
2
+ class Gato
3
+
4
+ module Patrones
5
+
6
+ Ganando =
7
+ [[(/ OO....../),0],[(/O..O.. ../),6],
8
+ [(/......OO /),8],[(/.. ..O..O/),2],
9
+ [(/ ..O..O../),0],[(/...... OO/),6],
10
+ [(/..O..O.. /),8],[(/OO ....../),2],
11
+ [(/ ...O...O/),0],[(/..O.O. ../),6],
12
+ [(/O...O... /),8],[(/.. .O.O../),2],
13
+ [(/O O....../),1],[(/O.. ..O../),3],
14
+ [(/......O O/),7],[(/..O.. ..O/),5],
15
+ [(/. ..O..O./),1],[(/... OO.../),3],
16
+ [(/.O..O.. ./),7],[(/...OO .../),5]]
17
+
18
+ Bloqueando =
19
+ [[(/ X . X /),1],[(/ XX....../),0],[(/X..X.. ../),6],
20
+ [(/......XX /),8],[(/.. ..X..X/),2],[(/ ..X..X../),0],
21
+ [(/...... XX/),6],[(/..X..X.. /),8],[(/XX ....../),2],
22
+ [(/ ...X...X/),0],[(/..X.X. ../),6],[(/X...X... /),8],
23
+ [(/.. .X.X../),2],[(/X X....../),1],[(/X.. ..X../),3],
24
+ [(/......X X/),7],[(/..X.. ..X/),5],[(/. ..X..X./),1],
25
+ [(/... XX.../),3],[(/.X..X.. ./),7],[(/...XX .../),5],
26
+ [(/ X X.. ../),0],[(/ ..X.. X /),6],[(/.. ..X X /),8],
27
+ [(/ X ..X.. /),2],[(/ XX.. ../),0],[(/X.. .. X /),6],
28
+ [(/.. .XX /),8],[(/X ..X.. /),2],[(/ X ..X../),0],
29
+ [(/ ..X.. X/),6],[(/..X.. X /),8],[(/X ..X.. /),2]]
30
+
31
+ Gano =
32
+ [[(/OOO....../),:O], [(/...OOO.../),:O],
33
+ [(/......OOO/),:O], [(/O..O..O../),:O],
34
+ [(/.O..O..O./),:O], [(/..O..O..O/),:O],
35
+ [(/O...O...O/),:O], [(/..O.O.O../),:O],
36
+ [(/XXX....../),:X], [(/...XXX.../),:X],
37
+ [(/......XXX/),:X], [(/X..X..X../),:X],
38
+ [(/.X..X..X./),:X], [(/..X..X..X/),:X],
39
+ [(/X...X...X/),:X], [(/..X.X.X../),:X]]
40
+ end
41
+
42
+
43
+ def initialize
44
+ @mapa = [].fill(0, 9) { " " }
45
+ @jugadores = { :X => 'X', :O => 'O' }
46
+ @turno = :X
47
+ end
48
+
49
+
50
+ def jugar
51
+ banderaGanadora = false
52
+ 9.times do
53
+ if @turno === :X
54
+ mostrar
55
+ movimientoJugador
56
+ else
57
+ movimientoCPU
58
+ end
59
+ ganador = posibleGanador
60
+ unless ganador.nil?
61
+ mostrar
62
+ print "\n#{ganador} es el ganador!\n"
63
+ banderaGanadora = true
64
+ break
65
+ end
66
+ @turno = (@turno === :X) ? :O : :X
67
+ end
68
+ if (!banderaGanadora)
69
+ mostrar
70
+ print "\nJuego empate.\n"
71
+ end
72
+ end
73
+
74
+
75
+ private
76
+
77
+ def movimientoJugador
78
+ print "Haga su movimiento por favor [0-8]: "
79
+ movimientoPosicion = gets.chomp.to_i
80
+ unless (0..8) === movimientoPosicion
81
+ print "\nMovimiento invalido: #{movimientoPosicion}. Por favor re-intentar.\n"
82
+ movimientoJugador
83
+ return
84
+ end
85
+ if @mapa.at(movimientoPosicion) != ' '
86
+ print "\nEspacio ocupado. Por favor re-intentar.\n"
87
+ movimientoJugador
88
+ return
89
+ end
90
+ movimiento movimientoPosicion, 'X'
91
+ end
92
+
93
+
94
+ def movimientoCPU
95
+ movimientoPosicion = movimientoPatronGanando
96
+ if movimientoPosicion.nil?
97
+ movimientoPosicion = movimientoPatronBloqueando
98
+ if movimientoPosicion.nil?
99
+ movimientoPosicion = primerMovimiento
100
+ end
101
+ end
102
+ movimiento movimientoPosicion, 'O'
103
+ end
104
+
105
+
106
+ def movimiento(pos, piece)
107
+ @mapa.delete_at(pos)
108
+ @mapa.insert(pos, piece)
109
+ end
110
+
111
+
112
+ def mostrar
113
+ print "\n\n"
114
+ print " #{@mapa[0]} |"
115
+ print " #{@mapa[1]} |"
116
+ print " #{@mapa[2]}"
117
+ print "\n---+---+---\n"
118
+ print " #{@mapa[3]} |"
119
+ print " #{@mapa[4]} |"
120
+ print " #{@mapa[5]}"
121
+ print "\n---+---+---\n"
122
+ print " #{@mapa[6]} |"
123
+ print " #{@mapa[7]} |"
124
+ print " #{@mapa[8]}"
125
+ print "\n\n"
126
+ end
127
+
128
+
129
+ def posibleGanador
130
+ symbol = nil
131
+ array = Patrones::Gano.find { |p| p.first =~ @mapa.join }
132
+ unless array.nil?
133
+ symbol = (array.last === :X) ? 'X' : 'O'
134
+ end
135
+ symbol
136
+ end
137
+
138
+
139
+ def movimientoPatronGanando
140
+ movimientoPosicion = nil
141
+ array = Patrones::Ganando.find { |p| p.first =~ @mapa.join }
142
+ unless array.nil?
143
+ movimientoPosicion = array.last
144
+ end
145
+ movimientoPosicion
146
+ end
147
+
148
+
149
+ def movimientoPatronBloqueando
150
+ movimientoPosicion = nil
151
+ array = Patrones::Bloqueando.find { |p| p.first =~ @mapa.join }
152
+ unless array.nil?
153
+ movimientoPosicion = array.last
154
+ end
155
+ movimientoPosicion
156
+ end
157
+
158
+
159
+ def primerMovimiento
160
+ if @mapa.at(4) == ' '
161
+ movimientoPosicion = 4
162
+ else
163
+ movimientoPosicion = @mapa.index(' ')
164
+ end
165
+ movimientoPosicion
166
+ end
167
+ end
168
+
169
+
170
+ if __FILE__ == $0
171
+ print "Digite su nombre: "
172
+ nombre = gets.chomp
173
+ print "\n\n#{nombre} Usted es X."
174
+ Gato.new.jugar
175
+ end
176
+
177
+
178
+
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mygem_tictactoe
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Pincelancer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-04-22 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This tictactoe is the best.
14
+ email:
15
+ - pincelancer@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/mygem_tictactoe.rb
21
+ homepage: http://pincelancer.com/
22
+ licenses: []
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.3
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: A simple tictactoe scrypt
44
+ test_files: []