Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: creiko en 12 Septiembre 2016, 04:43 AM

Título: abrir varios formularios desde un solo formulario
Publicado por: creiko en 12 Septiembre 2016, 04:43 AM
buenas noches una pregunta



tengo que hacer este  programa que tenga 5 formularios:

1. Se debe Generar el Numero aleatorio del 1 al 25 en cada uno de los tres tableros

2. Se debe Llenar todo el Tablero para ganar

3. Debe haber la opción de manual y automático.

4. En cada tablero se debe llevar las cuentas de buenas y malas.

5 Realizar los 4 formularios pequeños de tal manera que se deben poder ver los 4 a la vez
Formulario 1

6. Desde este formulario se juega se debe poder jugar automático o manual.

tengo lo que me piden en un solo formulario.  los 15 números aleatorios y sin repetirse, el generador de la letra y el numero, el contador de buenas y malas , la parte de forma manual y automático

he visto una orden que es
Dim frm As New Form2()
frm.Show()

me abre los 5 cartones pero no logro. que se me generen los 15 números diferentes en cada cartón y el contador de buenas y malas en cada unos de ellos. y cuando uno de estos se llene me diga ganaste con el cartón ejemplo (cartón numero 2)

si alguien me brinda una ayuda los agradecería
Título: Re: abrir varios formularios desde un solo formulario
Publicado por: okik en 12 Septiembre 2016, 13:59 PM
hombre compañero no querrás que te hagamos el programa entero.
Deberías añadir algo de código y digas donde te da el problema o falla.

¿Cómo generas los números aleatorios? dices que no te los crea, ¿Cómo lo haces? ¿Has usado RANDOM?

Esto generaría un número aleatorio de 1 al 15
Código (vb) [Seleccionar]
Private Sub Form_Load()
Dim N As Integer
Randomize
Me.Show
N = Int((Rnd * 15) + 1)
Print N
End Sub



Funcionamiento del RANDOM

Int(Rnd * (Límite_superior - límite_inferior + 1)  + límite_inferior)


Ejemplos:
==========================================
Si quieres números del 2 a 5:
Límite superior = 5
Límite inferior = 2

Queda:
N = Int(Rnd * (5 - 2 + 1) + 2)


Resolviendo queda:
N = Int((Rnd * 4) + 2)


==========================================
Si quieres números del 1 al 15:
Límite superior = 15
Límite inferior = 1

Queda:
N = Int(Rnd * (15 - 1 + 1) + 1)

Resolviendo queda:
N = Int((Rnd * 15) + 1)


Para evitar que se repitan:


Esto lo metes en un MÓDULO

Código (vb) [Seleccionar]

Option Explicit
Dim Contador As Integer
Const LimSuperior = 200
Dim lstNumAzar(1 To LimSuperior) As Integer
Public Function NumeroAleatorio(ByVal SizeBucle As Integer) As Integer
'On Error GoTo EvitarError
Dim i As Integer
Dim strNumAzar As Integer
Dim Repetido As Boolean


'reiniciar bucle
If Contador = SizeBucle Then
Contador = 0
strNumAzar = 0
NumeroAleatorio = 0
For i = 1 To LimSuperior
lstNumAzar(i) = 0
Next i
End If
'.................................................

Do
If Contador = SizeBucle Then Exit Do
Randomize
Repetido = False
   strNumAzar = Int(Int(SizeBucle) * Rnd) + 1
For i = 1 To SizeBucle
       If lstNumAzar(i) = strNumAzar Then Repetido = True
    Next i
If Repetido = False Then
Contador = Contador + 1
lstNumAzar(Contador) = strNumAzar
NumeroAleatorio = strNumAzar
Repetido = False
End If
DoEvents
Loop While Repetido = True
End Function



Desde de un FORM lo llamas así (como ejemplo):
Código (vb) [Seleccionar]

Dim I as integer
Text1.Text = ""
For I = 1 To 15
Text1.Text = Text1.Text & NumeroAleatorio(15) & vbCrLf
Next I


Cada vez que se llama a NumeroAleatorio devuelve un número del 1 al 15 distinto. Una vez se obtienen todos si se vuelve a llamar vuelve a empezar



Nota:
la variable SizeBucle antes lo llamé TamañoBucle, pero como el GesSHI de el hacker no acepta la Ñ lo he cambiado a SizeBucle.

El máximo permitido por la función es 200. pero se puede cambiar a otro valor cambiando la constante LimSuperior.





Otro ejemplo de uso:

Código (vb) [Seleccionar]

Option Explicit
Dim CuentaClicks As Integer
Private Sub Command2_Click()

If CuentaClicks <= 15 Then
   Text1.Text = ""
   CuentaClicks = CuentaClicks + 1
   Text1.Text = NumeroAleatorio(15)
   
   If CuentaClicks = 15 Then
      MsgBox ("ganaste con el cartón ejemplo cartón numero 1")
      CuentaClicks = 0
   End If
End If

End Sub


Creas un contador para saber cuando se han generado todo los números.

Suerte con el Bingo
Título: Re: abrir varios formularios desde un solo formulario
Publicado por: creiko en 12 Septiembre 2016, 15:59 PM
tengo todo lo que me piden en un solo cartón;  los 15 numero aleatorios, contador de buenas y malas, y el juego se para cuando lleno el cartón y no logro pasar todo eso a los demás cartones.

he visto esta orden que es e pasar de un formulario a otro
Dim frm As New Form2()
frm.Show()

la ayuda es como hago para que toda esa información se pase a los 4 cartones restantes, y  se me generen los 15 números diferentes en cada cartón y el contador de buenas y malas en cada unos de ellos. y cuando uno de estos se llene me diga ganaste con el cartón ejemplo (cartón numero 2)


Título: Re: abrir varios formularios desde un solo formulario
Publicado por: okik en 12 Septiembre 2016, 16:56 PM


osea que la ayuda es que yo o cualquiera haga todo esto:
Cita de: creiko en 12 Septiembre 2016, 15:59 PM
tengo todo lo que me piden en un solo cartón;  los 15 numero aleatorios, contador de buenas y malas, y el juego se para cuando lleno el cartón y no logro pasar todo eso a los demás cartones.

Que por cierto no somos adivinos y no sabemos como as implementado todo eso. Cada cual lo puede hacer de una manera distinta. Y luego que hagamos lo demás, o sea todo.

En resumen que te hagamos el programa.  :¬¬

de nada