tres en raya sencillito en vb

Iniciado por Daklon, 29 Octubre 2010, 18:50 PM

0 Miembros y 1 Visitante están viendo este tema.

Daklon

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

el codigo:
Código (vb) [Seleccionar]
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

raul338

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 :)

Daklon

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

BlackZeroX

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:
Código (Vb) [Seleccionar]


if Label3.Caption = "" then



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

Código (Vb) [Seleccionar]


If VaribaleBoolean then



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

Código (Vb) [Seleccionar]


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:

Código (Vb) [Seleccionar]


dim lng_i&
    for lng_i& = command.lbound to command.ubound
        Command(lng_index&).Caption = "X"
    next i



Dulces Lunas!¡.
The Dark Shadow is my passion.

raul338

#4
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

Código (vbnet) [Seleccionar]

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

BlackZeroX

.
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!¡.
The Dark Shadow is my passion.

Daklon

#6
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:
Código (Vb) [Seleccionar]


if Label3.Caption = "" then



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

Código (Vb) [Seleccionar]


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?

Psyke1

#7
Si no pones nada en una variable Boolean cuenta como True, mira:
Código (vb) [Seleccionar]
If A = True Then
Es lo mismo que :
Código (vb) [Seleccionar]
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

Daklon

pero entonces como digo que a es verdadero cuando label1.caption & label2.caption & label3.caption son iguales a "x"?
Código (vb) [Seleccionar]
a = Label1.Caption & Label2.Caption & Label3.Caption = "XXX"

BlackZeroX

asi

Código (Vb) [Seleccionar]


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...

Código (Vb) [Seleccionar]


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

The Dark Shadow is my passion.