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: http://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
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: 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!¡.
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 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
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: 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?
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: 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
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"? 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 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
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 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!!!
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
. @3D1Join() 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!¡.
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... 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!¡.
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
. @3D1Join() 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!!!
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: 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!!!
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!!!
|