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:
Citarhttp://www.megaupload.com/?d=AMMG7WS5 (http://www.megaupload.com/?d=AMMG7WS5)
el codigo:
Option Explicit
Function cambio()
If Label11.Caption = "1" Then
Label11.Caption = "2"
Command2.Caption = "O"
Command3.Caption = "O"
Command4.Caption = "O"
Command5.Caption = "O"
Command6.Caption = "O"
Command7.Caption = "O"
Command8.Caption = "O"
Command9.Caption = "O"
Command10.Caption = "O"
Else: Label11.Caption = "1"
Command2.Caption = "X"
Command3.Caption = "X"
Command4.Caption = "X"
Command5.Caption = "X"
Command6.Caption = "X"
Command7.Caption = "X"
Command8.Caption = "X"
Command9.Caption = "X"
Command10.Caption = "X"
End If
End Function
Function ganador()
If Label1.Caption & Label2.Caption & Label3.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label4.Caption & Label5.Caption & Label6.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label7.Caption & Label8.Caption & Label9.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label1.Caption & Label4.Caption & Label7.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label2.Caption & Label5.Caption & Label8.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label3.Caption & Label6.Caption & Label9.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label1.Caption & Label5.Caption & Label9.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label3.Caption & Label5.Caption & Label7.Caption = "XXX" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:1"
MsgBox "EL GANADOR ES EL JUGADOR 1!!!", vbExclamation, Me.Caption
End If
If Label1.Caption & Label2.Caption & Label3.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label4.Caption & Label5.Caption & Label6.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label7.Caption & Label8.Caption & Label9.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label1.Caption & Label4.Caption & Label7.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label2.Caption & Label5.Caption & Label8.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label3.Caption & Label6.Caption & Label9.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label1.Caption & Label5.Caption & Label9.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
If Label3.Caption & Label5.Caption & Label7.Caption = "OOO" Then
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Command9.Enabled = False
Command10.Enabled = False
Label12.Caption = "Jugador:2"
MsgBox "EL GANADOR ES EL JUGADOR 2!!!", vbExclamation, Me.Caption
End If
End Function
Private Sub Command1_Click()
Label11.Caption = "1"
Label1.Caption = ""
Label2.Caption = ""
Label3.Caption = ""
Label4.Caption = ""
Label5.Caption = ""
Label6.Caption = ""
Label7.Caption = ""
Label8.Caption = ""
Label9.Caption = ""
Label12.Caption = "Jugador:"
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command9.Enabled = True
Command10.Enabled = True
End Sub
Private Sub Command2_Click()
If Label1.Caption = "" Then
Label1.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command3_Click()
If Label4.Caption = "" Then
Label4.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command4_Click()
If Label7.Caption = "" Then
Label7.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command5_Click()
If Label2.Caption = "" Then
Label2.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command6_Click()
If Label5.Caption = "" Then
Label5.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command7_Click()
If Label8.Caption = "" Then
Label8.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command8_Click()
If Label3.Caption = "" Then
Label3.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Private Sub Command9_Click()
If Label6.Caption = "" Then
Label6.Caption = Command2.Caption
Call cambio
Call ganador
Else: MsgBox "ya se ha marcado esta casilla", vbInformation, Me.Caption
End If
End Sub
Cita de: Daklon en 29 Octubre 2010, 18:50 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 :)
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
Cita de: raul338 en 29 Octubre 2010, 19:00 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:
if Label3.Caption = "" then
Ess alguna variable boolean asi se entenderia mas (Aun que aún asi se entiedne =).
If VaribaleBoolean then
con respecto alo de los Arreglso de controles.... (Propiedad Index)
Command2.Caption = "X"
Command3.Caption = "X"
Command4.Caption = "X"
Command5.Caption = "X"
Command6.Caption = "X"
Command7.Caption = "X"
Command8.Caption = "X"
Command9.Caption = "X"
Command10.Caption = "X"
con array quedaria:
dim lng_i&
for lng_i& = command.lbound to command.ubound
Command(lng_index&).Caption = "X"
next i
Dulces Lunas!¡.
Cita de: BlackZeroX▓▓▒▒░░ en 29 Octubre 2010, 19:30 PM
Cita de: raul338 en 29 Octubre 2010, 19:00 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
Private Sub buttons_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click, Button2.Click
' Fijate despues de "Handles" :)
Dim miBoton as Button = (Button)sender
Msgbox(miBoton.Name) ' Button1 o Button segun el caso (:
End sub
Ademas el array de controles no se puede en modo gráfico, pero si se puede tranquilamente a través de código
.
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!¡.
Cita de: BlackZeroX▓▓▒▒░░ en 29 Octubre 2010, 19:30 PM
Cita de: raul338 en 29 Octubre 2010, 19:00 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:
if Label3.Caption = "" then
Ess alguna variable boolean asi se entenderia mas (Aun que aún asi se entiedne =).
If VaribaleBoolean then
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?
Si no pones nada en una variable Boolean cuenta como True, mira:
If A = True Then
Es lo mismo que :
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
pero entonces como digo que a es verdadero cuando label1.caption & label2.caption & label3.caption son iguales a "x"?
a = Label1.Caption & Label2.Caption & Label3.Caption = "XXX"
asi
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
o si que si deseas entenderlo mejor...
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
Cita de: Daklon en 29 Octubre 2010, 19:45 PM
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!¡.
Cita de: BlackZeroX▓▓▒▒░░ en 30 Octubre 2010, 03:49 AM
asi
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
o si que si deseas entenderlo mejor...
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
El código se ve algo sucio xD
No se si es más fácil así pero igual lo pongo:
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!!!
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
.
@3D1
Join() lo dejo para otras cosas... por algo existe "_"
' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
VariableBoolean = CBool( _
Label1.Caption = Label2.Caption _
And Label2.Caption = Label3.Caption _
And Label3.Caption = "X" _
)
Dulce Infierno Lunar!¡.
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...
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0
' // Codigo de un boton
Case 1
' // Codigo de un boton
Case n..
' // Codigo de un boton
Case Else
' // De donde carajo salio este Index?
End Select
End Sub
Dulce Infierno Luanr!¡.
ok gracias
a ver si mañana saco tiempo y hago el código recortado con los consejos que me han dado xD
Cita de: BlackZeroX▓▓▒▒░░ en 31 Octubre 2010, 02:34 AM
.
@3D1
Join() lo dejo para otras cosas... por algo existe "_"
' // por lo tanto Label3.Caption deberia ser =? Label1.Caption si fuese Toda la sentencia = true
VariableBoolean = CBool( _
Label1.Caption = Label2.Caption _
And Label2.Caption = Label3.Caption _
And Label3.Caption = "X" _
)
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!!!
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)
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:
Option Explicit
Dim CT As Integer
Dim X As Integer 'PARA EL BUCLE
Private Sub Form_Load()
Call BORRAR_LBL
End Sub
Private Sub lbl_Click(Index As Integer)
Dim SIGNO As Byte
Dim GANO As Boolean
If lbl(Index).Caption = "X" Or lbl(Index).Caption = "O" Then Exit Sub
If CT = 9 Then Call BORRAR_LBL
CT = CT + 1
If CT Mod 2 = 0 Then SIGNO = 79 Else SIGNO = 88
lbl(Index).Caption = Chr(SIGNO)
lbl(Index).ForeColor = vbBlack
GANO = False
For X = 1 To 3
'HORIZONTALES
If lbl(X * 3 - 1).Caption = lbl(X * 3 - 2).Caption And lbl(X * 3 - 2).Caption = lbl(X * 3 - 3).Caption Then
GANO = MsgBox("GANADOR " & lbl(X * 3 - 1).Caption)
'VERTICALES
ElseIf lbl(-1 + X).Caption = lbl(2 + X).Caption And lbl(2 + X).Caption = lbl(5 + X).Caption Then
GANO = MsgBox("GANADOR " & lbl(-1 + X).Caption)
End If
Next
'DIAGONALES
If lbl(0).Caption = lbl(4).Caption And lbl(4).Caption = lbl(8).Caption Then
GANO = MsgBox("GANADOR " & lbl(0).Caption)
ElseIf lbl(2).Caption = lbl(4).Caption And lbl(4).Caption = lbl(6).Caption Then
GANO = MsgBox("GANADOR " & lbl(6).Caption)
End If
If GANO = True Then Call BORRAR_LBL
End Sub
Private Sub BORRAR_LBL()
For X = 0 To 8
lbl(X).Caption = X + 1
lbl(X).ForeColor = lbl(X).BackColor
Next
CT = 0
End Sub
GRACIAS POR LEER!!!
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
HOLA!!!
JAJAJA sisi, fue un problema al copiar y pegar.
GRACIAS POR LEER!!!