Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Daklon en 29 Octubre 2010, 18:50 pm



Título: tres en raya sencillito en vb
Publicado por: Daklon en 29 Octubre 2010, 18:50 pm
pues siguiendo consejos he echo este 3 en raya rapidito xD

la interfaz he de reconocer que me quedo muy chapuzas xD

en el rar esta el form el proyecto y el exe ya compilado pero si no se fían compilenlo ustedes xD

el código creo que se podría optimizar un poco, ya que repito muchas veces el mismo código a ver si pueden decirme como

el enlace:
Citar
http://www.megaupload.com/?d=AMMG7WS5 (http://www.megaupload.com/?d=AMMG7WS5)

el codigo:
Código
  1. Option Explicit
  2. Function cambio()
  3. If Label11.Caption = "1" Then
  4. Label11.Caption = "2"
  5. Command2.Caption = "O"
  6. Command3.Caption = "O"
  7. Command4.Caption = "O"
  8. Command5.Caption = "O"
  9. Command6.Caption = "O"
  10. Command7.Caption = "O"
  11. Command8.Caption = "O"
  12. Command9.Caption = "O"
  13. Command10.Caption = "O"
  14. Else: Label11.Caption = "1"
  15. Command2.Caption = "X"
  16. Command3.Caption = "X"
  17. Command4.Caption = "X"
  18. Command5.Caption = "X"
  19. Command6.Caption = "X"
  20. Command7.Caption = "X"
  21. Command8.Caption = "X"
  22. Command9.Caption = "X"
  23. Command10.Caption = "X"
  24. End If
  25.  
  26. End Function
  27. Function ganador()
  28. If Label1.Caption & Label2.Caption & Label3.Caption = "XXX" Then
  29. Command2.Enabled = False
  30. Command3.Enabled = False
  31. Command4.Enabled = False
  32. Command5.Enabled = False
  33. Command6.Enabled = False
  34. Command7.Enabled = False
  35. Command8.Enabled = False
  36. Command9.Enabled = False
  37. Command10.Enabled = False
  38. Label12.Caption = "Jugador:1"
  39. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  40. End If
  41. If Label4.Caption & Label5.Caption & Label6.Caption = "XXX" Then
  42. Command2.Enabled = False
  43. Command3.Enabled = False
  44. Command4.Enabled = False
  45. Command5.Enabled = False
  46. Command6.Enabled = False
  47. Command7.Enabled = False
  48. Command8.Enabled = False
  49. Command9.Enabled = False
  50. Command10.Enabled = False
  51. Label12.Caption = "Jugador:1"
  52. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  53. End If
  54. If Label7.Caption & Label8.Caption & Label9.Caption = "XXX" Then
  55. Command2.Enabled = False
  56. Command3.Enabled = False
  57. Command4.Enabled = False
  58. Command5.Enabled = False
  59. Command6.Enabled = False
  60. Command7.Enabled = False
  61. Command8.Enabled = False
  62. Command9.Enabled = False
  63. Command10.Enabled = False
  64. Label12.Caption = "Jugador:1"
  65. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  66. End If
  67. If Label1.Caption & Label4.Caption & Label7.Caption = "XXX" Then
  68. Command2.Enabled = False
  69. Command3.Enabled = False
  70. Command4.Enabled = False
  71. Command5.Enabled = False
  72. Command6.Enabled = False
  73. Command7.Enabled = False
  74. Command8.Enabled = False
  75. Command9.Enabled = False
  76. Command10.Enabled = False
  77. Label12.Caption = "Jugador:1"
  78. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  79. End If
  80. If Label2.Caption & Label5.Caption & Label8.Caption = "XXX" Then
  81. Command2.Enabled = False
  82. Command3.Enabled = False
  83. Command4.Enabled = False
  84. Command5.Enabled = False
  85. Command6.Enabled = False
  86. Command7.Enabled = False
  87. Command8.Enabled = False
  88. Command9.Enabled = False
  89. Command10.Enabled = False
  90. Label12.Caption = "Jugador:1"
  91. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  92. End If
  93. If Label3.Caption & Label6.Caption & Label9.Caption = "XXX" Then
  94. Command2.Enabled = False
  95. Command3.Enabled = False
  96. Command4.Enabled = False
  97. Command5.Enabled = False
  98. Command6.Enabled = False
  99. Command7.Enabled = False
  100. Command8.Enabled = False
  101. Command9.Enabled = False
  102. Command10.Enabled = False
  103. Label12.Caption = "Jugador:1"
  104. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  105. End If
  106. If Label1.Caption & Label5.Caption & Label9.Caption = "XXX" Then
  107. Command2.Enabled = False
  108. Command3.Enabled = False
  109. Command4.Enabled = False
  110. Command5.Enabled = False
  111. Command6.Enabled = False
  112. Command7.Enabled = False
  113. Command8.Enabled = False
  114. Command9.Enabled = False
  115. Command10.Enabled = False
  116. Label12.Caption = "Jugador:1"
  117. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  118. End If
  119. If Label3.Caption & Label5.Caption & Label7.Caption = "XXX" Then
  120. Command2.Enabled = False
  121. Command3.Enabled = False
  122. Command4.Enabled = False
  123. Command5.Enabled = False
  124. Command6.Enabled = False
  125. Command7.Enabled = False
  126. Command8.Enabled = False
  127. Command9.Enabled = False
  128. Command10.Enabled = False
  129. Label12.Caption = "Jugador:1"
  130. MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
  131. End If
  132. If Label1.Caption & Label2.Caption & Label3.Caption = "OOO" Then
  133. Command2.Enabled = False
  134. Command3.Enabled = False
  135. Command4.Enabled = False
  136. Command5.Enabled = False
  137. Command6.Enabled = False
  138. Command7.Enabled = False
  139. Command8.Enabled = False
  140. Command9.Enabled = False
  141. Command10.Enabled = False
  142. Label12.Caption = "Jugador:2"
  143. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  144. End If
  145. If Label4.Caption & Label5.Caption & Label6.Caption = "OOO" Then
  146. Command2.Enabled = False
  147. Command3.Enabled = False
  148. Command4.Enabled = False
  149. Command5.Enabled = False
  150. Command6.Enabled = False
  151. Command7.Enabled = False
  152. Command8.Enabled = False
  153. Command9.Enabled = False
  154. Command10.Enabled = False
  155. Label12.Caption = "Jugador:2"
  156. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  157. End If
  158. If Label7.Caption & Label8.Caption & Label9.Caption = "OOO" Then
  159. Command2.Enabled = False
  160. Command3.Enabled = False
  161. Command4.Enabled = False
  162. Command5.Enabled = False
  163. Command6.Enabled = False
  164. Command7.Enabled = False
  165. Command8.Enabled = False
  166. Command9.Enabled = False
  167. Command10.Enabled = False
  168. Label12.Caption = "Jugador:2"
  169. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  170. End If
  171. If Label1.Caption & Label4.Caption & Label7.Caption = "OOO" Then
  172. Command2.Enabled = False
  173. Command3.Enabled = False
  174. Command4.Enabled = False
  175. Command5.Enabled = False
  176. Command6.Enabled = False
  177. Command7.Enabled = False
  178. Command8.Enabled = False
  179. Command9.Enabled = False
  180. Command10.Enabled = False
  181. Label12.Caption = "Jugador:2"
  182. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  183. End If
  184. If Label2.Caption & Label5.Caption & Label8.Caption = "OOO" Then
  185. Command2.Enabled = False
  186. Command3.Enabled = False
  187. Command4.Enabled = False
  188. Command5.Enabled = False
  189. Command6.Enabled = False
  190. Command7.Enabled = False
  191. Command8.Enabled = False
  192. Command9.Enabled = False
  193. Command10.Enabled = False
  194. Label12.Caption = "Jugador:2"
  195. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  196. End If
  197. If Label3.Caption & Label6.Caption & Label9.Caption = "OOO" Then
  198. Command2.Enabled = False
  199. Command3.Enabled = False
  200. Command4.Enabled = False
  201. Command5.Enabled = False
  202. Command6.Enabled = False
  203. Command7.Enabled = False
  204. Command8.Enabled = False
  205. Command9.Enabled = False
  206. Command10.Enabled = False
  207. Label12.Caption = "Jugador:2"
  208. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  209. End If
  210. If Label1.Caption & Label5.Caption & Label9.Caption = "OOO" Then
  211. Command2.Enabled = False
  212. Command3.Enabled = False
  213. Command4.Enabled = False
  214. Command5.Enabled = False
  215. Command6.Enabled = False
  216. Command7.Enabled = False
  217. Command8.Enabled = False
  218. Command9.Enabled = False
  219. Command10.Enabled = False
  220. Label12.Caption = "Jugador:2"
  221. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  222. End If
  223. If Label3.Caption & Label5.Caption & Label7.Caption = "OOO" Then
  224. Command2.Enabled = False
  225. Command3.Enabled = False
  226. Command4.Enabled = False
  227. Command5.Enabled = False
  228. Command6.Enabled = False
  229. Command7.Enabled = False
  230. Command8.Enabled = False
  231. Command9.Enabled = False
  232. Command10.Enabled = False
  233. Label12.Caption = "Jugador:2"
  234. MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
  235. End If
  236.  
  237.  
  238.  
  239. End Function
  240.  
  241. Private Sub Command1_Click()
  242. Label11.Caption = "1"
  243. Label1.Caption = ""
  244. Label2.Caption = ""
  245. Label3.Caption = ""
  246. Label4.Caption = ""
  247. Label5.Caption = ""
  248. Label6.Caption = ""
  249. Label7.Caption = ""
  250. Label8.Caption = ""
  251. Label9.Caption = ""
  252. Label12.Caption = "Jugador:"
  253. Command2.Enabled = True
  254. Command3.Enabled = True
  255. Command4.Enabled = True
  256. Command5.Enabled = True
  257. Command6.Enabled = True
  258. Command7.Enabled = True
  259. Command8.Enabled = True
  260. Command9.Enabled = True
  261. Command10.Enabled = True
  262. End Sub
  263.  
  264. Private Sub Command2_Click()
  265. If Label1.Caption = "" Then
  266. Label1.Caption = Command2.Caption
  267. Call cambio
  268. Call ganador
  269. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  270. End If
  271.  
  272. End Sub
  273.  
  274. Private Sub Command3_Click()
  275. If Label4.Caption = "" Then
  276. Label4.Caption = Command2.Caption
  277. Call cambio
  278. Call ganador
  279. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  280. End If
  281. End Sub
  282.  
  283. Private Sub Command4_Click()
  284. If Label7.Caption = "" Then
  285. Label7.Caption = Command2.Caption
  286. Call cambio
  287. Call ganador
  288. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  289. End If
  290. End Sub
  291.  
  292. Private Sub Command5_Click()
  293. If Label2.Caption = "" Then
  294. Label2.Caption = Command2.Caption
  295. Call cambio
  296. Call ganador
  297. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  298. End If
  299. End Sub
  300.  
  301. Private Sub Command6_Click()
  302. If Label5.Caption = "" Then
  303. Label5.Caption = Command2.Caption
  304. Call cambio
  305. Call ganador
  306. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  307. End If
  308. End Sub
  309.  
  310. Private Sub Command7_Click()
  311. If Label8.Caption = "" Then
  312. Label8.Caption = Command2.Caption
  313. Call cambio
  314. Call ganador
  315. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  316. End If
  317. End Sub
  318.  
  319. Private Sub Command8_Click()
  320. If Label3.Caption = "" Then
  321. Label3.Caption = Command2.Caption
  322. Call cambio
  323. Call ganador
  324. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  325. End If
  326. End Sub
  327.  
  328. Private Sub Command9_Click()
  329. If Label6.Caption = "" Then
  330. Label6.Caption = Command2.Caption
  331. Call cambio
  332. Call ganador
  333. Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
  334. End If
  335. End Sub
  336.  


Título: Re: tres en raya sencillito en vb
Publicado por: raul338 en 29 Octubre 2010, 19:00 pm
el código creo que se podría optimizar un poco, ya que repito muchas veces el mismo código a ver si pueden decirme como

Aprende a usar arrays de controles :)


Título: Re: tres en raya sencillito en vb
Publicado por: Daklon en 29 Octubre 2010, 19:29 pm
busque info sobre eso, pero tengo un problema,al crear una copia del mismo commandbutton, el código es el mismo que el del original,no puedo ponerle un código distinto, no se si me explico


Título: Re: tres en raya sencillito en vb
Publicado por: BlackZeroX en 29 Octubre 2010, 19:30 pm
Aprende a usar arrays de controles :)

No lo mal acostumbres recuerda que en vb.NEt no se puede usar eso xS (maldito .Net ¬¬")

Un consejo ademas del ya dado

En lugar de de usar:
Código
  1.  
  2. if Label3.Caption = "" then
  3.  
  4.  

Ess alguna variable boolean asi se entenderia mas (Aun que aún asi se entiedne =).

Código
  1.  
  2. If VaribaleBoolean then
  3.  
  4.  

con respecto alo de los Arreglso de controles.... (Propiedad Index)

Código
  1.  
  2. Command2.Caption = "X"
  3. Command3.Caption = "X"
  4. Command4.Caption = "X"
  5. Command5.Caption = "X"
  6. Command6.Caption = "X"
  7. Command7.Caption = "X"
  8. Command8.Caption = "X"
  9. Command9.Caption = "X"
  10. Command10.Caption = "X"
  11.  
  12.  

con array quedaria:

Código
  1.  
  2. dim lng_i&
  3.    for lng_i& = command.lbound to command.ubound
  4.        Command(lng_index&).Caption = "X"
  5.    next i
  6.  
  7.  

Dulces Lunas!¡.


Título: Re: tres en raya sencillito en vb
Publicado por: raul338 en 29 Octubre 2010, 19:34 pm
Aprende a usar arrays de controles :)

No lo mal acostumbres recuerda que en vb.NEt no se puede usar eso xS (maldito .Net ¬¬")

WTF! Quien dice que no? Todo contenedor tiene su array de controles :P

Solo hay que hacer que los botones (por ejemplo) apunten al mismo evento, y despues separas segun el "sender" ej

Código
  1. Private Sub buttons_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click, Button2.Click
  2. ' Fijate despues de "Handles" :)
  3.    Dim miBoton as Button = (Button)sender
  4.    Msgbox(miBoton.Name) ' Button1 o Button segun el caso (:
  5. End sub
  6.  

Ademas el array de controles no se puede en modo gráfico, pero si se puede tranquilamente a través de código


Título: Re: tres en raya sencillito en vb
Publicado por: BlackZeroX en 29 Octubre 2010, 19:39 pm
.
Woo no lo sabia, bueno nunca se me ocurrio lo del Sender, busque en internet y en el guille encontre un codigo que dba vueltas a lo loco para hacer esto, esto es mas cortito xD

Dulce Lunas!¡.


Título: Re: tres en raya sencillito en vb
Publicado por: Daklon en 29 Octubre 2010, 19:45 pm
Aprende a usar arrays de controles :)

No lo mal acostumbres recuerda que en vb.NEt no se puede usar eso xS (maldito .Net ¬¬")

Un consejo ademas del ya dado

En lugar de de usar:
Código
  1.  
  2. if Label3.Caption = "" then
  3.  
  4.  

Ess alguna variable boolean asi se entenderia mas (Aun que aún asi se entiedne =).

Código
  1.  
  2. If VaribaleBoolean then
  3.  
  4.  


eso ultimo no acabo de entenderlo,las variables tipo boolean no eran true y false?

como le digo lo que es true y lo que es false?

edit: otra cosa que me acabo de fijar:

con lo de lbound lo que haces es usar el command mas pequeño no?

eso no causaría conflicto con el command1 que es para hacer una nueva partida?

se solucionaría cambiándole el nombre no?


Título: Re: tres en raya sencillito en vb
Publicado por: Psyke1 en 29 Octubre 2010, 22:54 pm
Si no pones nada en una variable Boolean cuenta como True, mira:
Código
  1. If A = True Then
Es lo mismo que :
Código
  1. If A Then

Y respecto a lo segundo, no, no originaria conflicto, lo único que haces con LBound() es obtener el index mas pequeño del array(en este caso de controles) y con UBound() el mas alto.
 
DoEvents! :P


Título: Re: tres en raya sencillito en vb
Publicado por: Daklon en 30 Octubre 2010, 01:12 am
pero entonces como digo que a es verdadero cuando label1.caption & label2.caption & label3.caption son iguales a "x"?
Código
  1. a = Label1.Caption & Label2.Caption & Label3.Caption = "XXX"


Título: Re: tres en raya sencillito en vb
Publicado por: BlackZeroX en 30 Octubre 2010, 03:49 am
asi

Código
  1.  
  2. VariableBoolean = Label1.Caption = Label2.Caption and Label2.Caption = Label3.Caption and Label3.Caption = "X" ' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
  3.  
  4.  

o si que si deseas entenderlo mejor...

Código
  1.  
  2. VariableBoolean = cbool(Label1.Caption = Label2.Caption and Label2.Caption = Label3.Caption and Label3.Caption = "X") ' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
  3.  
  4.  


Título: Re: tres en raya sencillito en vb
Publicado por: BlackZeroX en 30 Octubre 2010, 03:53 am
eso ultimo no acabo de entenderlo,las variables tipo boolean no eran true y false?

como le digo lo que es true y lo que es false?

edit: otra cosa que me acabo de fijar:

con lo de lbound lo que haces es usar el command mas pequeño no?

eso no causaría conflicto con el command1 que es para hacer una nueva partida?

se solucionaría cambiándole el nombre no?

Todo lo que has dicho es correcto.

solo por aclarate FiThen funciona con valores Booleanos con solo poner true como te lo a mostrado Mr. Frogs es suficiente, al iggual que tan solo poner la variable tipo Boolean.

Dulces Lunas!¡.


Título: Re: tres en raya sencillito en vb
Publicado por: EddyW en 30 Octubre 2010, 05:32 am
asi

Código
  1.  
  2. VariableBoolean = Label1.Caption = Label2.Caption and Label2.Caption = Label3.Caption and Label3.Caption = "X" ' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
  3.  
  4.  

o si que si deseas entenderlo mejor...

Código
  1.  
  2. VariableBoolean = cbool(Label1.Caption = Label2.Caption and Label2.Caption = Label3.Caption and Label3.Caption = "X") ' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
  3.  
  4.  

El código se ve algo sucio xD
No se si es más fácil así pero igual lo pongo:
Código
  1. VariableBoolean = CBool(Join(Array(Label1, Label2, Label3), "") = "XXX")
En una tontera de ver que resulta si junto muchos objetos en un Array, no resultó nada, pero rescaté esto (http://foro.elhacker.net/Smileys/chef/carita.gif)
 :xD

SaluDOS!!!


Título: Re: tres en raya sencillito en vb
Publicado por: Daklon en 31 Octubre 2010, 01:57 am
a ok ya entendi xD

estaba pensando como si fuera una variable tipo string xD

ahora me surgio otra duda xD

a ver he borrado todos los command button menos el primero que era para crear una nueva partida y el commandbutton2 que era el primero de los que decian que casilla se marca, pero ahora no se como hacer para que cuando se aprete el primer commandbutton se ponga una x o un O en el primer label y que cuando se aprete el commandbutton2 pero de index 1 se ponga una X o un O en el segundo label, no se si me explico, que cuando creo una matriz de controles no se como hacer para poner codigos distintos a cada uno


Título: Re: tres en raya sencillito en vb
Publicado por: BlackZeroX en 31 Octubre 2010, 02:34 am
.
@3D1

Join() lo dejo para otras cosas... por algo existe "_"

Código
  1. ' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
  2. VariableBoolean = CBool( _
  3.                            Label1.Caption = Label2.Caption _
  4.                        And Label2.Caption = Label3.Caption _
  5.                        And Label3.Caption = "X" _
  6.                        )
  7.  

Dulce Infierno Lunar!¡.


Título: Re: tres en raya sencillito en vb
Publicado por: BlackZeroX en 31 Octubre 2010, 02:38 am
a si cuando agregas una matriz de controles se agrega en los eventos un aprametro llamado index de tipo integer, este sirve para identificar a dicho control...

Código
  1.  
  2. Private Sub Command1_Click(Index As Integer)
  3.    Select Case Index
  4.  
  5.        Case 0
  6.            '   //  Codigo de un boton
  7.        Case 1
  8.            '   //  Codigo de un boton
  9.        Case n..
  10.            '   //  Codigo de un boton
  11.        Case Else
  12.            '   //  De donde carajo salio este Index?
  13.    End Select
  14. End Sub
  15.  
  16.  

Dulce Infierno Luanr!¡.


Título: Re: tres en raya sencillito en vb
Publicado por: Daklon en 31 Octubre 2010, 03:17 am
ok gracias

a ver si mañana saco tiempo y hago el código recortado con los consejos que me han dado  xD


Título: Re: tres en raya sencillito en vb
Publicado por: EddyW en 31 Octubre 2010, 04:26 am
.
@3D1

Join() lo dejo para otras cosas... por algo existe "_"

Código
  1. ' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
  2. VariableBoolean = CBool( _
  3.                            Label1.Caption = Label2.Caption _
  4.                        And Label2.Caption = Label3.Caption _
  5.                        And Label3.Caption = "X" _
  6.                        )
  7.  

Dulce Infierno Lunar!¡.


Creo que es Bueno aprovechar todo lo que tenemos a mano., ;)
El código que coloqué no tiene ninguna restricción y/o problema cumple las reglas :P

SaluDOS!!!


Título: Re: tres en raya sencillito en vb
Publicado por: Edu en 3 Noviembre 2010, 00:30 am
Como vas con el proyecto Daklon? yo una vez hice uno pero no tan sencillo pero podrias vicharlo ya q te va a servir, de seguro si lo hago denuevo ahora q he aprendido un poco mas talvez, lo haria mas corto pero bueno en ese tiempo fue lo q me salio xD
En el codigo podras ver como usar los arrays de controles q yo use labels en ves de commands xD q me parece q queda mas lindo.. pero bueno miralo q te servira y cualkier duda con el code pregunta q te puedo ayudar

TaTeTi: http://www.megaupload.com/?d=URXZU187 (http://www.megaupload.com/?d=URXZU187)


Título: Re: tres en raya sencillito en vb
Publicado por: 79137913 en 3 Noviembre 2010, 18:13 pm
HOLA!!!
EL FORM:
(una matriz de controles de labels llamado lbl del index 0 al 8)
Ubicados asi:
lbl(0)   lbl(1)   lbl(2)
lbl(3)   lbl(4)   lbl(5)
lbl(6)   lbl(7)   lbl(8)

Mi codigo:
Código
  1. Option Explicit
  2. Dim CT As Integer
  3. Dim X As Integer 'PARA EL BUCLE
  4.  
  5. Private Sub Form_Load()
  6.    Call BORRAR_LBL
  7. End Sub
  8.  
  9. Private Sub lbl_Click(Index As Integer)
  10. Dim SIGNO As Byte
  11. Dim GANO As Boolean
  12.    If lbl(Index).Caption = "X" Or lbl(Index).Caption = "O" Then Exit Sub
  13.    If CT = 9 Then Call BORRAR_LBL
  14.    CT = CT + 1
  15.    If CT Mod 2 = 0 Then SIGNO = 79 Else SIGNO = 88
  16.    lbl(Index).Caption = Chr(SIGNO)
  17.    lbl(Index).ForeColor = vbBlack
  18.    GANO = False
  19.    For X = 1 To 3
  20.        'HORIZONTALES
  21.        If lbl(X * 3 - 1).Caption = lbl(X * 3 - 2).Caption And lbl(X * 3 - 2).Caption = lbl(X * 3 - 3).Caption Then
  22.            GANO = MsgBox("GANADOR " & lbl(X * 3 - 1).Caption)
  23.        'VERTICALES
  24.        ElseIf lbl(-1 + X).Caption = lbl(2 + X).Caption And lbl(2 + X).Caption = lbl(5 + X).Caption Then
  25.            GANO = MsgBox("GANADOR " & lbl(-1 + X).Caption)
  26.        End If
  27.    Next
  28.    'DIAGONALES
  29.    If lbl(0).Caption = lbl(4).Caption And lbl(4).Caption = lbl(8).Caption Then
  30.        GANO = MsgBox("GANADOR " & lbl(0).Caption)
  31.    ElseIf lbl(2).Caption = lbl(4).Caption And lbl(4).Caption = lbl(6).Caption Then
  32.        GANO = MsgBox("GANADOR " & lbl(6).Caption)
  33.    End If
  34.    If GANO = True Then Call BORRAR_LBL
  35. End Sub
  36.  
  37. Private Sub BORRAR_LBL()
  38.    For X = 0 To 8
  39.        lbl(X).Caption = X + 1
  40.        lbl(X).ForeColor = lbl(X).BackColor
  41.    Next
  42.    CT = 0
  43. End Sub
  44.  
  45.  

GRACIAS POR LEER!!!


Título: Re: tres en raya sencillito en vb
Publicado por: Edu en 3 Noviembre 2010, 19:34 pm
Esta bueno el code pero te diria q uses Option Explicit siempre ya q si lo pusieras ya te daria un error porq no has declarado la variable X cuando la usas por primera vez en el form load, asique la podrias declarar mejor donde declaraste la variable CT.

Despues lo de usar el bucle para sacar si ganaste horizontal o vertical o cruzado nunca lo habia pensado asi xD asique es buena ayuda para Daklon q esta haciendolo


Título: Re: tres en raya sencillito en vb
Publicado por: 79137913 en 3 Noviembre 2010, 19:44 pm
HOLA!!!

JAJAJA sisi, fue un problema al copiar y pegar.

GRACIAS POR LEER!!!